查询运行的次数与刷新次数一样多

时间:2012-09-17 14:20:56

标签: php

如果可能的话,我需要帮助重装东西。我的意思是我有这个查询,它在一个页面中提交,有这个配置文件注册,用户输入他的姓名,然后他继续在下一页输入更具体的细节。如果用户重新加载页面,即4次,那就是用户信息插入数据库的次数。

是否有任何重载功能来阻止提交查询? 我没有尝试任何东西,如果你会问我,因为我不知道如何开始。我唯一的线索是关于使用ajax,但是有没有php方法来做到这一点?

由于

2 个答案:

答案 0 :(得分:5)

成功发布POST后,您应该遵循POST-Redirect-GET pattern并始终重定向:

如果没有看到您的代码,您将需要这样的重定向:

if($inserted){
    header('Location: mypage.php?msg=reg_success');
    exit;
}

然后,在mypage.php上,您可以这样:

if(isset($_GET['msg'])){

    switch($_GET['msg']){

        case 'reg_success':
            echo 'Registration successful!';
        break;

    }

}

或者,您可以为成功消息创建一个数组:

$success_messages = array(
    'reg_success' => 'Registration successful!',
    'logout_success' => 'Logged out!'
);

然后在mypage.php上:

if(isset($_GET['msg']) && array_key_exists($_GET['msg'], $success_messages)){
    $msg_index = $_GET['msg'];
    echo $success_messages[$msg_index];
}

答案 1 :(得分:0)

您应该在会话中记录所有注册数据,并在用户单击“完成”按钮后写入一次。

然后重定向他并清除相关会话数据。

通过这种方式,您可以拥有任意数量的舞台页面,并且不会有任何重复。