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

从一个php页面到另一个php页面的php会话,php,session,session-variables,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("Locatio

我是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");
}
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\u start,会话正在启动,但是当我测试session\u id时,我有不同的id,而不是相同的id。 当我在第二页顶部添加时:

session_start();
var_dump($_SESSION);exit();

我有这样的输出:array0{}

在您的第二页中,从$\u会话访问您的会话,如下所示:$\u会话['regName']

$\u GET将保存请求URI中的所有名称/值对,例如,请求URI之后的所有内容?在URL中

还有一点需要注意的是,如果使用isset进行检查,则永远不会出现未定义的索引错误。

此行失败:

$statements = $_GET['regName'];
为什么会失败?因为这是您在第一页上重定向到的URL:

http://localhost/moodle/blocks/tincanlrs/downloadlrs.php
此URL中没有参数regName,因此访问$\u GET将触发未定义索引通知

还有一件事:在第一个页面上,您回显内容,然后才添加另一个HTTP头。这通常会出现异常,因为使用echo会将所有当前头发送到浏览器,并且不允许发送更多头。例外情况是当打开输出缓冲时,允许混合这两个输出,但强烈建议不要依赖此功能,以防您的代码必须在不允许打开输出缓冲的主机上运行


现在的问题是:你在第二页的哪一行是第9行。如果我数一数,我会看到回声会话;将是第9行,但这与您收到的错误消息不匹配。

您不需要此$statements=$\u GET['regName';尝试使用echo$_会话['regName'];你为什么要在第二页上拿到美元$语句=$\u GET['regName'];基本调试:检查session\u start的返回值。如果会话无法启动,则为布尔值false。检查两个脚本中会话_id的值。如果你得到不同的值,那么你有两个或两个以上不同的会话,并且正在丢失其中一个会话中存储的值。你不应该在标题前回显或输出任何内容,这与问题无关,但我想我应该在第二页的最上面提到它,将会话放在开始位置;变量转储$会话;出口并使用输出行9编辑您的问题,输出行是“$statements=$\u GET['regName'];”