PHP - передать переменные POST с помощью header ()? - PullRequest
14 голосов
/ 15 марта 2010

Я пытаюсь использовать функцию header () для создания перенаправления. Я хотел бы отобразить сообщение об ошибке. В настоящее время я отправляю сообщение как параметр через URL, однако это выглядит довольно уродливо.

Есть ли способ передать это значение как переменную post?

Любой совет приветствуется.

Спасибо.

Ответы [ 4 ]

22 голосов
/ 15 марта 2010

Дэн, Вы можете начать и сохранить сеанс в PHP, а затем сохранить сообщение как переменную сеанса. Это избавляет вас от необходимости передавать сообщение в HTTP-запросе.

Манипулирование Сеансами

//Start the session
session_start();

//Dump your POST variables
$_SESSION['POST'] = $_POST;

//Redirect the user to the next page
header("Location: bar.php");

Теперь в bar.php вы можете получить доступ к этим переменным POST, повторно запустив сеанс.

//Start the session
session_start();

//Access your POST variables
$temp = $_SESSION['POST'];

//Unset the useless session variable
unset($_SESSION['POST']);

Чтобы узнать больше о сессиях, ознакомьтесь: http://php.net/manual/en/function.session-start.php

3 голосов
/ 15 марта 2010

Функция заголовка используется для отправки заголовков ответа HTTP пользователю, поэтому на самом деле вы не можете использовать ее для создания заголовков запроса: (

Одна возможность - использовать CURL , но я не думаю, что это стоит того, что вы делаете.

0 голосов
/ 18 февраля 2019

При передаче переменных между модулями я обнаружил, что проще создать массив из переменных, преобразовать массив в json и сохранить его в таблице базы данных с двумя столбцами, ключом varchar и текстовыми данными. JSON будет вводить данные, а ключ может быть чем угодно. Затем в целевом модуле вы просто читаете это обратно, конвертируете json обратно в массив и вуаля, у вас есть ваши переменные. Нет $ _POST, нет $ _SESSION, нет суеты, нет беспорядка, быстро и легко. Конечно, это предполагает, что у вас есть доступ к базе данных, хотя вы можете использовать файл на сервере. $ _POST бесполезен, так как он требует, а $ _SESSION может быть капризным и может привести к неожиданным результатам. В противном случае вам почти придется использовать ajax.

0 голосов
/ 15 марта 2010

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

if(something_went_wrong()) {
  require_once('errors.php');
  display_error('something really went wrong.');
  }

Файл errors.php будет содержать определение для display_error($message), в котором отображается отформатированное сообщение.

...