2010-06-03 57 views
0

后,“表单数据”我不知道我的问题的标题正确地解释它,所以这里的细节:在笨,如何清除重定向

Login控制器:

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

Lobby控制器:

function index() { 
    //load lobby view 
} 

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

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

回答

3

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

你有几个选项可以解决或避免这种情况。首先想到的是在验证方法中检查用户是否已经登录。如果是,请继续并重定向到大厅。否则,请检查用户的登录信息是否正常。

您也可以将登录表单的操作直接转到大厅,然后在大厅的索引方法中进行身份验证。如果用户未登录,则将其从那里重定向回登录表单。

0

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