在CodeIgniter中,如何在重定向页面后清除“表单数据”

时间:2010-06-03 15:00:21

标签: php codeigniter redirect

我不确定我是否在问题标题中正确解释了,所以这里有详细信息:

Login控制器:

function authenticate() {
    if ( authorized ) {
        redirect('lobby');
    } else {
        redirect('login');
    }
}

Lobby控制器:

function index() {
    //load lobby view
}

在登录页面中,我输入user / pass,单击Login,然后调用authenticate(),并将我重定向到Lobby

但是,当我在大厅点击刷新时,登录表单会再次提交,所以我再次“登录”。我该如何防止这种情况发生?

2 个答案:

答案 0 :(得分:3)

您所看到的是浏览器中与CodeIgniter无关的行为本身。 Web浏览器存储登录表单的POST数据,并在用户点击提交按钮时导航到表单的操作。服务器的响应是重定向。因此,当用户点击刷新按钮时,浏览器会刷新表单操作,而不是服务器的重定向响应。

你有两个选择可以解决或避免这种情况。首先想到的是检查身份验证方法以查看用户是否已登录。如果是,则继续并重定向到Lobby。否则,请正常检查用户的登录信息。

您也可以只更改登录表单的操作,直接进入大厅,并使用Lobby的索引方法进行身份验证。如果用户未登录,请将其从那里重定向回登录表单。

答案 1 :(得分:0)

您应该使用控制器在构造中验证用户是否已记录,这样,您可以根据会话变量重定向或不重定向。

相关问题