【发布时间】:2012-01-09 20:52:34
【问题描述】:
检查了整个网络并尝试了所有关于会话问题的可能解决方案。
我有 3 页:第一页从重定向表单中读取一些数据并在会话中存储 4 个变量。这是生成的第一个会话 ID,如果我检查 print_r($_SESSION) 一切正常。
提交时此页面的表单转到第二页,其中数据存储在 mysql 数据库中(此处没有会话操作),然后“元”重定向到第三页。
这里我尝试从会话中读取变量,但生成了一个新会话。 如果我查看我的服务器 tmp 目录,两个会话都在这里。
为什么生成新会话而不是从第一个会话读取?
- 尝试过的页面编码:ANSI、UTF-8 w BOM、UTF-8 w BOM
- 尝试了php.net会话手册中编写的脚本
还有其他想法吗?
代码是这样的简单会话:
第一个 php
session_start();
$_SESSION['id'] = $id;
已尝试第二页
session_start();
print_r($_SESSION);
输出是Array{ id -> } 所以只有空变量
第三页
session_start();
$id = $_SESSION['id'];
echo $id;
输出是''
【问题讨论】:
-
发布您的代码。我们不能帮助盲目!
-
检查会话 cookie 是否正确传播,并在每个页面请求之间保持不变。如果 cookie 中的会话 ID 发生变化,您每次都会获得一个新会话。同样,确保您的所有页面都在执行 session_start()。
-
如果第 2 页上的“无会话操作”意味着您没有调用
session_start()- 这就是您的问题。 -
Tnx 全部回复。多项式:代码是这样的简单会话:第一个 php: session_start(); $_SESSION['id'] = $id;第二页尝试了 session_start(); print_r($_SESSION) -> 输出是 Array{ id -> } 所以只有空变量,第 3 页 session_start(); $id = $_SESSION['id'];回声 $id;和输出是''
-
我将您评论中的(格式化)代码添加到帖子中。请记住,最好编辑您的帖子,尤其是在添加重要细节(例如代码 sn-ps)时。