Перенаправление данных PHP

Я пытаюсь пересылать данные с одной страницы на другую без использования cURL, возможно ли это?

В настоящий момент я пробовал

header('HTTP/1.1 307 Temporary Redirect');
header('Location: new-location.php');

Это работает красиво, но дает тупое всплывающее окно, любые другие методы?

Я пробовал использовать завиток, но ничего не происходит, не уверен, что он включен на моем сервере!

Ответ 1

Я думаю, что следующее является единственным возможным способом достижения этого, вместо перенаправления с заголовком местоположения отправьте этот html: -

<!DOCTYPE html>
<html>
    <body onload="document.forms[0].submit()">
        <form action="new-location.php" method="post">
            <?php foreach( $_POST as $key => $val ): ?>
                <input type="hidden" name="<?= htmlspecialchars($key, ENT_COMPAT, 'UTF-8') ?>" value="<?= htmlspecialchars($val, ENT_COMPAT, 'UTF-8') ?>">
            <?php endforeach; ?>
        </form>
    </body>
</html>

Ответ 2

Вы можете использовать следующее для пересылки данных на другой URL-адрес. Обратите внимание, что ответ фиксируется в переменной $data, с помощью которой вы можете делать все, что хотите.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.domain.tld/urltopostto.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST));
$data = curl_exec($ch);
curl_close($ch);

Ответ 3

Если я правильно понимаю проблему и работаю на сервере Apache с включенным mod_rewrite, вы можете использовать переписывание URL-адресов. Вы можете установить метод запроса как условие и переписать исходный URL на альтернативный вариант:

RewriteCond %{REQUEST_METHOD} ^POST
RewriteRule ^index.php new-location.php [L]

Ответ 4

Использование cURL или fopen() являются общими предложениями, но ни на самом деле не "пересылает" пользователя на другую страницу.

Чтобы по-настоящему переслать пользователя на другую страницу с неповрежденными данными $_POST, вы можете динамически создать промежуточную страницу, содержащую форму с сообщениями и JS-кодом, который немедленно отправляет форму (вместе с кнопкой или ссылкой для отправки формы, если у пользователя нет JS).

Затем вы пересылаете пользователя на эту промежуточную страницу и пересылаете пользователя на целевую страницу с неповрежденными данными #_POST. Если промежуточная страница не имеет видимого содержимого, пользователь не будет ее там знать.

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

Ответ 5

Возможно, возможно, вы можете попробовать это так:

header("Status: 200");
header("Location: new-location.php");
exit;