PHP-启动会话后缺少会话文件

PHP-启动会话后缺少会话文件,php,session,Php,Session,我使用()启动会话,并且能够在$\u会话中保存数据。当我试图从会话检索数据时,$\u session数据为空。我正在发布会话id,然后调用(passsedSessionID),然后调用session\u start(),但该会话中的数据已丢失。假定要写入的会话文件不存在 我猜这与没有写入会话文件有关 更新解决了问题。我没有向存储会话数据的目录授予php进程写入权限。:/ 只要$\u SESSION全局变量只返回当前用户的会话的数据,就不需要每次都传递会话id。正如@Brian在评论中提到的,不要

我使用()启动会话,并且能够在
$\u会话中保存数据。当我试图从会话检索数据时,
$\u session
数据为空。我正在发布会话id,然后调用(passsedSessionID),然后调用
session\u start()
,但该会话中的数据已丢失。假定要写入的会话文件不存在

我猜这与没有写入会话文件有关


更新解决了问题。我没有向存储会话数据的目录授予php进程写入权限。:/

只要
$\u SESSION
全局变量只返回当前用户的会话的数据,就不需要每次都传递
会话id
。正如@Brian在评论中提到的,不要忘记确保
session\u start()
位于代码的顶部,然后不要关心会话标识

好的,我希望这对你有意义。在不同浏览器中尝试此代码并刷新页面几次:

<?php
session_start();
echo session_id();
?>


这将返回会话id,在不同的浏览器中它们将不同,但在页面刷新后它们将保持不变。

我猜您是在以不同的方式解释会话的用法。您只需要在每个页面的开头调用
session\u start()
,这将同步页面之间的数据

page1.php page2.php 请看看这个


希望这对您有所帮助

您通常不需要调用
session\u id
让会话处理POST请求。在使用会话时,您只需确保session_start()几乎位于任何使用会话的页面的开头。不需要发布id(最好不要发布!)。如果我没有传递会话id,也没有调用会话id(passsedsessionId),我如何知道需要使用哪个会话?我可能有数百个用户拥有自己的会话。通过传递会话id,我可以检索该用户的正确会话。否?@dev.e.loper No.
$\u会话
变量返回当前用户会话的数据。会话通常由Cookie永久化,因此您不需要通过查询字符串传递它们,事实上,不这样做可能更好。“只要$\u会话全局变量返回当前用户会话的数据”,您就不需要确保它。如果我访问页面
$\u SESSION
将返回我的会话,如果您访问同一页面,它将返回您的会话。我尝试了不调用SESSION\u id()的代码,但它无法解决检索会话数据的原始问题。会话文件仍没有写入磁盘。
session_start()
-- store some session data
-- Some form with action page2.php
-- Submit button
session_start()
-- fetch the session data
-- fetch the form data