Intereting Posts
Postgresql и PHP: является ли currval эффективным способом получения последней вставленной строки в многопользовательском приложении? Каковы правильные разрешения для папки для загрузки с PHP / Apache? Как заменить определенный символ на определенный символ для него в строке, используя php? PHP: метод конструктора классов подключения к базе данных Используя регулярные выражения для извлечения первого источника изображения из html-кодов? preg_match_all () : Неизвестный модификатор ']' Использовать кеширование браузера, как на apache или .htaccess? ZF2 – Генерирование URL из маршрута Как создать абсолютный URL-адрес с раннего / автоматического загрузки маршрутизатора Symfony 3 Использование PDO без привязки xdebug Тайм-аут подключения к клиенту. :-( используя phpstorm 7.1.3 / vagrant / virtualbox / magento Десятичный тип в php Как сортировка работает в новом расширении PECL mongodb? Остановить людей от угона системы голосования с использованием PHP? Перенаправление на вход в систему, когда пользователь не вошел в систему, или пользователь пытается получить доступ к странице напрямую с URL-адреса, используя angularjs

Вход PHP Curl с перенаправлением не работает

У меня есть следующий скрипт PHP, который должен получить содержимое страницы, которая находится за формой входа.

Он отлично работает на моем сервере localhost, но он не работает на хосте (GoFreeServe). Я получаю пустой ответ. ($ postResult пуст).

Автор сценария:

$login_url = 'http://senioren.voetbal.nl/clubs_comp/mijn-teams/competitie/173299/OWIOS-9-zaterdag?destination=clubs_comp%2Fmijn-teams%2Fcompetitie%2F173299%2FOWIOS-9-zaterdag'; $data = file_get_contents("http://voetbal.nl/login/menu/data"); $parts = explode('name=\"form_build_id\" id=\"',$data,2); $post_data = 'name=****&pass=****&op=Inloggen&form_build_id='.substr($parts[1],0,37).'&form_id=login_block_login_form'; $ch = curl_init(); $agent = $_SERVER["HTTP_USER_AGENT"]; curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_REFERER, $login_url); curl_setopt($ch, CURLOPT_URL, $login_url ); curl_setopt($ch, CURLOPT_POST, 1 ); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); $postResult = curl_exec($ch); 

curl_getinfo Localhost

 [url] => http://senioren.voetbal.nl/clubs_comp/mijn-teams/competitie/173299/OWIOS-9-zaterdag [content_type] => text/html; charset=utf-8 [http_code] => 200 [header_size] => 557 [request_size] => 503 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 2.668 [namelookup_time] => 0 [connect_time] => 0.016 [pretransfer_time] => 0.016 [size_upload] => 57 [size_download] => 173015 [speed_download] => 64848 [speed_upload] => 21 [download_content_length] => 173015 [upload_content_length] => 57 [starttransfer_time] => 1.014 [redirect_time] => 0 [certinfo] => Array ( ) [redirect_url] => 

curl_getinfo Host

 Array ( [url] => http://senioren.voetbal.nl/clubs_comp/mijn-teams/competitie/173299/OWIOS-9-zaterdag [content_type] => text/html; charset=utf-8 [http_code] => 302 [header_size] => 1125 [request_size] => 361 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 1.001361 [namelookup_time] => 0.000638 [connect_time] => 0.094666 [pretransfer_time] => 0.094712 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => 0 [upload_content_length] => 0 [starttransfer_time] => 1.001199 [redirect_time] => 0 ) 

Хост не находится в safe_mode и установлен CURL. Также cookie.txt chmodded до 777. PHPInfo с хоста можно найти здесь: http://phpinfo.byethost11.com/index.php

Вы знаете, почему я получаю http_code 200 на моем Localhost и http_code из 302 на хосте?

Спасибо!

EDIT: после включения отчета об ошибках (! @! #! $) На странице появилась следующая ошибка:

 Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /test2.php on line 39 

Related of "Вход PHP Curl с перенаправлением не работает"

Я решил это, сначала проверив, установлен ли open_basedir. Если это так: сценарий сначала выполняет curl_exec (), чтобы установить куки, а затем снова выполняет его, чтобы получить скрытую страницу. Параметры типа op и form_build_id не используются вообще: P

Код:

 if (ini_get('open_basedir') == '') { curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); $postResult = curl_exec($ch); curl_close($ch); } else { curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_exec($ch); $postResult = curl_exec($ch); } 

Попробуйте добавить опцию FOLLOWLOCATION, чтобы она соответствовала получателю:

 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

form_build_id и CURLOPT_REFERER отсутствует. Вы должны отправить что-то вроде

  name=user&pass=pass&op=Inloggen&form_build_id=form-fc3c69bda9d4a9a4a53e70f836ece383&form_id=login_block_login_form