当我尝试从我在第一个脚本中设置的status
数组中检索变量$_REQUEST[]
(然后进行重定向)时,我只看到警告Undefined index: status
。这是为什么 ?
<?php
$_REQUEST['status'] = "success";
$rd_header = "location: action_script.php";
header($rd_header);
?>
action script.php
<?php
echo "Unpacking the request variable : {$_REQUEST['status']}";
答案 0 :(得分:4)
您要找的是sessions:
<?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()
。正如您在我发布的链接中所读到的那样,这是必需的,并且必须在您希望使用会话的所有页面上。
答案 1 :(得分:4)
这是因为您的header()
语句会将用户重定向到全新的网址。任何$_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¶m2=bar";
header($rd_header);
// now you'll have the parameter `param1` and `param2` once the user has been redirected.
对于第二种方法,this documentation might be usefull。这是一种从名为http_build_query()
的数组创建查询字符串的方法。
答案 2 :(得分:2)
您正在寻找的可能是发送GET参数:
$rd_header = "Location: action_script.php?status=success";
header($rd_header);
可以在action_script.php
中通过:
$_GET['status'];
在这种情况下,您并不真正需要会话或Cookie,但您必须考虑用户可以轻松编辑GET帖子的事实。