Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中$\u会话的正确用法是什么_Php - Fatal编程技术网

在PHP中$\u会话的正确用法是什么

在PHP中$\u会话的正确用法是什么,php,Php,根据,PHP中的会话支持包括在后续访问中保留某些数据的方法。这使您能够构建更多定制的应用程序,并提高网站的吸引力。访问您网站的访问者会被分配一个唯一的id,即所谓的会话id。该id存储在用户端的cookie中,或者在URL中传播。会话支持允许您注册任意数量的变量以在请求之间保留 根据这里程序员的经验,我想知道哪些东西应该存储在$\u SESSION中,哪些东西不应该存储。例如,在会话中存储数据以避免对数据库的重复查询是否是一个好主意?只存储维护状态所需的内容(ID、一小段高度使用的数据等) 如果

根据,PHP中的会话支持包括在后续访问中保留某些数据的方法。这使您能够构建更多定制的应用程序,并提高网站的吸引力。访问您网站的访问者会被分配一个唯一的id,即所谓的会话id。该id存储在用户端的cookie中,或者在URL中传播。会话支持允许您注册任意数量的变量以在请求之间保留


根据这里程序员的经验,我想知道哪些东西应该存储在
$\u SESSION
中,哪些东西不应该存储。例如,在会话中存储数据以避免对数据库的重复查询是否是一个好主意?

只存储维护状态所需的内容(ID、一小段高度使用的数据等)

如果性能开始受到查询滥用的影响,则可以将数据库结果缓存在适当的缓存层(memcached、APC等)中

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

使现代化
另一个流行的用途,也是我曾经使用过的,是在处理之前存储临时数据。例如,多页/向导样式的表单。

只存储维护状态所需的内容(ID、一小段高度使用的数据等)

如果性能开始受到查询滥用的影响,则可以将数据库结果缓存在适当的缓存层(memcached、APC等)中

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

使现代化
另一个流行的用途,也是我曾经使用过的,是在处理之前存储临时数据。例如多页/向导样式的表单。

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


会话的一个很好的用途是跟踪购物车中的物品,尽管在结账时,您总是希望从数据库中提取物品。

任何公共使用的信息都不会引起任何问题


会话的一个很好的用途是跟踪购物车中的项目,尽管在结帐时您总是希望从数据库中获取项目。

我自己也是一名php初学者,但我有使用会话的完美经验

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

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

  • 希望我没有把你弄糊涂。我想帮点忙


    谢谢:)

    我自己也是一名php初学者,但我有一次使用会话的完美体验

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

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

  • 希望我没有把你弄糊涂。我想帮点忙


    谢谢:)

    会话最常用的场景是保留用户标识。通常,这只需要保留用户id或与当前登录用户相关的数据数组

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


    将会话用作缓存机制是错误的。你应该不惜一切代价避免那样做。如果您追求缓存,还有其他可用的解决方案(例如xcache、apc)。

    会话最常用的场景是保留用户标识。通常,这只需要保留用户id或与当前登录用户相关的数据数组

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


    将会话用作缓存机制是错误的。你应该不惜一切代价避免那样做。如果您追求缓存,还有其他可用的解决方案(例如xcache、apc)。

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

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


    如果您使用会话来跟踪表单流,最好每个表单都有一个唯一的表单id,并且每个表单id跟踪流:将表单数据放在由表单id设置关键帧的子数组中,而不是放在根级别。您可能需要添加逻辑,以防止此数据永久挂起,从而使其继续增长,方法是限制生存期或活动表单的数量(使用“最近使用最少的”来决定在表单满后清除哪个表单),或者两者兼而有之。

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