在SESSION应该保存什么东西,什么不应该?

use*_*008 4 php session

我举一个例子,为什么这个问题出现在我脑海中:让我说我创建了扩展PDO类的类'PDOstart'.在类'PDOstart'上,PDO所需的所有变量都在私有部分(如主机,用户,密码和ect)上定义.所以它很容易使用PDO类:

$con = new PDOstart();
$con->query("SELECT ... ");
Run Code Online (Sandbox Code Playgroud)

因为在我的网页上我只使用一个数据库,所以我开始考虑为什么不将PDOstart对象添加到SESSION中?喜欢:$_SESSION['db'] = $con;?所以我不需要在每个页面都做"新的PODstart".但我不确定那会是个好主意......

有什么我应该避免添加到$ _SESSION(出于安全或性能原因)?

Rob*_*itt 7

用户ID,以便每次页面加载时您都知道浏览的用途,元数据,例如页面更改(Bot Detect),本地信息,用户模板选择的时间跨度.这个会议真正需要的任何东西.

如你所说,$con让我解释一下.

php中有几种变量类型,主要有:

  • 字符串
  • 布尔的
  • 整的
  • 对象
  • 阵列
  • 资源

现在你可以将所有这些存储到除资源之外的会话中,因为存在诸如文件句柄之类的东西,与外部实体的连接仅在PHP处理页面时打开,然后关闭.

其他都没问题,因为存储在内存中并且是静态的,除非您以编程方式更改它们,否则它们不会更改.

您应该在会话中存储的主要内容是

  • GUID:这样您就可以跟踪用户的登录信息.
  • Flash数据:因此,如果您进行重定向,您将能够在另一页上显示错误消息.
  • 浏览器数据,以便您可以比较当前浏览的浏览器与上一个浏览器相同,这样您就可以终止安全会话.

诸如用户行之类的数据库数据之类的东西不应存储在会话中,您应该创建一个单独的缓存机制来为您执行此操作.