繁体   English   中英

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

[英]In CodeIgniter, how to clear “form data” after redirecting page

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

Login控制器:

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

Lobby控制器:

function index() {
    //load lobby view
}

发生的是,在登录页面中,我输入用户/密码,单击登录,然后调用authenticate() ,并将我重定向到Lobby

但是,当我在“大厅”上单击“刷新”时,再次提交了登录表单,因此我再次“登录”。 如何防止这种情况发生?

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

您有两种选择可以解决或避免这种情况。 首先想到的是在authenticate方法中进行检查,以查看用户是否已经登录。如果已经登录,则继续并重定向到大厅。 否则,请照常检查用户的登录信息。

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

您应该使用控制器在构造中验证用户是否登录,以这种方式,您可以基于会话变量进行重定向或不进行重定向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM