View Single Post
  #2  
Old 12th May 2018, 11:49
darkalchemy darkalchemy is offline
Administrator
 
Join Date: Dec 2017
United States
Posts: 101
Default
Quote:
Originally Posted by mclassic View Post
How to modify the registration page to support Chinese user name?
I am assuming V4.
At least 2 things need to be done.

In check.js, change:

Code:
var url = '../namecheck.php?wantusername=' + escape(wantusername);
to
Code:
var url = '../namecheck.php?wantusername=' + encodeURI(wantusername);
and in namecheck.php, change:
Code:
    $allowedchars = $lang['takesignup_allowed_chars'];
    for ($i = 0; $i < $namelength; ++$i) {
        if (strpos($allowedchars, $username[$i]) === false) return false;
    }
to
Code:
    if (!preg_match("/^[\p{L}\p{N}]+$/u", urldecode($username))) {
        return false;
    }

There are many other areas that also need changed, such as take invites, add user, change username. But, this answers your question. This also allows any valid language letter or number, not just Chinese.

If you want ONLY Chinese, then in namecheck.php, change to:

Code:
    if (!preg_match("/^[\p{Han}]+$/u", urldecode($username))) {
        return false;
    }
This last is untested.
Reply With Quote