首页 > CMS > Wordpress > 正文

wordpress支持中文用户名注册的2种实现方法

2024-09-07 00:51:28
字体:大 中 小
来源:转载
供稿:网友

wordpress是不支持中文名字注册的如果你要增加中文注册是需要在注册判断或登录处进行二次开发了,具体如下.

之前写了一篇,代码如下:

  1. function ludou_non_strict_login( $username, $raw_username, $strict ) { 
  2.     if( !$strict ) 
  3.         return $username; 
  4.     return sanitize_user(stripslashes($raw_username), false); 
  5. } 
  6. add_filter('sanitize_user', 'ludou_non_strict_login', 10, 3); 

现在回过头看了一下,这篇教程对用户名的过滤太少,容易出现安全问题,今天介绍新的方法,借鉴了wp-includes/formatting.php中sanitize_user函数的写法,同样是将以下php代码复制到当前主题目录下的functions.php中,即可让WordPress支持使用中文用户名注册和登录,代码如下:

  1. function ludou_sanitize_user ($username, $raw_username, $strict) { 
  2.   $username = wp_strip_all_tags( $raw_username ); 
  3.   $username = remove_accents( $username ); 
  4.   // Kill octets 
  5.   $username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username ); 
  6.   $username = preg_replace( '/&.+?;/', '', $username ); // Kill entities 
  7.   // 网上很多教程都是直接将$strict赋值false, 
  8.   // 这样会绕过字符串检查,留下隐患 
  9.   if ($strict) { 
  10.     $username = preg_replace ('|[^a-z\p{Han}0-9 _.\-@]|iu', '', $username);//开源软件:Vevb.com 
  11.   } 
  12.   $username = trim( $username ); 
  13.   // Consolidate contiguous whitespace 
  14.   $username = preg_replace( '|\s+|', ' ', $username ); 
  15.   return $username; 
  16. } 
  17. add_filter ('sanitize_user', 'ludou_sanitize_user', 10, 3); 

增加到function.php文件中之后你就可以在wordpress注册中加中文名字了.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表