Как сохранить всю информацию POST при перенаправлении на PHP?

header('Location: ' . $uri); 

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

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

 session_start(); $_SESSION['post_data'] = $_POST; 

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

Непроверенный лучший код будет примерно таким.

 session_start(); $data_id = md5( time().microtime().rand(0,100) ); $_SESSION["POSTDATA_$data_id"] = $_POST; header('Location: ' . $uri."?data_id=$data_id"); 

На следующей странице вы можете получить предыдущую запись, подобную этой

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

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

В самом деле, вы не можете перенаправлять запросы POST.

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

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

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

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

Вы можете сохранить данные сообщения в сеансе, перенаправить, а затем вернуть его из сеанса.

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

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

 $_POST = $_SESSION['POSTDATA']; 

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

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

 <?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; ?> />