PHP变量范围通过标题:位置重定向

时间:2014-03-23 17:29:42

标签: php variables

使用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所在的空白缺失变量输出。

4 个答案:

答案 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'];
?>