Как передать переменные, полученные в строке GET через перенаправление заголовка php?

Я получаю значения в строке GET от Aweber при представлении пользователем формы. Я беру переменные, которые они отправляют, и отправляет их на шлюз SMS, чтобы уведомить третью сторону представления текстовым сообщением.

Вот моя проблема. Мне нужно перенаправить страницу, которая выполняет команды исходящих SMS в заголовке php, на другую страницу, которая в конечном итоге отображает переменные GET, отправленные из Aweber.

Я могу получить переменные и их значения на первой странице. Как передать их на вторую страницу?

Вот код, который я использую на первой странице (sms.php) для сбора переменных, отправленных Aweber:

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

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

Ответ 1

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

Сначала преобразуйте переменную HTTP $_GET в строку запроса, используя

$query = http_build_query($_GET);

Затем добавьте переменную строки запроса в заголовок перенаправления

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

Готово.

Ответ 3

Вам не нужно хранить их в сеансе, вы можете легко передать их с заголовком вашего местоположения:

$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);

В файле confirm.php вы можете получить эти переменные с помощью метода $_GET.

Ответ 4

Сохраните их в session:

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

Используйте session_start в начале каждого файла.

Ответ 5

Пожалуйста, для всех, кто читает это в будущем, используйте сеансы для такого переноса значений переменных, потому что если вы главным образом полагаетесь на добавление переменной в заголовок, то если пользователь все еще находится в этой форме и выполняет действие, которое изменяет значение заголовок, тогда ваше собственное значение переменной изменяется, так как оно зависит от заголовка...... просто введите USE SESSIONS.

Ответ 6

Попробуйте это (он отлично работал, для моего использования):

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');
    };

Если это сработает, для вас тоже, пожалуйста, помните об этом!

Ответ 7

Лучшее, что вы можете сделать, это поместить все ваши POST-переменные в сеанс следующим образом:

На странице1.php put:

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

И на странице2.php put: (Если на странице1.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']);

Или на странице2.php put: (Если на странице1.php мы используем self submit с формой action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>, а затем с помощью header("Location: page2.php"); переходим на страницу2.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.

Ответ 8

Это работает, используя этот sentex

заголовок (. 'Местоположение: member_dashboard.php ID =' $ID);