具体的cURL用法和奇怪的bug

时间:2014-12-24 16:44:09

标签: php curl cookies http-status-code-302

我使用cURL和PHP连接到我的大学管理网站,以提供一个移动用户友好的界面,以便访问我的信息,如成绩。所以基本上我只有一个表单,我在其中放入登录信息,我的代码使用这些凭据连接到管理网站,并返回我以移动方式显示的通缉信息。

问题是连接不起作用,在尝试连接我的程序之前,当我从任何其他设备登录我的帐户时,我得到一个空白页。也就是说,例如,如果今天早上我正常访问我的帐户(并从那时起注销),我的代码将会正常工作,但明天它会赢,除非我首先访问我的帐户。

我一次又一次地使用Chrome的开发工具研究连接过程,我不知道我错在哪里。我唯一的怀疑是加载了凭证的第一页返回302 FOUND并且cURL没有应用重定向,但是第一页返回了一个连接cookie,我认为这是唯一需要正确登录的东西。我想也许将创建的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);

我希望有人可以帮助我!如果有必要的话,我会乐意给予更多的精确度! 由于
罗曼

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题!这很简单,也许很简单,我之前没有看到解决方案...... 如果有人想要更多解释,我会很乐意给它。