如何通过php头重定向传递在GET字符串中收到的变量?

时间:2012-08-03 21:10:35

标签: php variables header get

我在用户提交表单时收到来自Aweber的GET字符串中的值。我将他们发送的变量提交给SMS网关,通过短信通知第三方提交。

这是我的问题。我需要将执行传出SMS命令的页面重定向到另一个页面,该页面最终显示从Aweber发送的GET变量。

我可以在第一页中检索变量及其值。如何将它们传递到第二页?

以下是我在第一页(sms.php)上使用的代码,用于收集Aweber发送的变量:

   $fname   = $_GET['name'];
   $femail  = $_GET['email'];
   $fphone  = $_GET['telephone'];
   ....etc

   header('Location: confirmed.php');
   exit;

8 个答案:

答案 0 :(得分:24)

首先使用

$_GET HTTP变量转换为查询字符串
$query = http_build_query($_GET);

然后将查询字符串变量附加到重定向标题

header('location: domain.com'."?".$query);

完成。

答案 1 :(得分:15)

session_start();
$_SESSION['fname']   = $_GET['name'];
$_SESSION['femail']  = $_GET['email'];
$_SESSION['fphone']  = $_GET['telephone'];
....etc

header('Location: confirmed.php');

并在下一页上获取,如:

session_start();
$fname   = $_SESSION['fname'];
$femail  = $_SESSION['femail'];
$fphone  = $_SESSION['fphone'];

....等

答案 2 :(得分:10)

您无需将它们存储在会话中,您可以使用您的位置标题轻松传递它们:

$fname   = $_GET['name'];
$femail  = $_GET['email'];
$fphone  = $_GET['telephone'];
//now a header with these var's:
header("Location: confirmed.php?name=".$fname."&email=".$femail."&telephone=".$fphone);

在confirmed.php中,您可以使用$ _GET方法获取这些变量。

答案 3 :(得分:2)

将它们存储在session

 $_SESSION['fname'] = $_GET['name'];

在每个文件的开头使用session_start

答案 4 :(得分:2)

对于将来阅读此内容的人,请使用会话进行此类变量值传输,因为如果您主要依赖于向头部添加变量,那么如果用户仍在该表单上并执行更改其值的操作标题然后你自己的变量值改变,因为它取决于标题......简单地说,使用SESSIONS。

答案 5 :(得分:2)

试试这个。它对我来说很完美。

if ($_GET)
{
    $query = str_replace("%3D", "=", str_replace("%26", "&", strval(urlencode(http_build_query($_GET)))));

    header('location: https://www.example.com'.'?'.$query);
}
else
{
    header('location: https://www.example.com');
};

答案 6 :(得分:1)

您可以做的最好的事情是将所有POST变量放到这样的会话中:

在page1.php上:

//Start the session
session_start();
//Dump your POST variables
$_SESSION['post-data'] = $_POST;

在page2.php上:( 如果在page1.php上我们使用普通的POST表单提交表单action="page2.php&#34; < / p>

//Start the session
session_start();
//Access your POST variables
foreach ($_POST as $key => $value) {
    ${$key} = $value;
    $_SESSION[$key] = $value;
}
//Unset the useless session variable
unset($_SESSION['post-data']);

或者在page2.php上:( 如果在page1.php上我们使用表单为action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>的自提交,然后使用header("Location: page2.php");移至page2.php并通过会话传递我们的POST变量

//Start the session
session_start();
//Access your POST variables
$_POST = $_SESSION['post-data'];
foreach ($_POST as $key => $value) {
    ${$key} = $value;
    $_SESSION[$key] = $value;
}
unset($_SESSION['post-data']);

我花了好几个小时搞清楚因为所有的论坛都错了或不完整。

现在它就像调用你从page1.php传递的变量一样简单,例如:<b>Points: </b><?php echo $points; ?>,那就是它!

header('Location: page2.php');置于if条件等时,请确保它位于页面的第一个PHP脚本中以及任何HTML输出上方。

答案 7 :(得分:0)

这可以使用这个sentex

头(&#39;位置:?。member_dashboard.php ID =&#39; $ ID);