编程php时,会话值在页面之间不持久的原因是什么?

时间:2012-05-25 05:49:07

标签: php session

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

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

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

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

4 个答案:

答案 0 :(得分: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')));

答案 1 :(得分:2)

请注意,如果您在每个页面的末尾都要进行销毁。请将其删除,因为当您在每个页面上销毁会话时,会话中没有持久性。此外,如果您使用某种退出代码,请在该部分代码上销毁该会话。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

错误日志还有什么内容吗?