Я использую cURL с PHP для подключения к своему веб-сайту администратора университета, чтобы обеспечить удобный для пользователя интерфейс для доступа к моей информации, такой как оценки. Таким образом, в основном у меня есть форма, в которую я помещаю информацию для входа в систему, и мой код использует эти учетные данные для подключения к веб-сайту администратора и возвращает требуемую информацию, которую я показываю мобильным способом.
Проблема в том, что соединение не работает, и я получаю пустую страницу, когда я вхожу в свою учетную запись с любого другого устройства, прежде чем пытаться соединиться с моей программой. То есть, если, например, сегодня утром я получил доступ к своей учетной записи в обычном режиме (и с тех пор вышел из системы), мой код будет работать, но завтра не получится, если я сначала не получу доступ к своей учетной записи.
Я снова и снова изучал процесс соединения с инструментом разработки 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);
Я надеюсь, что кто-то может мне помочь! Я буду рад дать больше точности в случае необходимости!
Спасибо
Ромен
Я решил проблему! Это было довольно просто, может быть, так просто, что я не видел решения раньше …
Если кто-то хочет больше объяснений, я буду рад дать это.
Других решений пока нет …