我是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函数返回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时,我有:
注意:未定义的索引: C:\ xampp \ htdocs \ moodle \ blocks \ tincanlrs \ downloadlrs.php 中的regName 9
没有会议。
为什么?我做错了什么?提前致谢
[编辑] 我测试了session_start并且会话正在启动但是当我测试session_id()时,我有不同的id而不是相同的id。 当我在第二页的顶部添加时:
session_start();
var_dump($_SESSION);exit();
我有这个输出:array(0){}
答案 0 :(得分:0)
在你的第二页中,从$ _SESSION访问你的会话,如下所示:$ _SESSION ['regName'];
$ _ GET将保存请求URI中的所有名称/值对,例如之后的一切?在网址
还有一点需要注意的是,如果您使用isset()进行检查,那么您将无法获得未定义的索引错误。
答案 1 :(得分:0)
这一行失败了:
$statements = $_GET['regName'];
为什么失败?因为这是您在第一页上重定向到的URL:
http://localhost/moodle/blocks/tincanlrs/downloadlrs.php
此URL中没有参数“regName”,因此对$ _GET的访问将触发“未定义的索引”通知。
还有一件事:在第一页上,您回显内容,然后才会添加另一个HTTP标头。这通常(有例外)将失败,因为使用“echo”会将所有当前标头发送到浏览器并禁止发送更多。例外情况是打开输出缓冲时,允许混合这两个输出,但强烈建议不要依赖此功能,以防您的代码必须在不允许切换输出缓冲区的主机上运行。
现在问题是:第二页中哪一行是第9行。如果我计算行数,我看到echo "session";
将是第9行,但这与错误消息不符越来越好了。