2010-11-23 3 views
0

J'essaie d'extraire des données d'un forum privé. J'ai créé un script PHP qui utilise CURL pour se connecter, et DOMDocument pour extraire les données de la page.PHP Curl pour se connecter à un forum mais ne restera pas connecté?

Je me suis connecté avec succès avec le script, mais il agit comme si je ne me suis jamais connecté dès que je tente de charger une page web en utilisant loadHTMLFile(). Quelqu'un m'a dit que je devrais peut-être envoyer des en-têtes de cookie? Mais je n'ai aucune idée de comment faire cela ou si c'est même nécessaire.

Vous avez des idées?

<? 
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. 

Répondre

1

Je crois que vous devez utiliser pelotonner chaque fois après pour aller chercher vos pages html, vous utilisez boucle la première fois pour se connecter, ce qui permet d'économiser le cookie pour être connecté, dans sa boîte à biscuits. Ainsi, la prochaine fois que vous utiliserez curl (avec le même cookie jar), il affichera les données du cookie et le serveur saura que vous êtes connecté. Passer à l'utilisation de domdocument ne va pas utiliser le cookie jar de curl pour vous dire connecté

Vous aurez besoin d'utiliser curl pour récupérer le code HTML, alors vous pouvez peut-être passer le code HTML à un domdocument et l'analyser.

+0

Merci beaucoup pour votre aide. J'ai réussi. –

Questions connexes