php会话从一个php页面到另一个

时间:2014-06-16 19:14:57

标签: php session session-variables

我是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){}

2 个答案:

答案 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行,但这与错误消息不符越来越好了。