阻止刷新按钮存储旧数据

时间:2013-09-02 04:41:43

标签: php mysql

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

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

3 个答案:

答案 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';
}