Script Php distant : cmt recevoir la réponse.

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

sultan
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: 29 Fév 2004

Script Php distant : cmt recevoir la réponse.

Message le Jeu Jan 27, 2005 16:01

Bonjour,

j'ai un problème et je sais pas trop dans quelle direction partir.
Sur le site A, j'ai un script qui a besoin de données stockées dans la base de donnée du site B. Il ne peut pas afficher le résultat directement mais le site A doit récupérer les valeurs qu'ils stockent dans deux variables.

Admettons que l'appel du script soit le suivant :
http://www.siteB.com/sitea.php?data=Fus ... 2012-02-05

Le site B récupère donc une chaine de caractère qu'il décompose, avec ça, il effectue une recherche dans sa base de donnée, il obtient un résultat (ce sera toujours un ou zéro résultat, garantit par les critères de recherche).
Le site A doit récupérer ce résultat via deux variables :
$texteretour="CHRISTIAN SMITH @ Fuse Start : 23h Price : 4€ < 0h > 8€"
$from="Nom du site B".

Ma question est comment transmettre la réponse du script B dans le script A via deux variables que le script A doit ensuite utiliser pour continuer son exécution.

Merci d'avance de votre aide,

Cordialement


Blini
WRInaute impliqué
WRInaute impliqué
 
Messages: 506
Inscription: 29 Nov 2004

Re: Script Php distant : cmt recevoir la réponse.

Message le Jeu Jan 27, 2005 16:19

sultan a écrit:Ma question est comment transmettre la réponse du script B dans le script A via deux variables que le script A doit ensuite utiliser pour continuer son exécution.


En PHP, a priori, tu peux faire:
Code: Tout sélectionner
$arrstr = file('http://www.siteB.com/sitea.php?data=Fuse%20BXL%2012-02-05');

Ça va te renvoyer le "fichier" dont tu as passé l'adresse dans un tableau, une ligne par entrée du tableau.
Donc si ton siteB répond à cette requête en renvoyant un fichier texte de deux lignes:
Code: Tout sélectionner
CHRISTIAN SMITH @ Fuse Start : 23h Price : 4€ < 0h > 8€
Nom du site B

C'est tout bon (attention à la sécurité)
Code: Tout sélectionner
$texteretour= $arrstr[0];
$from = $arrstr[1];

Haq
WRInaute passionné
WRInaute passionné
 
Messages: 2104
Inscription: 29 Aoû 2002

Re: Script Php distant : cmt recevoir la réponse.

Message le Jeu Jan 27, 2005 16:38

sultan a écrit:Admettons que l'appel du script soit le suivant :
http://www.siteB.com/sitea.php?data=Fus ... 2012-02-05


Une soirée au Fuse dans à peine 7 ans ! Vite, préparons-nous !

(je me permets cette digression vu la réponse a priori parfaite de blini ;-))

sultan
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: 29 Fév 2004

Message le Jeu Jan 27, 2005 20:32

Pour les puristes voici la date exacte :
12-02-2005 ;-) (cf. theclubbing.com pour plus d'infos) lol

Je suis pas webmaster de formation donc pour être sur de tout comprendre...

Je mets l'appel de cette fonction sur le site A :
Code: Tout sélectionner
$arrstr = file('http://www.siteB.com/sitea.php?data=Fuse%20BXL%2012-02-05');

Le script du site B execute le tout en récupérant, triant, flitrant les réponses, se connecte à sa base de données, réucpère les informations et renvoie au site A ceci :
Code: Tout sélectionner
$texteretour= $arrstr[0];
$from = $arrstr[1];


Les variables $texteretour et $from sont donc utilisables directement sur le site A ? Merci d'avance de votre aide, c'est pas toujours facile de tout capter en php quand on apprend sur le tas... lol

sultan
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: 29 Fév 2004

Message le Jeu Jan 27, 2005 21:43

J'ai fait un script schématique ici, c'est viable comme solution ?

Sur le siteA, on met une page PHP de ce type, afin de envoyer le texte brut.

$data=urlencode(CLUB Fuse BXL 12-02-2005);
Header ('Location: www.siteB.com/soiree.php?data=$data);

Le script « soiree.php » sur le site B, récupère la variable « data », la décompose, trie les informations, il se connecte sur le serveur de base de données, récupère l’information (qui sera toujours unique ou nul). Il formatte le texte de retour en deux variables et les renvoie au siteA via:

$texte=urlencode(CHRISTIAN SMITH @ Fuse || Start :23h || Prix : 4euros < 0h > 8euros);
$idr=urlencode(nomexpe);
Header ('Location: www.siteA.com/retour.php?texte=$texte&idsender=$id);

Le script du site A n’a plus qu’à utiliser la fonction urldecode() sur les variables $texte et $idsender avant de pouvoir utiliser les données.

$texte=urldecode($texte);
$idsender=urldecode($idsender);

=> Utilisation des données.

Remarque: Aucun test de sécurité n’a été effectué, mais ils seront bien sûr nécessaires. Ici je montre juste un mécanisme et non un script complet.


Blini
WRInaute impliqué
WRInaute impliqué
 
Messages: 506
Inscription: 29 Nov 2004

Message le Jeu Jan 27, 2005 22:02

Non !!!

Ton serveur B ne parle pas au serveur A !! Il répond tout simplement une page texte à une requête.

Reprenons...

Sur le site A:
Code: Tout sélectionner
$arrstr = file('http://www.siteB.com/sitea.php?data=Fuse%20BXL%2012-02-05');
$texteretour= $arrstr[0];
$from = $arrstr[1];


C'est tout. C'est comme si A ouvrait un fichier, le lisait, et stockait les lignes du fichier dans les variables $texteretour et $from.
Sauf que ce n'est pas un bête fichier que lit A (mais il en sait rien, le pauvre), c'est le retour d'un appel http.

Donc pour A, c'est bon. Pour B, c'est simplement ta page php "sitea" qui fait un truc comme ça:
Code: Tout sélectionner
<?php
// blabla j'interroge la BdD
// blabla je fais plein de trucs
// je stocke mes super calculs dans des variables locales
$ligne1 = 'CHRISTIAN SMITH @ Fuse Start : 23h Price : 4€ < 0h > 8€';
$ligne2 = 'Nom du site B ';
print($ligne1."\n");
print($ligne2);
?>


C'est tout... Le site B a renvoyé du texte brut sur la requête demandée. Il ne "parle" pas à A spécifiquement. Sinon, c'est le binz.

sultan
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: 29 Fév 2004

Message le Jeu Jan 27, 2005 22:32

Merci beaucoup... j'ai essayé comme tu dis mais j'ai un problème... je n'arrive pas à récupérer la variable data sur le siteB afin de pouvoir utiliser le texte envoyé par A. Ceci marche pas...
Code: Tout sélectionner
$data=$_GET['data'];


J'utilise la mauvaise... comment ça s'appelle en fait ? lol... est-ce le $_GET qui est mauvais ?

Didier_S
WRInaute impliqué
WRInaute impliqué
 
Messages: 567
Inscription: 24 Aoû 2004

Message le Ven Jan 28, 2005 2:48

n'utilise pas de GET, le serveur B n'ouvre aucune page, il ne peut donc renseigner aucune variable.
Serveur A -> Ouverture page sur serveur B
Serveur B -> Ligne1 : "Monsieur Machin" / Ligne2: "dans telle boîte"

sur le serveur B, tu fais simplement ta recherche, et tu echo (ou print, tiens, vous utiliseriez quoi, vous ? :twisted:) les réponses. Quand A ouvre la page (et donc exécute la recherche), il récupère AUTOMATIQUEMENT le contenu du fichier de B, et donc, dans notre cas, la réponse, sur deux lignes.


Blini
WRInaute impliqué
WRInaute impliqué
 
Messages: 506
Inscription: 29 Nov 2004

Message le Ven Jan 28, 2005 9:26

Si, si, sultan a raison: il faut utiliser le $_GET sur ton site B pour lire les paramètres de l'URL.
Bizarre que ça ne marche pas...
1. Que te renvoie par exemple: isset($_GET['data']) ?
2. Que te renvoie print_r($_GET) ?

sultan
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: 29 Fév 2004

Message le Ven Jan 28, 2005 12:38

J'ai trouvé le problème... C'est pas le fichier B qui est en tort mais le fichier A. J'ai mal passé mes variables...
La variable $_GET['data'] est bien initialisé sur le script de B mais c'est la valeur transmise par A qui était pas correcte.
J'avais mis
Code: Tout sélectionner
$data=urlencode("Fuse BXL 12-02-2005");
$arrstr = file('http://www.siteB.com/soiree.php?data=$data');
$texteretour= $arrstr[0];
$from = $arrstr[1];

Alors qu'il fallait
Code: Tout sélectionner
$data=urlencode("Fuse BXL 12-02-2005");
$arrstr = file('http://www.siteB.com/soiree.php?data='.$data.'');
$texteretour= $arrstr[0];
$from = $arrstr[1];


En fait, on peut pas passer la variable directement, il faut la "concaténé".

Didier_S
WRInaute impliqué
WRInaute impliqué
 
Messages: 567
Inscription: 24 Aoû 2004

Message le Ven Jan 28, 2005 12:59

tu peux passer une variable directement quand tu utilise des double-quotes, dans ce cas les chaines sont "parsées", et les variables remplacées par leur valeur...

Pour être pointilleux, je dois ajouter que les doubles-quotes sont plus "gourmands" en ressources que les simples quotes (avec donc, concaténation)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités