【发布时间】:2014-06-16 19:14:56
【问题描述】:
我是 php 会话的新手,我想将数据从 php 页面发送到另一个页面。在第一页我有这个代码:
session_start();
$statements="<p>{$actorName} {$verbDisplay} {$objectName}</p>";
$_SESSION['regName'] = $statements;
if(isset($_SESSION['regName']))
{
echo $_SESSION['regName'];
header("Location: http://localhost/moodle/blocks/tincanlrs/downloadlrs.php");
}
这里 isset 函数是 returnig true 并且一切正常。 在第二页我有这个代码:
session_start();
$statements = $_GET['regName'];
header("Content-Type: plain/text");
header("Content-Disposition: Attachment; filename=lrs_statements.txt");
header("Pragma: no-cache");
echo $statements;
if (isset($_SESSION['regName']))
{
echo "session";
}
else
{
echo "no session";
}
当我打开 lrs_statements.txt 时,我有:
通知:9行C:\xampp\htdocs\moodle\blocks\tincanlrs\downloadlrs.php中的未定义索引:regName
没有会话。
为什么?我做错了什么吗?提前致谢
[编辑] 我测试了 session_start 并且会话正在开始但是当我测试 session_id() 我有不同的 id 而不是相同的 id。 当我在第二页顶部添加时:
session_start();
var_dump($_SESSION);exit();
我有这个输出:array(0) { }
【问题讨论】:
-
你不需要这个 $statements = $_GET['regName'];试试 echo $_SESSION['regName'];
-
为什么在第二页到达 $_GET? $statements = $_GET['regName'];
-
基本调试:查看
session_start()的返回值。如果会话无法启动,它将是布尔值 false。检查两个脚本中session_id()的值。如果你得到不同的值,那么你有两个或更多不同的会话并且正在“丢失”你存储在其中一个中的值。 -
你不应该在 header() 之前回显或输出任何东西,(与问题无关,但我想我会提到它)
-
在第二页的最顶部输入
session_start(); var_dump($_SESSION);exit();并使用输出编辑您的问题
标签: php session session-variables