如何检查用户名是否存在并匹配现有用户名UpperCase和Lower Cases

时间:2014-01-06 15:34:36

标签: php regex string preg-replace mysql-real-escape-string

我使用以下代码检查用户名是否存在,但此脚本忽略大写字母。

所以 JAMES James

相同

Q1

如何确保字符串与数据库中的现有字符串( UserNames )匹配, JAMES 不等于 James

Q2 :mysql_real_escape_string

我只想允许数字和字母,但我想检测这些不需要的CHARS并告诉用户不允许那些有趣的CHARS。

这是我的 PHP 代码块

$l = mysql_real_escape_string($_POST['l']);
     if ( $l == ''){
    echo 'Please Enter your desired username.';
} else {
$Result = mysql_query("SELECT * FROM users WHERE uname = '$l'") or die (mysql_error()); 
if (mysql_num_rows($Result) > 0){
     echo '<span style="color:#F00">Sorry this User-Name is already taken, please choose another User-Name</span>';
} else {
    echo '<span style="color:#090">'.$l.' is ok, Please go ahead and fill the form.</span>';
    }
}

备注: - 我知道我已弃用的​​mysql,我很快就会解决它。

2 个答案:

答案 0 :(得分:1)

Q1 - 呃?不知道你为什么要这样做,但无论如何你要去:-D

"SELECT * FROM users WHERE BINARY `uname` = '$l'"

这使您的搜索区分大小写

Q2 - 最简单的方法就是正则表达式

$newString = preg_replace("/[^a-zA-Z0-9]+/", "", $oldStringWithLoadsOfNaughtyStuff);

if($newString !== $oldStringWithLoadsOfNaughtyStuff){
    //naughty characters must be there as strings do not match.
    echo "naughty Naughty - you have enter illegal characters - only letters and numbers please";

}else{

    //all good here

}

答案 1 :(得分:0)

可以使用二进制整理:

$Result = mysql_query("SELECT * FROM users WHERE uname = '$l' COLLATE utf8_bin;");