我正在尝试创建一个注册页面,我在存储数据时遇到了问题 当我成功注册时,它会存储到数据库中 但是当我再次重新加载它时,它会自动将我输入的相同旧数据存储到数据库中 如何解决这个问题?
我的简单PHP代码看起来像这样
if (empty($fname)) {
echo '';
} else {
$success = ("
INSERT INTO customer
(FName, LName, Email, Password, MobileNum, PostalCode)
VALUES
('$fname','$lname', '$email', '$password', '$mobilenumber','$postalcode')
");
mysql_query($success);
echo 'success';
}
?>
答案 0 :(得分:4)
假设您在“存储”数据时使用HTTP POST请求,确保重新加载页面的最简单方法是不对相同数据执行重新POST操作,而是在你脚本的结尾。
而不是echo 'success'
做Header("Location: ?")
这样,浏览器在POST后立即执行GET。如果用户刷新生成的页面,他们只需重新请求GET。 (如果正在进行缓存,则根本不执行任何操作)。
答案 1 :(得分:0)
您可以在插入之前检入数据库...
if(empty($fname)){
echo '';
}else{
$sql = "SELECT * FROM customer WHERE FName='$fname'";
$result = mysql_query($sql);
$numRows = mysql_num_rows($result);
if($numRows==0) {
$success=("INSERT INTO customer (FName, LName, Email, Password, MobileNum, PostalCode) VALUES ('$fname','$lname', '$email', '$password', '$mobilenumber','$postalcode')");
mysql_query($success);
echo 'success';
} else {
echo "Already exists";
}
}
答案 2 :(得分:0)
成功后你可以unset $ _POST,如果有任何带有echo或html的输出,你可以使用header重定向到另一个页面
if (empty($fname)) {
// echo '';
} else {
$success = ("INSERT INTO customer (FName, LName, Email, Password, MobileNum, PostalCode) VALUES ('$fname','$lname', '$email', '$password', '$mobilenumber','$postalcode')");
mysql_query($success);
unset($_POST);
header('Location: http://www.example.com/successPage.php')
/** if you don't able to use header, you may echo a javascrript redirect
echo '<script>window.location.href = "http://www.example.com/successPage.php"';</script>";
*/
// echo 'success';
}