Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1496 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Webservice/PHP] Modification d'une fonction soap

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Webservice/PHP] Modification d'une fonction soap

n°1241958
Vilo5
Posté le 09-11-2005 à 09:35:32  profilanswer
 

Bonjour,
voilà j'ai récupérer un webservice utilisant la librairie soap.
 
Le voici:
 
côté client:

Code :
  1. <?
  2. include('lib/nusoap.php');
  3. $client = new soapclient('http://127.0.0.1/Webservice_soap/service_bonjour.php');
  4. $err = $client->getError();
  5. if ($err)
  6.     {
  7.     echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
  8.     }
  9. else
  10.     {
  11.     $parametres = array('prenom'=> Olivier);
  12.     print $client->call('bonjour', $parametres);
  13.     }
  14. ?>


côté serveur:

Code :
  1. <?php
  2. include('lib/nusoap.php');
  3. $serveur = new soap_server;
  4. $serveur->debug_flag=false;
  5. $serveur->register('bonjour');
  6. function bonjour($prenom)
  7.   {
  8.   return "Bonjour $prenom !";
  9.   }
  10. $serveur->service($HTTP_RAW_POST_DATA);
  11. ?>


 
Je souhaite le modifier de façon à entrer manuellement 2 valeurs en parametres au lieu d'entrer le prénom Olivier par défaut.
 
Pour cela je souhaite utiliser un formulaire avec 2 input text (pour entrer mes 2 parametres) et un input submit (pour lancer le webservice):
 
Voici ce que j'ai déjà fait: (à l'aide de question que j'ai posé sur ce forum)
 
Page du formulaire:

Code :
  1. <html>
  2.     <head>
  3.         <title>Page de test de Webservice</title>
  4.     </head>
  5.     <body>
  6.         <p align="center">
  7.             <u><font size="+2">Page de test de Webservice :</font></u>
  8.             <br><br><br><br><br><br>
  9.             <b><u>Formulaire du Webservice de contrôle d acces :</u></b>
  10.             <br><br>
  11.             <form method="post" action="appel_TCA.php" name="formulaire">
  12.                 Numéro de carte :
  13.                 <input type="text" name="num_carte">
  14.                 <br><br>
  15.                 Nom du site :
  16.                 <input type="text" name="site">
  17.                 <br><br>
  18.                 <input type="submit" name="bouton" value="Envoyer">
  19.             </form>
  20.         </p>
  21.     </body>
  22. </html>


côté client :

Code :
  1. <?
  2. include('lib/nusoap.php');
  3. $client = new soapclient('http://127.0.0.1/Webservice_soap/service_TCA.php');
  4. $err = $client->getError();
  5. if ($err)
  6. {
  7.     echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
  8. }
  9. else
  10. {
  11.     $parametres1 = array($_POST['num_carte']); //1er paramètre provenant de mon formulaire
  12.     $parametres2 = array($_POST['site']); //2ème paramètre provenant de mon formulaire
  13.     // je ne trouve pas ici comment envoyer mes 2 paramètres au serveur :
  14.     print $client->call('bonjour', $parametres1); //envoie que de 1 paramètre, pour 2 je ne sais pas comment faire
  15. }
  16. ?>


côté serveur :

Code :
  1. <?php
  2. include('lib/nusoap.php');
  3. $serveur = new soap_server;
  4. $serveur->debug_flag=false;
  5. $serveur->register('bonjour');
  6. function bonjour($num_carte)
  7.   {
  8.   return "La carte numéro $num_carte tente de badger sur le site num. xxx "; //(ici doit aparraîte mon 2ème paramètre "$site" à la place de xxx)
  9.   }
  10. $serveur->service($HTTP_RAW_POST_DATA);
  11. ?>


 
Voilà mon avancement, comme vous pouver le constater mon problème ce situe au niveau du passage et du traitement de mes 2 paramètres entre le client et le serveur. Il faut certainement modifier la fonction bonjour mais je ne sais pas comment faire (j'aimerai bien aussi la faire changer de nom).
 
J'espère que je ne me suis pas trop étendu et merci par avance de votre aide.


Message édité par Vilo5 le 09-11-2005 à 09:58:36
mood
Publicité
Posté le 09-11-2005 à 09:35:32  profilanswer
 

n°1241991
dwogsi
Défaillance cérébrale...
Posté le 09-11-2005 à 10:28:38  profilanswer
 

Evite de mettre du code PHP quand tu parle de "côté client". Bon on va encore me faire remarqué que je chipote sur les termes mais autant ne pas partir sur le mauvais chemin.
 
Sinon je comprend pas bien ce que tu veux faire....
 
Mais très sincérement, le conseil que je te donne c'est d'aller jeter un oeuil sur la doc, ca t'aidera beaucoup.

n°1242002
cesarr89
Posté le 09-11-2005 à 10:57:34  profilanswer
 

Bah dans client tu mets:
$param = array('num_carte'=>$_POST['num_carte'], 'site'=>$_POST['site'])
 
et dans serveur:
function bonjour($num_carte,$site)


Message édité par cesarr89 le 09-11-2005 à 10:58:56
n°1242044
Vilo5
Posté le 09-11-2005 à 11:29:21  profilanswer
 

Merci cesarrr89 c'est tout à fait çà que je voulais.
 
Je suis bête au lieu de modifier le contenu de la variabe $param en :
$param = array('num_carte'=>$_POST['num_carte'], 'site'=>$_POST['site'])  
 
j'essayais un truc dans le style :
$parametres1 = array($_POST['num_carte']);  
$parametres2 = array($_POST['site']);
print $client->call('bonjour', $parametres1,  $parametres2);
 
C'est bon maintenant ca marche, c cool.
 
dwogsi je ne comprend pas ce que tu veus dire par : "Evite de mettre du code PHP quand tu parle de "côté client"."  
Pourquoi ?


Message édité par Vilo5 le 09-11-2005 à 11:29:54
n°1242047
elianor
bannie 17 fois
Posté le 09-11-2005 à 11:30:58  profilanswer
 

dwogsi a écrit :

Evite de mettre du code PHP quand tu parle de "côté client". Bon on va encore me faire remarqué que je chipote sur les termes mais autant ne pas partir sur le mauvais chemin.


 
Dans son cas si. Son code PHP est bien le client du service web [:spamafote]
 
Et le navigateur web est le client du serveur PHP  
 
PHP est à la fois client et serveur ici [:spamafote]


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
n°1242053
dwogsi
Défaillance cérébrale...
Posté le 09-11-2005 à 11:33:32  profilanswer
 

elianor a écrit :

Dans son cas si. Son code PHP est bien le client du service web [:spamafote]
 
Et le navigateur web est le client du serveur PHP  
 
PHP est à la fois client et serveur ici [:spamafote]


 
Bon je viens de relire son post avec plus d'attention et on peut efectivement voir les choses souos cet angle. Alors je dirais : Autant pour moi et je ferais plus attention la prochaine fois avant de parler.

n°1242068
Vilo5
Posté le 09-11-2005 à 11:48:18  profilanswer
 

dwogsi a écrit :

Bon je viens de relire son post avec plus d'attention et on peut efectivement voir les choses souos cet angle. Alors je dirais : Autant pour moi et je ferais plus attention la prochaine fois avant de parler.


 
Ok maintenant je comprend pourquoi tu parlais de çà.
je comprend un peu près la ou tu voulais en venir, mais comme tu le dit ca ne concerne pas mon appli.
 
En tout cas merci de t'être penché aussi sur mon pb.

n°1242372
Vilo5
Posté le 09-11-2005 à 16:14:32  profilanswer
 

Voilà ce que cela donne.
 
Page du formulaire :

Code :
  1. <html>
  2.     <head>
  3.         <title>Page de Webservice</title>
  4.     </head>
  5.     <body bgcolor=#f2faf5>   
  6.         <p align="center">
  7.             <font face="Comic Sans MS" size="+2" color="#0080FF"><b>Page de Webservice</b></font>
  8.             <br><br><br><br><br><br>
  9.             <b><u>Formulaire du Webservice de contr&ocirc;le d&acute;acc&egrave;s :</u></b>
  10.             <br><br><br>
  11.             <form method="post" action="appel_CA.php" name="formulaire">
  12.                 <table border="1">
  13.                     <tr>
  14.                         <td>
  15.                             Numéro de carte :
  16.                         </td>
  17.                         <td>
  18.                             <input type="text" name="num_carte">
  19.                         </td>
  20.                         <td rowspan="3">
  21.                             <img src="tca.jpg">
  22.                         </td>
  23.                     </tr>
  24.                     <tr>
  25.                         <td>
  26.                             Nom du site :
  27.                         </td>
  28.                         <td>
  29.                             <input type="text" name="site">
  30.                         </td>
  31.                     </tr>
  32.                     <tr>
  33.                         <td colspan="2" align = "center">
  34.                             <input type="submit" name="bouton" value="Envoyer">
  35.                         </td>
  36.                     </tr>
  37.                 </table>
  38.             </form>
  39.         </p>       
  40.     </body>
  41. </html>


Côté client :

Code :
  1. <?
  2. include('lib/nusoap.php');
  3. $client = new soapclient('http://127.0.0.1/Webservice_soap/service_CA.php');
  4. $err = $client->getError();
  5. if ($err)
  6. {
  7.     echo '<h2>Erreur de construction</h2><pre>' . $err . '</pre>';
  8. }
  9. else
  10. {
  11.     $parametres = array('num_carte'=>$_POST['num_carte'], 'site'=>$_POST['site']);
  12.     print $client->call('CA', $parametres);
  13. }
  14. ?>


Côté serveur :

Code :
  1. <?php
  2. include('lib/nusoap.php');
  3. $serveur = new soap_server;
  4. $serveur->debug_flag=false;
  5. $serveur->register('CA');
  6. function CA($num_carte, $site)
  7. {
  8.   return "La carte numéro <b>$num_carte</b> tente de badger sur le site <b>$site</b>";
  9. }
  10. $serveur->service($HTTP_RAW_POST_DATA);
  11. ?>


 
Merci de votre aide !


Message édité par Vilo5 le 09-11-2005 à 16:16:50
n°1242384
Vilo5
Posté le 09-11-2005 à 16:29:37  profilanswer
 

Bon ceci est pour le moment un webservice de test, pour simuler mon futur webservice qui permettra de faire du contrôle d'accès.
Je m'explique lorsqu'un employé tentera d'accéder à un site de la société en se badgeant avec une carte à puce il interrogera alors mon webservices.
 
Plutard les variables "$num_carte" et "$site" du client viendront donc du lecteur de carte (contenant un programme en C). Il n'y aurra donc plus de formulaire, "$num_carte" permettra de détecter qui est l'employé et "$site" le site de la société auquel il tente d'acceder.
 
Il me faudra donc du côté client à la place de retrourner :
return "La carte numéro <b>$num_carte</b> tente de badger sur le site <b>$site</b>";
interroger une base de donner pour savoir si l'employé a le droit d'acceder au site ou non. Je renverrai alors "1" o "0" au client ce qui aurra pour effet d'ouvrir ou non la porte à l'employé.
Voilà mais cette partie sera faite plus tard.
 
Maintennant que vous savez tout je voudrai savoir comment envoyer mes paramètre via l'url, du style : http://127.0.0.1/Webservice_soap/service_CA.php?$param   (ca doit être un truc dans le genre)
Et surtout savoir comment modifier mon prog pour qu'il fonctionne de cette manière.
 
Voilà comme ca j'aurai un prog digne du non de webservice


Message édité par Vilo5 le 09-11-2005 à 16:41:31
n°1242415
dwogsi
Défaillance cérébrale...
Posté le 09-11-2005 à 16:46:36  profilanswer
 

Url : http://www.machin.ext/page.php?var=machin
Dans le script : $_GET["var"]


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
mood
Publicité
Posté le 09-11-2005 à 16:46:36  profilanswer
 

n°1242519
Vilo5
Posté le 09-11-2005 à 18:35:08  profilanswer
 


 
Je ne comprend pas exactement de quoi tu parle.
 
Quel script, a quel endroit?

n°1242532
cesarr89
Posté le 09-11-2005 à 18:39:50  profilanswer
 

Je me pose juste une simple question, tu sais faire du PHP ?
Le doute m'envahit quand même...

n°1242589
Vilo5
Posté le 09-11-2005 à 19:38:23  profilanswer
 

cesarr89 a écrit :

Je me pose juste une simple question, tu sais faire du PHP ?
Le doute m'envahit quand même...


 
Bein si je pose des questions c'est que je ne suis pas très doué en php, c'est évident.
 
Je débute, j'ai commencé par utiliser 1 ou 2 script pour agrémenté mes premiers essais de sites web html. Je me suis ensuite essayé au forum avec phpbb2 et maintenant j'admin un forum.
 
Mais bon voilà ca c'est pas grand chose c'est juste de la manipulation de script existant, je n'ai donc pas vraiment de connaissance php.
 
Et maintenant je dois faire du php au boulot, je dévelloppe donc réellement en php pour la 1ère fois, d'ou mes questions qui peuvent paraitre parfois un peu con.
 
Voilà dsl, mais les forums sont fait pour çà, c'est comme ca qu'on apprend.
 
Ceci dit mes connaissances dans d'autre langage me permette de comprendre un peu le code php.

n°1242926
Vilo5
Posté le 10-11-2005 à 10:36:38  profilanswer
 


 
C'est bon ca marche, je faisais juste une petite erreur.
http://.../service_CA.php?num_carte=52&site=toto
 
moi je faisait ca a la place :
http://.../service_CA.php?num_carte=52?site=toto
 
Merci.


Message édité par Vilo5 le 10-11-2005 à 10:37:44
n°1242931
Vilo5
Posté le 10-11-2005 à 10:45:06  profilanswer
 

Maintenant que mon webservices de tet est créé, il va me falloir réaliser le vrai.
 
Pour cela je vais devoir réalisé le client en C (et oui "dwogsi" ca rejoins ce que tu me disai, t'avais raison ;)), qui se trouvera sur une plateform client embarqué sous µClinux.
 
Si j'ai bien compris il va me falloir utilisé la librairie gsoap et utiliser un WSDL.
 
Mais je ne sais pas par ou commencer, que faut t'il que je fasse ? Et est-ce que je pourrai garder mon client PHP tel qu'il l'est actuelement.

n°1245091
cesarr89
Posté le 14-11-2005 à 12:37:19  profilanswer
 

Bah si tu fais un client en C pourquoi veut tu garder le client PHP?
Il faut juste connecter ton client en C au WebService PHP.

n°1245717
Vilo5
Posté le 14-11-2005 à 23:36:14  profilanswer
 

cesarr89 a écrit :

Bah si tu fais un client en C pourquoi veut tu garder le client PHP?
Il faut juste connecter ton client en C au WebService PHP.


 
Merde, désolé c'est exactement ce que je voulé dire.
Dans ma dernière phrase je voulé dire :Et est-ce que je pourrai garder mon Serveur PHP (et non pas mon client) tel qu'il l'est actuelement.
 
Désolé j'ai tappé trop vite.
 
Donc je reformule ma question:
 
Maintenant que j'ai réalisé un webservice de test un peu bizarre (à savoir le client et le serveur en PHP), je voudrai faire la version final de mon webservice.
C'est à dire remplacer le client php en par un client C (qui tounera sous µlinux), tout en gardant mon serveur php tel qu'il l'ai actuellement.
 
Je cherche donc de l'aide pour remplacer mon cllient php par un client C. Je crois qu'il faut utliser gsoap mais je suis pas sure et peut etre même wsdl.


Message édité par Vilo5 le 14-11-2005 à 23:38:16
n°1253901
Toby14
Toby or not Toby
Posté le 26-11-2005 à 19:31:55  profilanswer
 

Et bien je peux juste te dire(car moi aussi je me penche sur le probleme depuis peu) que le fichier wsdl et en fait la déclaration de tes fonctions accessible par le client sur ton serveur avec leur entrée et sortie.
 
Sinon gsoap je connais pas car je fait tout en php pour l'instant.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Webservice/PHP] Modification d'une fonction soap

 

Sujets relatifs
rediriger vers un autre script après exécution d'une fonctionFonction commandbutton
Création d'une Fonctionupdate CDATASection XML PHP 5
[resolu][PHP] extraction d'un operateur dans une stringfonction mail()
Comprendre la fonction ord en pascal [Résolu]Comment inclure une fonction "spoilers" dans un script de news
[PHP XML] problème de conversion UTF-16 -> ISO-8859-1[Php/Html/Decoupe] Propose services (ptite rému.)
Plus de sujets relatifs à : [Webservice/PHP] Modification d'une fonction soap


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR