Вопрос:
Я разрабатываю форму, в которой требуется отправить собранные данные на сторонний веб-сайт в виде:
Я решил использовать 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.
Я знаю, что это старый вопрос, но это первый результат онлайн, так что, надеюсь, это кому-нибудь поможет, как и мне, когда я нашел его на форуме после пары часов поиска.