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

 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']; 

….и т.д

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

 $query = http_build_query($_GET); 

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

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

Готово.

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

 $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.

Храните их в сеансе :

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

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

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

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

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

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

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

На странице1.php поставлен:

 //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; ?> <b>Points: </b><?php echo $points; ?> и все!

При размещении header('Location: page2.php'); в if и т. д. убедитесь, что он будет в первом скрипте PHP на странице и выше любого вывода HTML.

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

заголовок ( "место: member_dashboard.php идентификатор =? $ ID.);