Script de test Curl

Eléphanteau du PHP | 10 Messages

18 juil. 2014, 17:13

Bonjour,

Je suis en train de faire un petit script de test qui me servira dans un script plus "important" sur lequel je travaille.
Là j'essaie simplement de me connecter dans Facebook et d'afficher la page d'accueil.
Souci: j'ai un problème dès le début du script.

Le voici:
<?php
$lien = 'http://www.facebook.com/';
$postfields = array(
	'email' => 'MON_MAIL',
	'pass' => 'MON_PASS',
);
$path_cookie = 'connexion_facebook_temporaire.txt';
if (!file_exists(realpath($path_cookie))) touch($path_cookie);

$curl = curl_init();
if ($curl==false) {echo "<br>ERREUR curl_init : ".curl_error($curl); exit();}

curl_setopt($curl, CURLOPT_URL, $lien);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($curl, CURLOPT_COOKIEJAR, realpath($path_cookie));

$return = curl_exec($curl);
if ($return==false) {echo "<br>ERREUR curl_exec : ".curl_error($curl); exit();}
else {echo "<br>Exécution Curl OK";}
curl_close($curl);
Je n'ai pas mis la suite du code car ce que j'obtiens c'est:
ERREUR curl_exec :

En gros je vois qu'il y a une erreur suite à l'appel de curl_exec mais je ne sais pas ce que c'est...

Je ne comprends pas ce qui se passe, ça me semble pourtant simple... A votre avis, quel peut-être le souci ?
Modifié en dernier par moogli le 19 juil. 2014, 14:22, modifié 1 fois.
Raison : correction bbcode (code => php)

ViPHP
xTG
ViPHP | 7331 Messages

18 juil. 2014, 17:21

Est-ce que curl est activé sur ton serveur ? (tu peux le voir avec la commande phpinfo())

Eléphanteau du PHP | 10 Messages

18 juil. 2014, 17:34

Oui c'est bien activé.
D'ailleurs je pense que j'aurais eu une erreur dès curl_init si ce n'avait pas été le cas.
Mais j'ai quand même vérifié avec phpinfo et oui, c'est activé.
Pour info, j'utilise wamp - je ne sais pas si ça peut avoir un rapport avec le problème que je rencontre...

ViPHP
xTG
ViPHP | 7331 Messages

18 juil. 2014, 18:34

Et curl_errno te retourne-t-elle 0 ?

Eléphanteau du PHP | 10 Messages

12 août 2014, 00:42

Non, en fait curl_error ne retourne pas 0, la fonction semble ne rien retourner du tout - puisque rien ne s'affiche...

Mon code est pourtant hyper basique, je ne comprends pas ce qui peut bien se passer, ça me prend la tête... Il n'y aurait pas un spécialiste curl dans le coin ?! ;-)

Eléphant du PHP | 113 Messages

12 août 2014, 01:18

Je découvre curl, mais en regardant la doc attentivement, parfois il y a des fourberies :? (c'est déjà arriver pour ma part :mrgreen: )

Petit nouveau ! | 8 Messages

12 août 2014, 10:41

tu es sur que tu as bien activé curl sur le serveur?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 août 2014, 17:27

Salut,

A ta place je M'orienterais vers l'api developer Facebook https://developers.facebook.com/docs

Il y a tous ce qu'il faut la dedans normalement.

Pour le reste est çe que le niveau d'erreur est bien a E_ALL (error_reporting).
Est ce qu'il y a des erreurs dans les fichiers de logs de httpd ou php ?
Peux tu faire ce genre de chose sur une autre page (par exemple sur ton serveur local histoire de limiter le problème de fire wall).

Tu peux aussi "snifer" les paquets réseau pour voir ce qui passe (par exemple avec un outil colle wireshark).


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 10 Messages

13 août 2014, 15:37

En fait j'utilise l'API de Facebook dans mon script principal, mais le problème c'est que FB ne permet plus de faire ce que je veux faire - pourtant rien d'extraordinaire hein - alors du coup j'essaie d'une autre façon.

Je vais essayer en effet avec une autre page, pour voir ce qui se passe.
Merci.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 août 2014, 11:34

Bonjour,

Pour t'aider à débuguer, mon conseil est que tu installes Wireshark sur ta machine pour voir ce qui se passe au niveau des appels réseau car sans messages d'erreurs ni traces réseau, c'est difficile de trouver le problème. C'est comme un médecin à qui tu dirais que tu es malade mais sans réussir à donner de symptômes ;)

A vu de nez pour ton problème, je dirai que tu devrais activer CURLOPT_FOLLOWLOCATION car il me semble que Facebook force une redirection en https par défaut.

Par contre pour avoir déjà essayé de développer un système similaire, je te déconseille fortement de faire du curl sur Facebook car c'est extrêmement complexe et FB fait tout pour l'empêcher. Notamment si tu n'arrives pas à reproduire à la perfection ta machine actuelle (avec cookie et autres), il va penser que tu es sur une nouvelle machine et va par mesure de sécurité te proposer des photos de tes amis pour valider que c'est bien toi et là, c'est mort avec Curl.
Quand tout le reste a échoué, lisez le mode d'emploi...