【问题标题】:php sessions problemphp会话问题
【发布时间】:2010-11-09 12:28:10
【问题描述】:

我有这样的问题:当我在 php 中启动会话时没有错误,session_start 返回 true,但会话中没有存储数据,会话文件是空的,并且 session_id 总是不同的。什么原因?

ini_set('session.use_cookies', '0' );
ini_set('session.use_trans_sid', '1' );    
session_start();
if (isset($_SESSION['test']))
echo($_SESSION['test']);
$_SESSION['test'] = 'test';
echo("<a href='test.php?".SID."'>refr</a>");

【问题讨论】:

  • 您可能需要发布一些代码供我们查看...
  • 什么是 session.use_only_cookies 值?

标签: php session


【解决方案1】:

检查您对session.save_path 的写入权限。检查日志文件。

在您正在测试它的浏览器上启用 cookie。在您希望访问会话变量的每个页面上使用 session_start()。

如果您手动将 session_id 添加到 url,请先清除 cookie。还有一些安全设置可能会阻止您以这种方式恢复会话。

【讨论】:

  • session.save_path 中的文件已创建,但为空
【解决方案2】:

您是否正在向会话添加内容?除了会话 ID,会话在创建时始终为空白 - 直到您创建/设置一些 $_SESSION 变量。

另请注意,$_SESSION id 在浏览“会话”之间总是不同的。

看这里:

如果指定了id,它将替换 当前会话 ID。 session_id() 需要先调用 session_start() 用于此目的。

http://php.net/manual/en/function.session-id.php

【讨论】:

  • 我将测试值放入 $_SESSION 但在脚本的下一个调用中它为空,我将 session_id 添加到 url,因此它必须启动相同的会话
【解决方案3】:

您正在使用透明 sid 功能,但您手动添加它,但方式错误。

我推荐这个:

ini_set('session.use_cookies', '0');
ini_set('session.use_trans_sid', '0');
session_start();
if (isset($_SESSION['test']))
    echo($_SESSION['test']);
$_SESSION['test'] = 'test';
echo("<a href='test.php?PHPSESSID=".session_id()."'>refr</a>");

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多