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