2010-11-09 146 views
0

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

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>"); 
+0

您可能需要发布一些代码,我们来看看... – 2010-11-09 12:29:45

+0

什么session.use_only_cookies价值? – 2010-11-09 12:49:58

回答

0

您是否将内容添加到会话中?除会话ID以外,会话在创建时始终为空,直到您创建/设置一些$_SESSION变量。

另请注意,$_SESSION id在浏览'会话'之间总会有所不同。

在这里看到:

如果ID被指定,它将取代 当前会话ID。需要在 session_start()之前为此目的调用session_id() 。

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

+0

我将测试值放到$ _SESSION中,但是在下一次脚本调用中,我将session_id添加到了url中,所以它必须启动同一个会话 – hippout 2010-11-09 12:33:05

+0

您可以发布更多代码吗?在session.save_path中创建了 – SW4 2010-11-09 12:33:37

1

检查您是否有写入权限session.save_path。检查日志文件。

在您正在测试的浏览器上启用Cookie。在每个想要访问会话变量的页面上使用session_start()。

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

+0

文件,但并不是空的 – hippout 2010-11-09 12:36:17

0

您正在使用透明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>");