it-swarm.com.ru

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

....так далее

15
Kalpesh

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

$query = http_build_query($_GET);

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

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

Готово.

24
user1464296

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

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

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

11
Djerro Neth

Попробуй это. Это отлично сработало для меня.

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');
};
2
James Anderson Jr.

Пожалуйста, для тех, кто читает это в будущем, используйте сеансы для такого рода передачи значения переменной, потому что, если вы в основном полагаетесь на добавление переменной в заголовок, то если пользователь все еще находится в этой форме и выполняет действие, которое изменяет значение заголовка, тогда ваш собственное значение переменной изменяется, поскольку оно зависит от заголовка ...... проще говоря, ИСПОЛЬЗУЙТЕ СЕССИИ.

2
david.ee

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

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

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

2
Yan Berk

Лучшее, что вы можете сделать, это поместить все ваши переменные 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']); ?>, а затем используем 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.

1
Jaro

Это работает использовать этот Sentex 

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

0
Adnan