2

当我尝试从我在第一个脚本中设置status$_REQUEST[]数组中检索变量时(然后进行重定向),我只看到一个警告Undefined index: status。这是为什么 ?

<?php
        $_REQUEST['status'] = "success";
        $rd_header = "location: action_script.php";
        header($rd_header);
?>

动作脚本.php

<?php
echo "Unpacking the request variable : {$_REQUEST['status']}";
4

3 回答 3

4

您正在寻找的是会话

<?php
    session_start();
    $_SESSION['status'] = "success";
    $rd_header = "location: action_script.php";
    header($rd_header);
?>

<?php
    session_start();
    echo "Unpacking the request variable : {$_SESSION['status']}";

请注意在session_start()两页顶部添加的。正如您将在我发布的链接中看到的那样,这是必需的,并且必须在您希望使用会话的所有页面上。

于 2013-03-17T16:41:41.293 回答
4

这是因为您的header()语句将用户重定向到一个全新的 URL。任何$_GET$_POST参数都不再存在,因为我们不再在同一页面上。

你有几个选择。

1-首先,您可以使用$_SESSION跨页面重定向来持久化数据。

session_start();
$_SESSIONJ['data'] = $data; 
// this variable is now held in the session and can be accessed as long as there is a valid session.

2- 重定向时将一些获取参数附加到您的 URL -

$rd_header = "location: action_script.php?param1=foo&param2=bar";
header($rd_header);
// now you'll have the parameter `param1` and `param2` once the user has been redirected.

对于第二种方法,此文档可能很有用。它是一种从名为 的数组创建查询字符串的方法http_build_query()

于 2013-03-17T16:46:45.737 回答
2

您正在寻找的可能是发送一个 GET 参数:

$rd_header = "Location: action_script.php?status=success";
header($rd_header);

可以通过以下方式检索action_script.php

$_GET['status'];

在这种情况下,您实际上并不需要会话或 cookie,但您必须考虑用户可以轻松编辑 GET 帖子这一事实。

于 2013-03-17T16:46:43.870 回答