php - SESSION中应该保存什么,不应该保存什么?

标签 php session

我举一个例子为什么这个问题会出现在我的脑海中: 假设我创建了扩展 PDO 类的类“PDOstart”。在“PDOstart”类上,PDO 所需的所有变量都在私有(private)部分(如主机、用户、密码等)上定义。所以使用 PDO 类非常容易,例如:

$con = new PDOstart();
$con->query("SELECT ... ");

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

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

最佳答案

用户 ID,以便每次加载页面时您都知道浏览的用途、元数据,例如页面更改的时间跨度(机器人检测)、本地信息、用户模板选择。该 session 真正需要的任何东西。

正如你所说的 $con 让我解释一下。

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

  • 字符串
  • bool 值
  • 整数
  • 对象
  • 数组
  • 资源

现在,除了资源之外,您可以将所有这些存储到 session 中,因为文件句柄、与外部实体的连接等内容仅在 PHP 处理页面时打开,然后关闭。

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

你应该在 session 中存储的主要实体是

  • GUID:以便您可以跟踪登录的用户。
  • Flash 数据:因此,如果您进行重定向,您将能够在其他页面上显示错误消息。
  • 浏览器数据,这样你就可以比较当前正在浏览的浏览器是否与上次相同,这样你就可以为了安全而终止 session 。

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

关于php - SESSION中应该保存什么,不应该保存什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656812/

相关文章:

java - Seam & 多个 war : Contexts. getSessionContext() 在其他 war 中为 null

javascript - 将 PHP session 变量发送到另一个文件的 javascript

perl - 正确使用CGI::Session、Perl

php - 使用 PHP 将 CSV 文件上传到数据库时出错

PHP 文件从 html 表单 [AJAX] 接收空白值

php - 如何从数据库获取数据并将其存储在 PHP session 中

bash - tmux - 附加到 session 并指定窗口

php - 在javascript中发送两个参数/数据

php - 一条语句中的多个 MySQL SELECT

php - 如何使用 php-url 路径在 Magento CMS 页面中加载图像背景?