在PHP中传递会话数据


Passing around session data in PHP

我有一个$_SESSION var,它在用户登录时存储简单、易于调用的标识信息。即使用户没有登录,它也会记录上次访问的文件(如果用户登录,则快速返回该页面)。

用户登录

$_SESSION[$userid,$username,$first_name,$lastPage];

用户未登录

$_SESSION[$lastPage];

我主要关心的是安全性和未来程序员的易理解性。

那么,这些选项中的任何一个是可行的,还是我错过了一个对程序员来说更安全、更容易理解的选项?

  1. 使用$_SESSION变量,并在类中访问它
  2. 使用sessionWrapper类来模拟$_SESSION中的值
  3. 只保留一个唯一标识符,也许在$_SESSION变量中保留lastPage。如果给定了这个唯一标识符,则创建一个sessionWrapper类,从数据库中提取相关信息

我是不是遗漏了什么?在写这篇文章的时候,我更倾向于选择3,但非常感谢这里对最佳实践的任何反馈。

您有没有想过使用cookie来获取last_page信息?我假设您不必将所有内容都保存在$_SESSION中。好的,现在是肉丸。如果安全是一个问题,那么$_SESSION是可以的,但不是最好的。问题可以归结为:

  • 你需要多少安保
  • 对于下一代维护人员,您愿意将事情复杂化多少

高安全性:默认情况下,PHP会话保存到服务器上可访问的文件中,您可以通过在应用程序中使用一个封装良好的数据库来缓解这种情况。只要它是一个非常简单的封装类,那么你就可以开始了。您的选项3是一个很好的解决方案。

低安全性:如果您不愿意为您的个人$_SESSION实现放下KLOC,我认为您可以像现在这样保持相关信息的安全,并为不太重要的信息选择cookie:last_page是与用户相关但无法识别的东西,所以请将它们分开。

  • 小型项目的选项1
  • 选项2用于大型项目(我将此方法与一些方便且SIMPLE的包装类一起使用)

从我的角度来看,你没有错过任何东西,你只需要做出决定并坚持下去