2011-08-19 123 views
1

我有一个php应用程序,如果会话超时,它会重定向到登录页面。 我想登录页面将用户重新定向到他以前的位置。 理想情况下,用户甚至可以恢复他的完整请求。 我想登录表单内编码整个请求一样的:php - 登录后的前一页重定向(安全)

<input name="previous_request" 
    value="<?php base64_encode(gzcompress(serialize($_REQUEST))) ?>" /> 

但不知道它是非常安全的,或者建议吧。 我想知道什么是最佳做法。 串行化“relogging”的整个请求是一种常见做法吗?

回答

1

我会这样做 当用户被重定向到reloging时,正如你所说的,serialize $ _REQUEST会将它写入数据库,页面将发送它的md5。所以我认为它会更安全

+0

谢谢,这似乎是一个很好的解决方案。但最后我只保留以前的网址。这个问题更多的是关于你的方法的实用性“实践” –

+0

@pierreDeLEspinay,我真的没有看到保存整个请求的问题。毕竟,您希望尽可能为用户创建无缝记录。除非你有如此严重的安全问题(如网上银行),根本不应该保存任何州。 –

0

就我个人而言,我不会使用$ _REQUEST,详见here

取而代之,只需启动session,当用户超时并重新登录时,请将其发送回存储在session中的页面。

您可以将该存储到会话:

"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 

或者,如果使用的是https,你可以检查$_SERVER['PORT']是443,并应用到你的代码。

+0

你的意思是将前一个url存储在会话变量中? –

+0

@好吧,是的,当用户导航到另一个网页时,会话将被更新。当超时发生时,会话将不会被明显更新,并且在成功登录后,您将通过读取会话信息将他重定向到页面。 – Devator