Как передать переменные, полученные в строке 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);