使用长时间会话



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

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

我一直在网络会话中使用$_SESSION变量。既然没有真正需要超时会话,那么我可以在php.ini中设置一些永远不会超时的标志吗?还是在这类工作中使用cookie更有益?

谢谢。

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

当您调用session_start()时,脚本将尝试在用户浏览器中设置一个包含会话id的cookie,不需要手动设置一个具有"不可猜测值"的cookie,因为会话id应该是这样的。

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

保留$_SESSION不会导致会话文件无限期堆积。通过保持会话有效,同一个文件将被反复使用(因为它是以会话id命名的),并且会话垃圾收集器中内置的PHPs无论如何都会清除死会话。

虽然总的来说,让会议永远持续下去是个坏主意,但因为这是你当地的酒吧,我怀疑有人会试图劫持他们的会议。(即使他们这样做了,他们也只能得到周日午餐的食物,对吧?)

编辑:您还可以定期重新生成会话id,以增加一点安全性。

最新更新