problème extension 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 : problème extension cURL

par yuuzhantar » 09 mai 2008, 21:00

désolé mais personne ne répondais dans php5
alors j'ai été dans le forum le plus visité

sinon personne ne connait-il cURL ?

merci

par zeus » 08 mai 2008, 13:08

Modération :
yuuzhantar, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.

par yuuzhantar » 08 mai 2008, 10:47

slt

en fait le problème est que j'ai toujours le cookie mais que m'a session disparait

pour résumer mon code,
1- je regarde si la page existe
2- j'envoie une requête get pour aller sur la page d'accueil
3- j'envoie une requête post pour simuler le formulaire de connexion , j'arrive sur l'espace membre
4- j'envoie une requête get pour aller sur l'espace membre mais la je suis déconnecté

si j'ai mis tout mon code c'est par ce que d'habitude on me le demande en entier

merci

par Hywan » 07 mai 2008, 23:38

Hey :),

Je note que tu n'as pas de réponses et j'ose te faire une suggestion. Essaye de synthétiser un peu ton problème. J'imagine que c'est pareil pour mes collègues, quand on voit tout ton code, moi j'ai fais une chose : je suis allé à la fin du message sans rien lire. Il y en a un peu beaucoup (voire beaucoup trop). On lit beaucoup de code (et peu de français), alors mâche nous un peu le problème et je suis sûr qu'on va plus facilement s'y attarder :).

Synthétiser t'aiderait sûrement à reformuler ton problème et donc à trouver un début de solution par toi-même. N'oublies pas que ce qui se conçoit s'énonce clairement, et les mots pour le dire viennent aisément.

Ce qu'il faut comprendre c'est que je suis trop fatigué pour dépiauter ton code et que j'apprécierais que tu poses une question clair au lieu de balancer 300 lignes de code ;-).
Dans ton dernier exemple, tu nous donnes une suite de tests ; c'est un excellent réflexe ! Tu compares tes données etc., mais ... ça correspond à quoi ? C'est sûrement clair pour toi, mais pas pour moi :).

problème extension cURL

par yuuzhantar » 06 mai 2008, 19:33

Bonjour

j'ai un petit problème avec cURL pour maintenir une session ouverte
j'arrive a envoyer des requêtes get et post avec succès pour me connecter à un espace membre

mais je n'arrive pas à continuer à naviguer dans l'espace membre, ma session est fermée automatiquement

a priori celà ne vient pas du site car j'ai essayé sur deux sites différents qui utilisent des cookie pour envoyer l'identifiant de session et j'ai bien le cookie sur l'hébergement

voici mon code :
function requete_get($url,$cookie='r',$referer='')
	{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
	//curl_setopt($ch, CURLOPT_HTTPHEADER, header_http());
	curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
	//curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14');
	curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
	if($cookie=='w')
		{
		curl_setopt($ch, CURLOPT_COOKIEJAR, realpath('cookie.txt'));
		}
	elseif($cookie=='r')
		{
		curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
		}
	curl_setopt($ch, CURLOPT_REFERER, $referer);
	//curl_setopt($ch, CURLOPT_USERPWD, 'user:mdp');
	$ret = curl_exec($ch);
	if ($ret === FALSE) 
		{
		echo '<br>ERREUR CURL : '.curl_error();
		return false;
		}
	else
		{
		curl_close($ch);
		return $ret;
		}
	}
function requete_post($url,$array,$cookie='r',$referer='')
	{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
	curl_setopt($ch, CURLOPT_HTTPGET, FALSE);
	curl_setopt($ch, CURLOPT_POST, TRUE);
	curl_setopt($ch, CURLOPT_POSTFIELDS,$array);
	//curl_setopt($ch, CURLOPT_HTTPHEADER, header_http());
	//curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14');
	curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
	if($cookie=='w')
		{
		curl_setopt($ch, CURLOPT_COOKIEJAR, realpath('cookie.txt'));
		}
	elseif($cookie=='r')
		{
		curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
		}
	curl_setopt($ch, CURLOPT_REFERER, $referer);
	$ret = curl_exec($ch);
	if ($ret === FALSE) 
		{
		echo '<br>ERREUR CURL : '.curl_error();
		return false;
		}
	else
		{
		curl_close($ch);
		return $ret;
		}
	}
/********************************************
fonction qui ouvre un fichier selon le mode choisit et créé un pointeur
********************************************/	
function fichier_ouvrir($fichier_nom,$mode)
	{
	if(($fichier_pointeur=@fopen($fichier_nom,$mode))!=false)
		{
		return $fichier_pointeur;
		}
	else
		{
		return false;
		}
	}

/********************************************
fonction qui ferme un pointeur
********************************************/	
function fichier_fermer($fichier_pointeur)
	{
	if(($fermeture=@fclose($fichier_pointeur))!=false)
		{
		return true;
		}
	else
		{
		return false;
		}
	}

/********************************************
fonction qui lit les lignes du fichier à partir de la position du pointeur
et retourne un tableau : une case pour chaque ligne
********************************************/	
function fichier_lire($fichier_pointeur)
	{
	$retour=array();
	while(!feof($fichier_pointeur))
		{
		if(($tmp=@fgets($fichier_pointeur))!=false)
			{
			$retour[]=$tmp;
			}
		}
	return $retour;
	}
function lire_cookie()
	{
	$fich=fichier_ouvrir('cookie.txt','r');
	if($fich==false)
		{
		echo'<br>erreur ouverture cookie';
		}
	else
		{
		$cookie=fichier_lire($fich);
		fichier_fermer($fich);
		echo'<br>---- cookie ----<br>';
		while (list($clee, $valeur) = each($cookie))
			{
			echo'<br>::: '.$valeur;
			}
		}
	}
if(verification_page('xxxxxxx'))
	{
	$data=requete_get('xxxxxxx');
	preg_replace('`\<head\>.*\</head\>`','',$data);
	echo'<hr><br><textarea style="height:100px; width:100%">'.$data.'</textarea>';
lire_cookie();

	$data2=requete_post('xxxxxxx/index.php?page=connect2',
		array('mail'=>'xxxxxxx',
		'pass'=>'xxxxxxx'),'w','xxxxxxx/index.php?page=accueil');
	preg_replace('`<head>.*</head>`','',$data2);
	echo'<hr><br><textarea style="height:100px; width:100%">'.$data2.'</textarea>';
lire_cookie();
	
	$data3=requete_get('xxxxxxx/index.php?page=moncompte','r');
	preg_replace('`\<head\>.*\</head\>`','',$data3);
	echo'<hr><br><textarea style="height:100px; width:100%">'.$data3.'</textarea>';
lire_cookie();
	
	if(preg_match('`/index\.php\?page=deconnect`',$data3))
		{
		echo'<br>connecté';
		}
	else
		{
		echo'<br>déconnecté';
		}
	}
et voici le résultat affiché à l'écran :
---- cookie ----

::: # Netscape HTTP Cookie File
::: # http://www.netscape.com/newsref/std/cookie_spec.html
::: # This file was generated by libcurl! Edit at your own risk.
:::
::: www.xxx.com FALSE / FALSE 0 PHPSESSID 4fef5b69365f46caf10508466b8fea13

---- cookie ----

::: # Netscape HTTP Cookie File
::: # http://www.netscape.com/newsref/std/cookie_spec.html
::: # This file was generated by libcurl! Edit at your own risk.
:::
::: www.xxxxxx.com FALSE / FALSE 0 PHPSESSID 57f8db16076f5e59ddd53f6c6dc94d3d

---- cookie ----

::: # Netscape HTTP Cookie File
::: # http://www.netscape.com/newsref/std/cookie_spec.html
::: # This file was generated by libcurl! Edit at your own risk.
:::
::: www.xxx.com FALSE / FALSE 0 PHPSESSID 57f8db16076f5e59ddd53f6c6dc94d3d
déconnecté
voyez vous quelque chose qui ne va pas dans mon code ?
personnellement j'y suis depuis hier midi et je ne trouve pas

merci