2

我现在使用 php session 来存储值并在页面之间传递它。

我进行基本检查,例如确保session_start()在每个页面上调用并检查浏览器中设置的 sessionid cookie,但该值在页面之间不是持久的。

例如,我设置$_SESSION["abc"]='abc'在一页上,但是当我在另一页上打印时,它为空。

我注意到使用文件存储cookie值时,没有在指定路径创建相应的cookie文件。未创建会话文件的原因可能是什么?

4

4 回答 4

2

这对你有用吗?

<?php

session_start();

if (!isset($_SESSION['foo']))
    $_SESSION['foo'] = 'hello';

var_dump($_SESSION['foo']);

如果您多次加载该页面,您是否看到过消息hello

如果是,那么您的问题与您的代码有关,这意味着您可能会以某种方式破坏会话值,但如果上述方法不起作用,则可能是您session.save_path的代码不可写。

这给了你什么?

<?php

var_dump(is_writable(ini_get('session.save_path')));
于 2012-05-25T05:55:10.603 回答
2

注意你是否在每一页的末尾销毁。请删除它,因为当你在每一页上销毁会话时,会话中没有持久性。此外,如果您使用某种注销代码,请在该部分代码上销毁该会话。

于 2012-05-25T06:24:25.623 回答
0

您可以更改会话路径(如果允许)并在 .htaccess 中设置 0777 权限

php_value session.save_path  /home/your_domain.gr/public_html/tmp

错误日志也有什么?

于 2012-05-25T05:59:26.977 回答
0

您的服务器目录中有一个目录名称“tmp”,它用于保存会话临时文件,确保该文件夹具有读写权限。

于 2012-05-25T05:52:44.403 回答