我为一个网站开发了一个注册表。它工作正常,但我忘了保留用户名文本字段的验证。
不幸的是,如果用户在空数据库中注册它在数据库中的插入。在这方面有人可以帮助我。我在下面附上我的代码。
// Check chareacter lenght of the username
if (strlen($_POST['username']) < 6 || strlen($_POST['username']) > 20){
$_SESSION['error_msg'] = ERROR_1_TITLE;
echo '<script type="text/javascript">window.location="/register/"</script>';
}
答案 0 :(得分:1)
如果我输入unicode不间断空格或半空格符号怎么办?如果我在用户名中间连续输入三个空格怎么办?如果我提交的用户名设置为CRLF的POST请求怎么办?
通常,您必须对输入的用户名进行完整验证。不仅要检查长度,还要检查它所包含的字符。
更好的代码:
$username = trim($_POST['username']); // cut spaces around
if(!preg_match('/ {2,}/', $username) // check for more than one space in the middle
{
// Show some error message...
}
else if(!preg_match('/^[a-z0-9_ ]+$/', $username)) // check for valid characters
{
// Show some error message...
}
else if(strlen($username) < 4 || strlen($username) > 20)
{
// Show some error message...
}
else
{
// Username is good.
}
还要了解“正则表达式”。他们是真正的救星。 This web-site是一个很好的信息来源。
进行重定向的正确方法是&lt;?php header('Location:http:// ...'); ?&GT;可以在浏览器中关闭JavaScript。
答案 1 :(得分:0)
答案 2 :(得分:0)
还要确保在每个错误上恢复用户的发布数据,以防止用户必须再次输入所有内容。