使用延长的会话?

时间:2012-01-23 14:06:08

标签: php session session-cookies

我正在设置一个脚本,我的本地酒吧将使用该脚本向用户显示图像,菜单等的幻灯片。我的URL将接受一个密钥(uuid),我的脚本将从中查询数据库中的相关内容使用基于company_id的密钥。然后该网站将通过javascript或jquery旋转图像。

在提供内容之前,我想确保会话或用户经过身份验证,这意味着有一个有效的company_id关联。

我一直使用$_SESSION变量进行网络会话。由于没有真正需要超时的会话,我可以在php.ini中设置任何标志永不超时吗?或者使用cookies进行此类工作会更有益吗?

感谢。

2 个答案:

答案 0 :(得分:1)

最好使用cookie为具有远程过期日期的用户存储登录令牌,因此他们会自动登录。无限期保留$_SESSION会导致会话文件堆积在您的服务器上浪费文件系统上的资源。相反,cookie可以包含与数据库中的用户关联的一些令牌(不可猜测的值)。当用户返回时,可以从数据库中检索基本信息。

答案 1 :(得分:1)

当您致电session_start()时,脚本会尝试在包含会话ID的用户浏览器中设置一个cookie,因此无需手动设置一个包含“不可猜测值”的cookie,因为这就是会话id应该是无论如何。

您可以更改ini文件中的session.cookie-lifetime(甚至可以更改ini_set()),以防止Cookie在会话结束时超时。

保留$_SESSION 会导致会话文件无限期堆积。通过保持会话处于活动状态,相同的文件将被重复使用(因为它以会话ID命名),并且会话垃圾收集器中构建的PHP无论如何都将清除死会话。

虽然总的来说让会话永远持续是个坏主意,因为它是你当地的酒吧,我怀疑任何人都会试图劫持他们的会话。 (即使他们这样做了,他们所得到的只是周日午餐,对吧?):))

修改 您还可以定期重新生成会话ID,以增加更多安全性。