Как предотвратить перенаправление с помощью PHP cURL

Вопрос:Я разрабатываю форму, в которой требуется отправить собранные данные на сторонний веб-сайт в виде: Я решил использовать cURL, поскольку не нашел альтернативы, которая меня убедила. Проблема, которую я запускаю, заключается в том, что после отправки формы выполняется cURL, но я перенаправлен в указанный мной домен. Вместо этого я хочу перенаправить пользователя на страницу подтверждения

Вопрос:

Я разрабатываю форму, в которой требуется отправить собранные данные на сторонний веб-сайт в виде:

Я решил использовать cURL, поскольку не нашел альтернативы, которая меня убедила.

Проблема, которую я запускаю, заключается в том, что после отправки формы выполняется cURL, но я перенаправлен в указанный мной домен. Вместо этого я хочу перенаправить пользователя на страницу подтверждения в моем домене, а не на сторонний веб-сайт.

Вот пример кода, который я использую:

$URL=»otherserver.domain.com»; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,»http://$URL»); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, «key=value2&key2=value2&key3=value3»); curl_exec($ch); $info = curl_getinfo($ch); curl_close ($ch);

Как я могу предотвратить перенаправление на othererver.domain.com?

Пожалуйста, не стесняйтесь, дайте мне знать, если вы думаете, что вместо использования cURL существует лучший способ отправить данные на сторонний веб-сайт.

Спасибо всем заранее

Лучший ответ:

Попробуйте следующее:

<?php $url = «http://***..»; $ch = curl_init($url); $opts = array(CURLOPT_RETURNTRANSFER => 1, CURLOP_HEADER => 1, CURLOPT_FOLLOWLOCATION => 0, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => «foo=ba»); curl_setopt_array($ch, $opts); echo curl_exec($ch); ?> Ответ №1curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

не будет выводить результат

и

curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);

игнорирует перенаправления (поэтому, когда http://google.com/ передает вам https://google.us/, это проигнорирует его)

Ответ №2

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

Например, вместо:

$lastResponse = curl_exec( $ch ); echo $lastResponse;

Использование:

$lastResponse = curl_exec( $ch ); echo htmlentities($lastResponse ,ENT_QUOTES);

Это решило проблему в моем случае, потому что на ответ, который я получил, было перенаправление JS.

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

Оцените статью
Добавить комментарий