Как сохранить всю информацию POST при перенаправлении в PHP? - PullRequest
7 голосов
/ 05 марта 2011
header('Location: ' . $uri);

Это пропустит всю $_POST информацию.

Ответы [ 6 ]

17 голосов
/ 05 марта 2011

Не используйте $ _SESSION, как вам было предложено.Данные сеанса делятся со всеми другими страницами, в том числе открытыми в других вкладках.Вы можете получить непредсказуемое поведение, если вы используете один и тот же трюк в нескольких местах вашего сайта.

Непроверенный лучший код будет выглядеть примерно так.предыдущий пост, подобный этому

session_start();
$post = array();
$data_key = 'POSTDATA_'.$_GET['data_id'];
if ( !empty ( $_GET['data_id'] ) && !empty( $_SESSION[$data_key] ))
{ 
    $post = $_SESSION[$data_key];
    unset ( $_SESSION[$data_key] );
}

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

9 голосов
/ 05 марта 2011

, если вы хотите перенести данные POST на другие страницы (кроме страницы action), тогда используйте

session_start();
$_SESSION['post_data'] = $_POST;
2 голосов
/ 05 марта 2011

Действительно, вы не можете перенаправить POST-запросы.

Либо разрешите вашему серверу прокси-запрос (т.е. сделайте запрос cURL на другой сайт), либо создайте другую форму, заполните еесо скрытыми полями и отправьте его с помощью Javascript / позвольте пользователю щелкнуть.

В качестве альтернативы, как говорит @diEcho, в зависимости от того, что вы пытаетесь сделать: сеансы.

1 голос
/ 05 марта 2011

Вы можете сохранить данные публикации в сеансе, перенаправить и затем извлечь их из сеанса.

session_start();
$_SESSION['POSTDATA'] = $_POST;
header('Location: ' . $uri);

Затем в файле PHP для нового местоположения извлеките данные поста следующим образом:

$_POST = $_SESSION['POSTDATA'];
1 голос
/ 05 марта 2011

Если вы выполните перенаправление, сообщение будет потеряно и произойдет GET.

Вы можете сохранить свой POST в СЕССИИ или закодировать его в GET (в виде строки запроса)

0 голосов
/ 18 августа 2014

Я использую свой собственный простой метод.

Просто подумайте, очень логично! Например, если вы используете текстовый атрибут, значение которого вы хотите сохранить, вы можете использовать:

<?php $textvalue = $_POST['textname']; ?>
<input type="text" name="textname" value="<?php echo $textvalue; ?>" />

<br />

//And if you want to use this method for a radio button, you can use:
<?php if(isset($_POST['radio1']){
  $selected = "selected";
}  ?>
<input type="radio" name="radio1" <?php echo $selected; ?> />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...