我使用以下代码检查用户名是否存在,但此脚本忽略大写字母。
所以 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,我很快就会解决它。
答案 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;");