drmeu26880 2014-04-06 21:51
浏览 44

使用curl登录到服务器端的表单,然后将cookie带回浏览器

I have the following code which is doing an HTTP/POST to log into a web form. The cookies returned by the site are stored in the file cookies.txt.

$ch = curl_init();

$opts = array(
    CURLOPT_URL=> $projectUrl,
    CURLOPT_POST=> true,
    CURLOPT_FOLLOWLOCATION=> true,
    CURLOPT_RETURNTRANSFER=> true,
    CURLOPT_COOKIEJAR=> 'cookies.txt',
    CURLOPT_POSTFIELDS=> http_build_query($data),
);

curl_setopt_array($ch, $opts);

$ret = curl_exec($ch);

curl_close($ch);

I've confirmed that the login is successful (because the value of $ret is the content of the page behind the form.

Next, I have a little bit of code which parses the cookie file written by curl and does a set_cookie for each cookie.

As far as I can tell, this is always just the PHPSESSION cookie.

$cookies = parseCookieFile('cookies.txt');
foreach($cookies as $c) {
    if(!setcookie($c["name"], $c["value"], $c["expires"], $c["path"], $c["domain"], $c["secure"])) {
        echo "ERROR: Could not write cookie {$c["name"]}<br />";
    }
}

My hope was, having done all this on the backend, I'd be able to browse to the site I logged into and it would detect the session cookies and pass me on through.

Unfortunately, this is not the case. I just end up back at the login form.

Is there some stupid/obvious reason why this isn't going to work?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
    • ¥20 matlab yalmip kkt 双层优化问题