不知道为什么,但是当我点击注册表单上的提交时,它不会将数据插入数据库,它通过重定向到注册成功页面来执行底部的最后一个 else 语句,这让我感到困惑。我可以正常工作,但我做了一些事情,但我不知道出了什么问题。
<?php
if(isset($_POST['submit'])) {
$username = $_POST['username'];
$password = md5($_POST['password']);
$email = $_POST['email'];
$Fname = $_POST['Fname'];
$Lname = $_POST['Lname'];
$Display1 = $_POST['Display1'];
$Display2 = $_POST['Display2'];
$query = mysql_query("SELECT * FROM users WHERE username ='$username'");
if(empty($username) or empty($password) or empty($email) or empty($Fname) or empty($Lname) or empty($Display1)) {
echo '<p>Fields Empty!</p>';
} else if(mysql_num_rows($query) > 0){
$query = mysql_query("SELECT * FROM users WHERE username ='$username' AND password ='$password'");
echo'<p>Username or Password Already Exists!</p>';
} else {
mysql_query("INSERT INTO users VALUES('', '$username', '$password', '2', 'a', '$Fname', '$Lname', '$email', '$Display1', '$Display2')");
$subject = "Membership Confirmation";
$message = "Hello, You have registered an account on Joepepjoepep.com";
$from = "From: [email protected] /cdn-cgi/l/email-protection";
header("location:signuppayment.php");
mail($email, $subject, $message, $from);
}
}
?>
创建一个唯一键 https://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.html表定义中的用户名字段。
那么用户名只能在表中出现一次,并且具有相同用户名的第二个插入查询将失败并显示具体错误代码 https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html#error_er_dup_key。 (并且你避免了竞争条件 https://en.wikipedia.org/wiki/Race_condition因为您多次询问)
您可以检查该错误代码,然后显示“用户名已在使用中”错误消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)