如何使用PHP在MySQL数据库中停止将用户名字段插入为空?

时间:2011-08-02 07:05:52

标签: php mysql

我为一个网站开发了一个注册表。它工作正常,但我忘了保留用户名文本字段的验证。

不幸的是,如果用户在空数据库中注册它在数据库中的插入。在这方面有人可以帮助我。我在下面附上我的代码。

// 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>';
  }

3 个答案:

答案 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)

假设你想在用户名中允许空格(只是不在名称的开头或结尾),使用trim()或者使用strpos检查空格,或者只是制作一个检查完整的空格字符串,

答案 2 :(得分:0)

还要确保在每个错误上恢复用户的发布数据,以防止用户必须再次输入所有内容。