php会话数据已保存并存储,但下一页无法使用

时间:2013-01-09 19:06:58

标签: php session sessionid

我真的在桌子上敲打着这个:

我正在第1页上保存会话数据。

这是初始代码:

<?php
session_start();

$SID = session_id();

$newToken = md5(uniqid(mt_rand(), true)); 
$_SESSION['donate-token'] = $newToken;

我在page1的底部做了一个var转储,所以我可以看到会话数据被保存了。

然后我检查了服务器文件系统并验证了会话文件是否到位并且数据存储在其中。

这是page2的开头(添加了一些调试代码):

<?php
session_start();
echo '<pre>';
echo 'session id: ', session_id(), "\n";

$sessionfile = ini_get('session.save_path') . '/' . 'sess_'.session_id();
echo 'session file: ', $sessionfile, ' ';

var_dump($_SESSION);
echo "</pre>\n";

所以我在本页顶部看到的是一个非常不同的会话ID和一个空的会话数组。

我无法弄清楚为什么一个页面可以编写会话但下一个页面无法读取它!

2 个答案:

答案 0 :(得分:0)

尝试在第2页上调用session_start()之前添加例外。试试这个:

$a = session_id();
if(empty($a)) session_start();

答案 1 :(得分:0)

查看脚本发送到您浏览器的cookie。 (大多数浏览器都有内置工具来检查它们所拥有的cookie。如果你在自己的系统上进行开发,通常可以按域搜索,例如localhost。)

如果您的浏览器未存储Cookie,请检查浏览器的安全设置;如果cookie已存储,但有一个第二页不可用的路径,那么要么考虑将会话cookie配置为限制较少的路径,要么将两个脚本放在同一目录中。