Я пытаюсь пересылать данные с одной страницы на другую без использования cURL, возможно ли это?
На данный момент я попытался
header('HTTP/1.1 307 Temporary Redirect'); header('Location: new-location.php');
Это работает красиво, но дает глупую всплывающее окно, любые другие методы?
Я пробовал использовать завиток, но ничего не происходит, не уверен, что он включен на моем сервере!
Я думаю, что следующее – единственный возможный способ добиться этого, вместо перенаправления с заголовком местоположения отправьте этот 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>
Вы можете использовать следующие данные для пересылки данных на другой 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);
Если я правильно понимаю проблему и работаю на сервере Apache с включенным mod_rewrite
, вы можете использовать переписывание URL. Вы можете установить метод запроса как условие и переписать исходный URL на альтернативный:
RewriteCond %{REQUEST_METHOD} ^POST RewriteRule ^index.php new-location.php [L]
Использование cURL или fopen () являются общими предложениями, но фактически не «пересылает» пользователя на другую страницу.
Чтобы по-настоящему перенаправить пользователя на другую страницу с неповрежденными данными $ _POST, вы можете динамически создать промежуточную страницу, содержащую форму с почтовыми данными и JS-кодом, который немедленно отправляет форму (вместе с кнопкой или ссылкой для отправки формы, если у пользователя нет JS).
Затем вы пересылаете пользователя на эту промежуточную страницу и пересылаете пользователя на целевую страницу с неповрежденными данными #_POST. Если на промежуточной странице нет видимого содержимого, пользователь не будет знать, что он есть.
Целевая страница может отделить связь от промежуточной страницы, чтобы не было возможности повторной отправки.
Может быть, может быть, вы можете попробовать это так:
header("Status: 200"); header("Location: new-location.php"); exit;