php登录界面代码php中插入以下PHP代码只支持上传图片文件如何实现php注册登录代码
2022-01-27
最近在开发会员中心,总觉得有一些安全问题。构建到前台的会员制也需要注意很多事情。有些漏洞可能暂时不会被注意到。这里有一些注意事项。
阻止用户上传某些类型的文件
将以下 PHP 代码插入主题的 .php
add_filter('upload_mimes', 'custom_upload_mimes');function custom_upload_mimes( $existing_mimes=array() ) {// 注意中括号中的名称,必须取自上面支持列表中中括号的名称unset( $existing_mimes['exe'] ); //此处禁止了上传exe后缀名的可运行文件unset( $existing_mimes['jpg|jpeg|jpe'] ); //此处禁止了上传jpg、jpeg和jpe后缀名的压缩文件unset( $existing_mimes['gif'] ); //此处禁止了上传gif后缀名的图片文件unset( $existing_mimes['png'] ); //此处禁止了上传png后缀名的图片文件return $existing_mimes;}
只支持上传图片
如何只允许上传图片文件,拒绝上传其他文件。实现方法很简单,我们可以在当前主题的.php中插入如下PHP代码:
// Add the filteradd_filter('upload_mimes', 'custom_upload_mimes');function custom_upload_mimes( $existing_mimes=array() ) {$existing_mimes = array('jpg|jpeg|jpe' => 'image/jpeg','gif' => 'image/gif','png' => 'image/png','bmp' => 'image/bmp','tif|tiff' => 'image/tiff','ico' => 'image/x-icon');return $existing_mimes;}
默认角色用户无法进入后台
如果不想让默认角色的用户进入后台,可以在当前主题的.php中添加如下代码,然后使用默认角色的用户账号登录
if ( is_admin() && ( !defined( 'DOING_AJAX' ) || !DOING_AJAX ) ) {$current_user = wp_get_current_user();if($current_user->roles[0] == get_option('default_role')) {wp_safe_redirect( home_url() );exit();}}
登录支持
// 修改WordPress用户名过滤机制,通过 Email 获取用户名function ludou_allow_email_login($username, $raw_username, $strict) {if (filter_var($raw_username, FILTER_VALIDATE_EMAIL)) {$user_data = get_user_by('email', $raw_username);if (empty($user_data))wp_die(__('ERROR: There is no user registered with that email address.'), '用户名不正确');elsereturn $user_data->user_login;}else {return $username;}}// 修改登录界面的文字,"用户名"改成"用户名或邮箱"function ludou_change_text() {echo '';}if (in_array($GLOBALS['pagenow'], array('wp-login.php')) &&strpos($_SERVER['REQUEST_URI'], '?action=register') === FALSE &&strpos($_SERVER['REQUEST_URI'], '?action=lostpassword') === FALSE &&strpos($_SERVER['REQUEST_URI'], '?action=rp') === FALSE ) {add_filter('sanitize_user', 'ludou_allow_email_login', 10, 3);add_action('login_footer', 'ludou_change_text');}
支持中文用户名
将以下PHP代码复制到当前主题目录下的.php中,支持中文用户名注册登录:
function ludou_non_strict_login( $username, $raw_username, $strict ) {if( !$strict )return $username;return sanitize_user(stripslashes($raw_username), false);}add_filter('sanitize_user', 'ludou_non_strict_login', 10, 3);
注册成功后自动登录
让用户注册成功后自动登录,跳转到指定页面,省去了用户手动登录的步骤,提升了用户体验。实现起来很简单,我们可以在当前主题的.php中加入如下PHP代码:
// 用户注册成功后自动登录,并跳转到指定页面function auto_login_new_user( $user_id ) {wp_set_current_user($user_id);wp_set_auth_cookie($user_id);// 这里设置的是跳转到首页,要换成其他页面// 可以将home_url()改成你指定的URL// 如 wp_redirect( 'http://www.newsky365.com' );wp_redirect( home_url() );exit;}add_action( 'user_register', 'auto_login_new_user' );
退出后跳转到指定页面
这个问题也很容易解决,只需在当前主题的.php中放入如下PHP代码即可:
add_filter('logout_url', 'ludou_logout_redirect', 10, 2);function ludou_logout_redirect($logouturl, $redir) {$redir = 'https://www.wenjiangs.com/'; // 这里改成你要跳转的网址return $logouturl . '&redirect_to=' . urlencode($redir);}
这样网站开发,点击后台页面右上角的退出后,即可跳转到指定页面。如果要在前台添加注销链接,点击注销并跳转到指定站点页面,可以使用如下代码,代码中的URL改成你的:
Logout
如果要跳转到首页,可以使用如下代码:
Logout
如果要跳转到退出前所在的页面,可以使用以下代码:
Logout
最后一个也是一个很不错的功能
发布新文章通知用户
很多博客都开通了用户注册功能,用户可以参与博客的内容建设,即一个博客由多个用户共同撰写。现在有这样一个需求php登录界面代码小程序开发,如何实现一个用户发表文章后,其他用户可以收到通知php登录界面代码,下面是实现方法:
在当前主题目录下的 .php 中,添加如下 PHP 代码:
function newPostNotify($post_ID) {if( wp_is_post_revision($post_ID) ) return;global $wpdb;$get_post_info = get_post($post_ID);if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {// 读数据库,获取所有用户的email$wp_user_email = $wpdb->get_col("SELECT DISTINCT user_email FROM $wpdb->users");// 邮件标题$subject = 'xx博客有新文章';// 邮件内容$message = '文章标题:' . get_the_title($post_ID) . '
';$message .= '文章网址:' . get_permalink($post_ID) . '
';// 发邮件$message_headers = "Content-Type: text/html; charset=\"utf-8\"\n";wp_mail($wp_user_email, $subject, $message, $message_headers);}}// 钩子一旦 WordPress 有新文章发布或文章被修改即刻执行newPostNotify函数add_action('publish_post', 'newPostNotify');
有骚扰嫌疑,毕竟不是每个注册用户都想收到类似的邮件。