我有这样的问题:当我在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>");
答案 0 :(得分:1)
检查您是否拥有session.save_path
的写入权限。检查日志文件。
在您正在测试的浏览器上启用Cookie。在您希望访问会话变量的每个页面上使用session_start()。
如果您手动将session_id添加到网址,请先清除您的Cookie。还有一些安全设置可能会阻止您以这种方式恢复会话。
答案 1 :(得分:0)
您是否在会话中添加内容?除会话ID外,会话在创建时始终为空白,直到您创建/设置一些$_SESSION
变量。
另请注意,浏览“会话”之间的$_SESSION
ID始终不同。
见这里:
如果指定 id ,则会替换 当前会话ID。 SESSION_ID() 以前需要打电话 session_start()用于此目的。
答案 2 :(得分: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>");