Как я могу предотвратить перенаправление с помощью PHP cURL - PullRequest
9 голосов
/ 06 августа 2011

Я разрабатываю форму, в которой требуется представить собранные данные на сторонний веб-сайт в виде: http://www.domain.com/page?key=value&key2=value2

Я решил использовать 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);

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

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

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

Ответы [ 3 ]

5 голосов
/ 06 августа 2011

Попробуйте это:

  <?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);
?>
5 голосов
/ 06 августа 2011
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

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

и

curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);

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

0 голосов
/ 10 мая 2019

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...