Перенаправление с переменной $_POST

Как я могу перенаправить на страницу и добавить переменную $_POST с некоторой информацией в ней?

Я знаю, что с $_GET вам нужно добавить эту переменную в URL-адрес, например & var = foo

Ответ 1

session_start();

$_SESSION = $_POST;

Затем ваши параметры POST будут доступны через $_SESSION.

Ответ 2

Вы можете извлечь данные из $_POST и добавить их в URL перенаправления:

header('Location: http://www.yoursite.com/test.php?var=' . urlencode($_POST['var']));

Если у вас больше параметров, см. http_build_query(), чтобы помочь построить строку запроса.


Но обратите внимание, что эта страница test.php будет загружена браузером с помощью метода GET: сервер не может сказать браузеру, чтобы загрузить другую страницу с помощью POST.

Ответ 3

Вы можете сделать это, используя форму и некоторый JavaScript.

Вот пример:

<form action="/path/to/redirect/to" id="example-id">
    <?php foreach ($_POST as $key => $value): ?>
    <input type="hidden" name="<?php echo $key ?>" value="<?php echo $value ?>" />
    <?php endforeach ?>
</form>

<script type="text/javascript">
    $(document).ready(function() {
        $("#example-id").submit();
    });
</script>

Обратите внимание, что пример использует JQuery для части JavaScript.

Ответ 4

Вы не можете. Ваши варианты:

a) добавьте опубликованную переменную в URL-адрес перенаправления, а затем посмотрите на $_GET

b) используйте переменную сеанса для переноса данных со страницы на страницу.

Ответ 5

Лучший способ сделать это - использовать "Apache RewriteRule", который отправит данные POST в перезаписанный script.

Ответ 6

Я решил ту же проблему, используя форму POST и авто-проверку с помощью JavaScript.

<?php
.. blah blah blah my stuff

$body = "<html><body onload='connexion.submit()'>";
$body .= "<form name='connexion' action='$connectURL' method='post'>";
$body .= "<input type='hidden' name='username' value='$dataLogin'>";
$body .= "<input type='hidden' name='password' value='$dataPassword'>";
$body .= "<input type='submit' value='OK' />";
$body .= "</form>";
$body .= "</body></html>";
?>

Это не удается, если JavaScript отключен в браузере клиента (пользователь должен отправить форму вручную), но это приемлемо для моего случая.