2014-12-24 2 views
0

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

Проблема в том, что соединение не работает, и я получаю пустую страницу, за исключением случаев, когда я регистрирую свою учетную запись с любого другого устройства, прежде чем пытаться подключиться к моей программе. То есть, если, например, сегодня утром я обычно обращался к моей учетной записи (и выходил из системы), мой код будет работать, но завтра это не произойдет, если я не получу первый доступ к моей учетной записи.

Я изучаю процесс подключения с помощью инструмента разработки Chrome снова и снова, и я не знаю, где я ошибаюсь. Единственное, что у меня есть, это то, что первая страница, загруженная переданными учетными данными, возвращает 302 НАЙДЕН, а перенаправление не применяется cURL, но первая страница возвращает файл cookie связи, который, как я полагал, был единственным, что нужно было правильно входить в систему , Я думаю, может быть включение созданных куков в базу данных сервера должно быть сделано на второй странице для того, чтобы этот один будет принят следующим ...

Вот мой код:

$lien = 'https://isa.epfl.ch/imoniteur_ISAP/!logins.tryToConnect'; 

$login = $_POST['login']; 
$password = $_POST['passwd']; 
$postfields = array(
    'ww_x_username' => $login, 
    'ww_x_password' => $password, 
    'ww_x_urlAppelant' => '' 
); 

$path_cookie = 'cookie.txt'; 
if (!file_exists(realpath($path_cookie))) touch($path_cookie); 

$curl = curl_init(); 

curl_setopt($curl, CURLOPT_URL, $lien); 
curl_setopt($curl, CURLOPT_COOKIESESSION, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields); 
curl_setopt($curl, CURLOPT_COOKIEJAR, realpath($path_cookie)); 
curl_setopt($curl, CURLOPT_AUTOREFERER, true); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
$host = array(
    0 => 'Host: '. parse_url("http://isa.epfl.ch", PHP_URL_HOST), 
    1 => 'Referer: https://isa.epfl.ch/imoniteur_ISAP/!logins.htm', 
    2 => 'Origin: https://isa.epfl.ch' 
); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $host); 
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'); 

$return = curl_exec($curl); 
curl_close($curl); 
unset($curl); 

Я надеюсь, кто-то может мне помочь! Я буду рад дать дополнительные указания в случае необходимости!
Thanks
Romain

ответ

0

Я решил проблему! Это было довольно просто, возможно, так просто, что я раньше не видел решения ... Если кто-то хочет больше объяснений, я буду рад дать его.

Смежные вопросы