PHP中$ _SESSION的正确用法是什么?

时间:2011-10-18 04:32:08

标签: php

根据php website,PHP中的会话支持包含一种在后续访问中保留某些数据的方法。这使您可以构建更多自定义应用程序并增加网站的吸引力。访问您网站的访问者被分配了唯一的ID,即所谓的会话ID。这可以存储在用户端的cookie中,也可以在URL中传播。会话支持允许您注册要在请求之间保留的任意数量的变量。

利用这里的程序员的经验,我想知道$_SESSION应该存储的内容是什么 不应该 STRONG>。例如,将数据存储在会话中以避免对数据库进行重复查询是一个好主意吗?

5 个答案:

答案 0 :(得分:6)

仅存储维护状态所需的内容(ID,小部分高度使用的数据等)。

如果性能开始遭受查询滥用,数据库结果可以缓存在适当的缓存层(memcached,APC等)中。

我避免在会话中存储复杂结构,否则这些结构位于其他数据存储区域(例如DB)。保持简单。

更新

另一个流行的用途和我用过的用途是在处理之前存储临时数据。一个例子是多页/向导样式表。

答案 1 :(得分:1)

我自己是一名初学者php程序员,但我有使用会话的完美体验。

  1. 您可以使用我认为的任何数据的会话。我主要用它们将用户的输入和查询输出从一个页面转移到另一个

  2. 需要注意的一点是,当您使用会话时,请在“单向”页面路径中使用它们。我的意思是如果您使用第1页到第2页的会话传输数据,请不要从page1以外的任何页面访问page2,否则您将在第2页中没有会话输出。

  3. 希望我没有混淆你。我想帮助一点

    谢谢:)

答案 2 :(得分:1)

您确实可以通过将数据放入会话来避免数据库查询,但只是为了避免多次访问数据库。例如,像Drupal这样的系统将会话数据放入数据库中,因此用会话中的数据替换单个数据库查询可能没有任何好处。您可以将会话用作个人数据缓存,而不是太大的数据。

会话的问题在于它们是全球性的。每个用户,或者更确切地说,每个浏览器,是的,但仍然是全局的。在最简单的实现中,使用会话跟踪表单验证流程只有在用户在浏览器中没有打开多个表单时才能正常工作;就像在网络邮件中一样,您一次只能登录到一个邮件帐户。

如果您正在使用会话来跟踪表单流,最好每个表单都有一个唯一的表单ID,并跟踪每个表单ID的流:将表单数据放入由表单id而不是根目录键入的子数组中。您可能必须添加逻辑以防止此数据永远停留,因此它将继续增长,通过限制生命周期或活动表单的数量(使用“最近最少使用”来决定在清除后清除哪个表单),或者两者。

答案 3 :(得分:0)

公开使用不会导致任何问题的任何信息。

会话的良好用途是跟踪购物车中的商品,但在结账时您总是希望从数据库中获取商品。

答案 4 :(得分:0)

会话派上用场的最常见方案是保留用户身份。通常,这只需要保留用户ID或与当前登录用户相关的数据数组。

我认为您无法存储的唯一数据类型是资源。这种限制背后有一个原因:)

将会话用作缓存机制是错误的。你应该不惜一切代价避免这种情况。如果你进行缓存,还有其他解决方案(例如xcache,apc)。