我是一个超级菜鸟,你如何添加验证,以便你不能注册与另一个人相同的用户名?
$mysql_where = "hidden";
$mysql_username = "hidden";
$mysql_password = "hidden";
$mysql_database = "hidden";
mysql_connect($mysql_where, $mysql_username, $mysql_password);
mysql_select_db($mysql_database);
$username = mysql_real_escape_string($_POST['username']);
$password = md5($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$status= 1;
mysql_query("INSERT INTO `users` (`id`,`username`, `password`, `email`,`status`)
VALUES('','$username','$password','$email','$status')");
mysql_close();
?>
Thank You For Registering, Please <a href=login.php>Login Here</a>
答案 0 :(得分:0)
您检查用户名未被其他人使用的方式与现实生活中的方式相同 - 您通过记录来查看是否已存在。
所以j08691评论的第二部分有效。请注意,如建议的那样使用户名字段唯一将独立于您的代码强制执行此规则,因为不允许在表中包含两个相同的名称,但如果您希望将被驱逐的用户与活动用户保持在同一个表中,则可能不希望这样做。 (我注意到你有一个状态字段。)
你还需要对用户名进行一些字符串操作 - 目前你甚至没有修剪它来删除任何空白!这意味着你可能会有单独的“Fred”和“Fred”用户,这会令人困惑。
就个人而言,我喜欢username_unique的单独字段。我复制请求的用户名并对其进行大量处理 - 删除所有空格,将其缩小并替换重音字符等。与slu or或子域名大致相同。实际上,如果您打算允许用户拥有子域,您将需要这种独特性。
因此,在保存用户之前,我会对username_unique进行SELECT
查询,以查看是否有超过0个现有结果。潜在地,您可以将其与状态相结合,以便被驱逐用户的用户名可以再次可用。如果已经匹配,我会回到用户并告诉他们。 (这与任何表单验证几乎相同,所以我不会在这里详述)。
你可以做的,更好的是,考虑尝试使用现有用户名注册的人实际上可能已经拥有他们忘记的用户帐户的可能性。因此,您可以比较电子邮件地址 - 如果匹配则说'看起来您已经注册了!登录/忘记密码'等。