Aller au contenu

syntaxe CURL


lorik

Sujets conseillés

Bonjour,

Je patine avec une ligne de code curl :

Je veux executer un script distant avec curl (pas de problème à priori, j'utilise déja, sans trop comprendre, un bout de code qui marche bien).

Mais je veux aussi récuperer le résultat du script distant. Et ça c'est nouveau pour moi.

donc dans le script distant, je termine avec

/* mon code à executer */
return $mavariablearecuperer;

Et dans mon script appellant, j'utilise curl :

$urlscript="http://www.site.fr/monscript.php";
$ch = curl_init();
// Définition de l'URL et autres options appropriées
curl_setopt($ch, CURLOPT_URL, $urlscript);
curl_setopt($ch, CURLOPT_HEADER, false);
// Récupération de l'URL et passage au navigateur
$result=curl_exec($ch);
// Fermeture de la ressource CURL et libération des ressources systèmes
curl_close($ch);

echo "resultat=".$result;

Le problème est que le code ci-dessus me renvoie $result=1, ce qui signifie que ça s'est bien passé, (ce qui est déja ça), mais pas $mavariablearecuperer.

J'ai vu dans une doc qu'il faut ajouter une option CURLOPT_RETURNTRANSFER à curl_setopt, avec TRUE, mais je ne vois pas la syntaxe de l'instruction...

Et je ne suis pas sur que mon return $mavariablearecuperer soit très indiqué dans ce cas.

Merci de votre coup de main.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Tout simplement avec:

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

appelé avant ton curl_exec()

Il faut aussi que ton code distant imprime les valeurs à retourner... donc print ou echo plutôt que return() ;

;) Dan

Lien vers le commentaire
Partager sur d’autres sites

Saint Dan veille toujours sur nous ! merci, merci....

Mais là, il y a un problème :

  curl_setopt($ch, CURLOPT_URL, $cookie);
 curl_setopt($ch, CURLOPT_HEADER, false);
 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // pour que le script renvoi la variable
 // Récupération de l'URL et passage au navigateur
 $result=curl_exec($ch);

J'ai toujours mon renvoie de 1, et pas $mavariable...

Lien vers le commentaire
Partager sur d’autres sites

Il faut aussi que ton code distant imprime les valeurs à retourner... donc print ou echo plutôt que return() ;

As-tu changé ton return() en print ou echo ?

Si le programme appelé n'affiche rien, il ne renverra rien à curl_exec() ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

Bonjour, sur les conseils de lorki, je viens vous demander de l'aide :D

Voila sur un site1.com j'ai créé des cookies. Et j'aimerai que, sur le site2.fr, je récupère les données qui sont dans le cookie créé par site1.com...

Apparement, je peux utiliser Curl(c'est installé sur le serveur) :) Quelqu un peut me donner un cours accélérer de curl et de l'utilisation des cookies avec curl? ;)

Merci

Lien vers le commentaire
Partager sur d’autres sites

Coucou trihanhcie,

Je me suis mal fais comprendre dans le MP : Il n'est pas question de récuperer le contenu du cookie ! Pas possible !

Seulement de récuperer un RESULTAT d'un script distant, ce script distant se chargeant d'interroger sa base locale.

tu devrais effectivement trouver de la matiere à reflexion dans ce post.

Lien vers le commentaire
Partager sur d’autres sites

Oups... c'est moi qui ai mal lu ton mp lorki dsl... :blush:

Ca me pose un problème ca ... Mais dans ce cas, je ne vois pas tellement l'intéret de curl en fait pour tout te dire... C'est pour ne pas utiliser les formulaires?

Si c'est juste pour récupérer des informations sur le site2 qui sont stockées dans une base de donnée du site1, pourquoi ne pas utiliser un simple post ?

En fait, pour mon problème, toute la base de donnée est bien sur le site1. Le site2, tout ce qu il doit faire, c'est faire tourner en fond un script du site1 qui utilise des cookies qui sont créés par le site1... et c'est ca qui fonctionne pas :D

Lien vers le commentaire
Partager sur d’autres sites

heuu je dois etre long à la détente la... :blush:

Ca veut dire que c'est sur le site2, qui va appeler un script du site1 que je dois utiliser curl? :s

Ca va pas être évident ca j'aurai bien voulu que sur le site 2, il n'y ait que un img src :'(. je vais essayer ca qd mme si j'y arrive un jour :D

Ce serait comment alors? Sur la page du site2, j'aurai qq chose comme :

$urlscript="http://www.site1.fr/compteur.php";
$ch = curl_init();
// Définition de l'URL et autres options appropriées
curl_setopt($ch, CURLOPT_URL, $urlscript);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// Récupération de l'URL et passage au navigateur
$result=curl_exec($ch);
// Fermeture de la ressource CURL et libération des ressources systèmes
curl_close($ch);

echo "resultat=".$result;

(je comprends pas grand chose la, j'ai repris ton code lorik je regarderai apres plus attentivement)

Lien vers le commentaire
Partager sur d’autres sites

Mince... donc impossible de s'en sortir juste avec un img src ou un équivalent sur le site 2?

Ca veut dire que, à chaque fois qu'un nouveau site voudra se joindre à mon compteur, il faudra d'une part que son hébergeur ait les librairies curl d'installer et d'autre part qu il mette mon bout de code sur sa page d'accueil? :(

Lien vers le commentaire
Partager sur d’autres sites

Heu... bah ca marche pas super :D

Need help !!


<?

$urlscript="http://www.site.fr/compteur.php";
$ch = curl_init();
// Définition de l'URL et autres options appropriées
curl_setopt($ch, CURLOPT_URL, $urlscript);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch,CURLOPT_COOKIE,"CheckCookie=CheckCookie; domain=.site.fr; path=/test/");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_USERPWD, '[username]:[password]');

$data = curl_exec($ch);
// Fermeture de la ressource CURL et libération des ressources systèmes
curl_close($ch);
?>

Bon plusieurs questions :

Ce que je veux faire, c'est bien de lancer le script compteur.php sur le site.fr pour qu il fasse des requetes sur la bdd et dont une partie des données se trouve dans des cookies.

compteur.php a écrit des cookies sur le pc client en lancant le script avec curl que je viens d'écrire à partir du site2, est ce que compteur.php va faire les requetes qu il faut et "lire" les données qui ont été écrite?

Merci :)

Lien vers le commentaire
Partager sur d’autres sites

Non, on ne s'est pas compris :

-Compteur.php est appellé par un img src, et enregistre la visite dans une base de données. Il implante aussi le cookie qui evite les doublons (voir mon MP). Le cookie ne sert qu'a ça, pas à stocker des données statistiques. seulement à flaguer l'internaute comme 'déja enregistré'. Les données se trouvent dans la base de données.

- tu dois avoir un deuxieme script (disons stat.php) dont le role est d'extraire les stats de la base de données, et de les placer dans une variable (disons $stats).

c'est stat.php qui doit etre appellé par CURL, pour afficher le contenu de $stats.

Ou alors je n'ai pas compris ce que tu veux faire...

Lien vers le commentaire
Partager sur d’autres sites

En fait... Bon la raison pour laquelle je fais ca c'est que je suis en stage et ce que je ne peux pas vraiment tout dire sur ce que je fais... Secret proffesionnel quoi :P

Comme j'ai dit à Lorik, je vais essayer d'expliquer un peu mieux...

En fait, sur mon site2, tout ce que je dois faire, c'est exécuté mon script sur le site1 qui, lui, utilise des données qui sont dans les cookies écrit par le site1 et interrogeant ainsi la base de donnée. Ce serait bien que mon site2 ait juste qq chose comme un img src pour exécuter le script du site1 :whistling:

Seulement, si j'utilise juste img src sur le site2 pour lancer mon script sur le site1, le script du site1 ne s exécute pas correctement. Comment je sais ca? Une fois que les cookies étaient écrits par le site1, j'ai essayé d'écrire les données des cookies dans un fichier sur le serveur du site1 en lancant le script avec img src à partir du site2 et rien a été écrit dans le fichier. Pourtant, qd je lance le script "à la main" c'est à dire que j'exécute directement le script avec l'url du script de mon site1, ca fonctionne, c'est à dire que les données des cookies sont bien pris en compte et les requetes dans ma base de données sont bien faites.

Mon site2 n'a donc pas besoin d'avoir les données sur site1 de retour en fait... Désolé de t'avoir induit en erreur avec ma question de compteur ...

Voila désolé pour les coups des mp... J'espère que j'ai été plus clair ;)

Ah oui autre chose ... Juste pour information, le img src fonctionne sous firefox ... C'est à dire qu'il me lance bien le script du site1 et que les cookies sont bien lus... Qq a une explication? :D

Modifié par trihanhcie
Lien vers le commentaire
Partager sur d’autres sites

Je vois le truc... je crois !

Pour les img src, c'est le bon système, oublie CURL.

Par contre, à mon avis, ta politique de confidentialité n'est pas correcte, et le poste client, quand il affiche ton site 2, refuse le cookie implanté par le site 1.

Revois le post sur les cookies épinglé (c'est la qu'on s'est connu, hier déja, sniff :D ).

As tu mis le fichier xml à la racine de ton site 1 (celui qui implante les cookies) ?

J'utilise très exactement ce que tu veux faire, et des img src + politique de confidentialité, ça marche nickel.

donc revois ton code...

Lien vers le commentaire
Partager sur d’autres sites

C bien ce que je me disais..

Mais si tu veux je me vois mal dire à chaque personne : "mon script marche pas parce que votre politique de confidentialité sur internet explorer n'est pas la bonne, veuillez changer"...

Le fichier xml je l'ai pas mis à la racine mais dans le dossier où j'ai mon script ... ca change qq chose?

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Là, je peux plus rien pour toi. Lis et essaie de comprendre le post dont je t'ai parlé, tout y est pour que ça marche, et notamment là ou il faut mettre les fichiers, la syntaxe, etc...

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...