使用header: location
重定向时,如何将变量与此重定向一起传递?
例如,我的函数中存储了$username
的值。
部分功能:
if(register($email_address, $username, $password) === true){
// Sends an email
send_email($email_address);
// Reroute to success page
$succeeded = true;
header('Location: register-success.php');
}
然后在register-success.php
我希望将用户名输出到页面上:
<?php
echo $username;
?>
但是当我这样做时,我没有得到错误,只是echo
所在的空白缺失变量输出。
答案 0 :(得分:2)
if(register($email_address, $username, $password) === true){
// Sends an email
send_email($email_address);
// Reroute to success page
$succeeded = true;
header("Location: register-success.php?username=$username"); //<--- Here
exit; //<-- Add this too
}
并在您的register-success.php
页面上
<?php
echo $_GET['username'];
?>
答案 1 :(得分:1)
尝试使用会话变量。在您的第一个脚本中添加
session_start();
到页面顶部。
以及需要使用会话变量的每个其他页面的顶部。
然后您可以设置$_SESSION['username']
之类的内容。这些将适用于同一会话中的每个脚本,例如直到用户关闭浏览器。
这比使用$_GET
更有利于它对浏览器透明,因此更安全。
如果您希望我发布有关此内容的更多信息(或其他任何人),我很乐意这样做。
答案 2 :(得分:1)
最简单的方法是使用GET请求:
header('Location: register-success.php?username='.$username);
然后,您可以使用超级全局$_GET['username']
离。 (在你的register-success.php中)
$username = $_GET['username'];
echo $username;
答案 3 :(得分:1)
我知道,根据你的其他问题,你会变得疯狂。那么为什么不在这里使用会话?例如,我知道您的注册页面使用SESSION['status']['register']['error']
,所以为什么不使用类似SESSION['values']['username']
之类的内容通过这样做,您可以阻止某人暂停您的请求,切换用户名然后显示不同的用户名和可能(取决于您的代码的结构)不同的配置文件。
然后你只需构建你的注册成功页面就像这样:
<?php
session_start();
echo $_SESSION['values']['username'];
?>