13

在用户提交表单后,我从 Aweber 接收 GET 字符串中的值。我获取他们发送的变量并将它们提交到 SMS 网关,以通过短信通知第 3 方提交。

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

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

这是我在第一页 (sms.php) 上用来收集 Aweber 发送的变量的代码:

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

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

8 回答 8

24

首先使用将$_GETHTTP 变量转换为查询字符串

$query = http_build_query($_GET);

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

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

完毕。

于 2013-04-19T22:05:06.743 回答
16
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'];

....ETC

于 2012-08-03T21:15:27.600 回答
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 方法获取这些变量。

于 2012-08-03T21:30:06.017 回答
3

请对于将来阅读本文的任何人,使用会话进行这种变量值传输,因为如果您主要依赖于向标题添加变量,那么如果用户仍在该表单上并执行更改标题值的操作,那么您的自己的变量值会发生变化,因为它取决于标题......简单地说,使用会话。

于 2014-06-15T21:13:43.043 回答
2

将它们存储在会话中

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

session_start在每个文件的开头使用。

于 2012-08-03T21:12:29.433 回答
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');
};
于 2017-06-13T11:19:26.143 回答
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

//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']); ?>然后使用 aheader("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 输出之上。

于 2015-01-09T03:51:14.653 回答
0

这个作品使用这个sentex

header('location:member_dashboard.php?id='.$id);

于 2016-05-04T10:27:57.963 回答