2

我正在尝试创建一个注册页面,但在存储数据时遇到了问题。
当我成功注册时,它会存储到数据库中。
但是当我再次重新加载它时,它会自动存储我输入到数据库的相同的旧数据。
如何解决这个问题呢?

我的简单 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';
}
?>
4

3 回答 3

4

假设您在“存储”数据时使用的是 HTTP POST 请求,确保重新加载页面不会重新发布相同数据的最简单方法是在末尾进行重定向你的脚本。

而不是echo 'success'Header("Location: ?")

这样,浏览器在 POST 之后立即执行 GET。如果用户刷新结果页面,他们只需重新请求 GET。(或者如果正在使用缓存,则什么也不做)。

于 2013-09-02T04:44:44.457 回答
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";  
    }
}
于 2013-09-02T04:54:33.683 回答
0

成功后您可以取消设置$_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';
}
于 2013-09-02T05:00:46.227 回答