【问题标题】:In CodeIgniter, how to clear "form data" after redirecting page在 CodeIgniter 中,如何在重定向页面后清除“表单数据”
【发布时间】:2010-06-03 15:00:20
【问题描述】:

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

Login控制器:

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

Lobby控制器:

function index() {
    //load lobby view
}

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

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

【问题讨论】:

    标签: php codeigniter redirect


    【解决方案1】:

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

    您有几个选项可以解决或避免这种情况。想到的第一个是检查 authenticate 方法以查看用户是否已经登录。如果是,则继续并重定向到 Lobby。否则,正常检查用户的登录信息。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-06-16
        • 2022-01-24
        • 2012-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多