首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP Curl登录论坛,但不会保持登录状态?

PHP Curl登录论坛,但不会保持登录状态?
EN

Stack Overflow用户
提问于 2010-11-23 11:53:31
回答 1查看 1K关注 0票数 0

我正在尝试从一个私人论坛中提取一些数据。我创建了一个PHP脚本,它使用CURL登录,使用DOMDocument提取页面数据。

我已经成功地使用脚本登录了,但是当我尝试使用loadHTMLFile()加载网页时,它就好像我从来没有登录过一样。

有人告诉我,我可能需要发送cookie报头?但我不知道该怎么做,也不知道这是否有必要。

有谁有什么想法吗?

代码语言:javascript
复制
    <?
function vBulletinLogin($user, $pass)
{
       $md5Pass = md5($pass);
       $data = "do=login&url=index.php&vb_login_md5password=$md5Pass&vb_login_username=$user&cookieuser=1";
       $ch = curl_init();

        curl_setopt ($ch, CURLOPT_URL, "****"); // replace ** with tt
        curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
        curl_setopt ($ch, CURLOPT_TIMEOUT, '10');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
        curl_setopt($ch, CURLOPT_COOKIEJAR, "/public_html/phpcrawl/cookies.txt");
        curl_setopt($ch, CURLOPT_COOKIEFILE, "/public_html/phpcrawl/cookies.txt");
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_REFERRER, "****"); 
        $store = curl_exec ($ch);
        echo $store; <- **this shows that I have successully logged in, it gives me a welcome message**
        print_r($_COOKIE);

        curl_close($ch);

       $pos = strpos($store, "Thank you for logging in");
       if($pos === FALSE) RETURN 0;
       else RETURN 1;

}
if(vBulletinLogin("****","****")) echo "Logged In";
else echo "Failed to Login check User / Pass";

$url="http://texturl.com";
echo $url."<br>";

//get new HTML document
$html = new DOMDocument(); 

$html->loadHTMLFile($url);
print $html->saveHTML(); <- shows a login and password box saying I am not logged in. 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-23 11:58:44

我相信你每次都要使用curl来获取你的html页面,你第一次登录时使用curl,这会将cookie保存到它的cookie jar中。这样,下次您使用curl (使用相同的cookie jar)时,它将发布cookie数据,服务器就会知道您已登录。切换到使用domdocument,我不相信会使用curl的cookie jar来表明您已登录。

您需要使用curl来获取html,然后您可以将html传递给domdocument并对其进行解析。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4252626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档