aide sur l'utilisation du curl

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : aide sur l'utilisation du curl

Re: aide sur l'utilisation du curl

par simonakro » 07 sept. 2010, 18:47

Merci beaucoup
et c'est bon j'ai réussi à séparer les fonctions .

Re: aide sur l'utilisation du curl

par stealth35 » 07 sept. 2010, 16:40

pour pas que le premier s'affiche tu fais
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

Re: aide sur l'utilisation du curl

par simonakro » 07 sept. 2010, 16:20

Merci beaucoup j'ai réussi , mais j'ai 2 petits problèmes :(
l'or de l'authentification , la page s'affiche "vous ête connecter " alors que je fait pas d'echo ni rien , es que je peut rendre ça invisible ?
je n'arrive pas à séparer mon code en 2 fonction , une login et lautre read qui permet de lire une page , quand je le fait la session n'est plu reconnu dans la 2ème fonction .

Voici le code
<?php

$slurl = "http://exeple.com/login.php";

$post_fields = array(
			'username'	=> "admin",
			'password'	=> "admin"
			
			
			);
			
			

login($slurl,$post_fields);




function login($lurl,$postfields)
{

$header_array[0] = "Keep-Alive: 300";
$header_array[1] = "Connection: Keep-Alive";
$header_array[2] = "Expect:";
$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"; 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$lurl);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header_array);
curl_setopt($ch, CURLOPT_USERAGENT,$agent);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);
curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');
$result= curl_exec($ch);


if ($result === FALSE) {
    die(curl_error());
}

// la fonction read qui permet de lire une page après authentification

curl_setopt($ch, CURLOPT_URL,"http://exemple.com/id=2345");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
$ret = curl_exec($ch);
if ($ret === FALSE) {
    die(curl_error());}
	echo $ret;
    fwrite(fopen("text.html","w"),$ret);

}


?>
 
Merci énormément !

Re: aide sur l'utilisation du curl

par stealth35 » 31 août 2010, 03:13

il faut téléchargé ton fichier dans la même session curl (donc pas avec fopen deja, fopen ne partage rien avec curl)

aide sur l'utilisation du curl

par simonakro » 28 août 2010, 04:58

Bonsoir tout le monde ,
je veut accéder avec php à une page qui nécessite une authentification et télécharger son code htlm ( fopen("http://exemple.com/id=2345") ) .
Avec curl j'ai réussis à faire l'authentification sur la page http://exeple.com/login.php et le fichier cookie.txt est créer et rempli mais après je trouve pas comment utiliser le cookie , après l'exécution de curl , j'ai fait un fopen mais je télécharge la page qui me dit que je doit être connecter pour voir la page ...


voici le code que j'ai écrit :

function login($lurl,$postfields)
{

$header_array[0] = "Keep-Alive: 300";
$header_array[1] = "Connection: Keep-Alive";
$header_array[2] = "Expect:";
$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"; 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$lurl);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header_array);
curl_setopt($ch, CURLOPT_USERAGENT,$agent);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');
$result= curl_exec($ch);
curl_close ($ch);

$hostfile = fopen("http://exemple.com/id=2345", 'r');
$fh = fopen("out.html", 'w');

while (!feof($hostfile)) {
    $output = fread($hostfile, 8192);
    fwrite($fh, $output);
}
   
fclose($hostfile);
fclose($fh);

Merci d'avance pour votre aide