Soyez le premier à donner votre avis sur cette source.
Vue 15 026 fois - Téléchargée 2 380 fois
Fichier wsdl ------------ <?xml version="1.0"?> <!-- partie 1 : Definitions --> <definitions name="KimiaDieudonnee" targetNamespace="urn:KimiaDieudonnee" xmlns:typens="urn:KimiaDieudonnee" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <!-- partie 2 : Types--> <types> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:KimiaDieudonnee"> </xsd:schema> </types> <!-- partie 3 : Message 1--> <message name="addNewRequest"> <part name="prenom" type="xsd:string"/> <part name="nom" type="xsd:string"/> </message> <message name="addNewResponse"> <part name="return" type="xsd:string"/> </message> <!-- partie 3 : Message 2--> <message name="displayDataFromDataBaseRequest"> <part name="critere" type="xsd:string"/> </message> <message name="displayDataFromDataBaseResponse"> <part name="return" type="soap-enc:Array"/> </message> <!-- partie 4 : Port Type --> <portType name="KimiaDieudonneePort"> <!-- partie 5 : Operation 1--> <operation name="addNew"> <input message="typens:addNewRequest"/> <output message="typens:addNewResponse"/> </operation> <!-- partie 5 : Operation 1--> <operation name="displayDataFromDataBase"> <input message="typens:displayDataFromDataBaseRequest"/> <output message="typens:displayDataFromDataBaseResponse"/> </operation> </portType> <!-- partie 6 : Binding --> <binding name="KimiaDieudonneeBinding" type="typens:KimiaDieudonneePort"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="addNew"> <soap:operation soapAction="KimiaDieudonneeAction"/> <input name="addNewRequest"> <soap:body use="encoded" namespace="urn:KimiaDieudonnee" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output name="addNewResponse"> <soap:body use="encoded" namespace="urn:KimiaDieudonnee" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> <operation name="displayDataFromDataBase"> <soap:operation soapAction="KimiaDieudonneeAction"/> <input name="displayDataFromDataBaseRequest"> <soap:body use="encoded" namespace="urn:KimiaDieudonnee" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output name="displayDataFromDataBaseResponse"> <soap:body use="encoded" namespace="urn:KimiaDieudonnee" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <!-- partie 7 : Service --> <service name="KimiaDieudonneeService"> <documentation>Retourne une phrase simple </documentation> <!-- partie 8 : Port --> <port name="KimiaDieudonneePort" binding="typens:KimiaDieudonneeBinding"> <soap:address location="http://localhost/kimiaServer/server.php"/> </port> </service> </definitions> Fichier server.php ------------------ <?php //Connexion a la bdd // première étape : désactiver le cache lors de la phase de test ini_set("soap.wsdl_cache_enabled", "0"); // on indique au serveur à quel fichier de description il est lié $serveurSOAP = new SoapServer('kimia.wsdl'); // ajouter la fonction addNew au serveur $serveurSOAP->addFunction('addNew'); // ajouter la fonction displayDataFromDataBase au serveur $serveurSOAP->addFunction('displayDataFromDataBase'); // lancer le serveur if ($_SERVER['REQUEST_METHOD'] == 'POST') { $serveurSOAP->handle(); } else { echo 'Utiulisation de la methode POST est recommandee, veuillez seulement utiliser POST'; } function addNew($prenom, $nom) { $user = 'root'; $pass = 'huitfevrier'; $dsn = 'mysql:host=localhost;dbname=kimia'; $etat = null; // Connexion à la base de données try { $dbh = new PDO($dsn, $user, $pass); $etat = true;//echo 'Ok'; } catch (PDOException $e) { //die( "Erreur ! : " . $e->getMessage() ); $etat = false;//echo 'Ko'; } if($etat){ $sql = "INSERT INTO dieudonnee (nom,prenom) VALUES ('$nom','$prenom')"; $dbh->exec($sql); return 'L\'enregistrement de '.$prenom.' '.$nom.' est effectue avec succes'; } else { return 'Veiller verifier vos parametres'; } } function displayDataFromDataBase($critere) { $user = 'root'; $pass = ''; $dsn = 'mysql:host=localhost;dbname=kimia'; $etat = null; $tab = array(); // Connexion à la base de données try { $dbh = new PDO($dsn, $user, $pass); $etat = true;//echo 'Ok'; } catch (PDOException $e) { //die( "Erreur ! : " . $e->getMessage() ); $etat = false;//echo 'Ko'; } if($etat){ $i=0; $sql = "SELECT * FROM dieudonnee"; $resultat = $dbh->query($sql); while ($row = $resultat->fetch()) { $tab[$i] = $row; $i++; } return $tab; } else { return 'Veiller verifier vos parametres encore une fois'; } } ?> fichier client.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Client KIMIA</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta name="generator" content="Geany 0.21" /> </head> <body> <div class="main"> <form method="post" action="#"> <fieldset> <label> Nom : </label> <input type="text" value="" name="nom" required/> </fieldset> <fieldset> <label> Prenom : </label> <input type="text" value="" name="prenom" required/> </fieldset> <input type="submit" name="valider" value="Valider" /> </form> <?php if(isset($_POST['valider']) || isset($_POST['afficher'])){ // première étape : désactiver le cache lors de la phase de test ini_set("soap.wsdl_cache_enabled", "0"); // lier le client au fichier WSDL $clientSOAP = new SoapClient('http://127.0.0.1/kimiaServer/kimia.wsdl'); } if(isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['valider'])){ echo '<fieldset>'; $nom = $_POST['nom']; $prenom = $_POST['prenom']; // executer la methode getSave echo $clientSOAP->addNew($prenom,$nom); echo '</fieldset>'; } ?> <form method="post" action="#"> <input type="submit" name="afficher" value="Voir tous les enregistrements" /> </form> <?php if(isset($_POST['afficher'])){ echo '<fieldset>'; // executer la methode displayDataFromDataBase foreach($clientSOAP->displayDataFromDataBase("Bonjour ba yaya") as $row){ echo '<br/>'; echo $row['nom']; echo ' '; echo $row['prenom']; echo '<br/>'; } echo '</fieldset>'; } ?> </div> </body> </html> Fichier sql -- phpMyAdmin SQL Dump -- version 3.4.10.1deb1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generation Time: Jul 13, 2012 at 09:22 AM -- Server version: 5.5.24 -- PHP Version: 5.3.10-1ubuntu3.2 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Database: `kimia` -- -- -------------------------------------------------------- -- -- Table structure for table `dieudonnee` -- CREATE TABLE IF NOT EXISTS `dieudonnee` ( `nom` varchar(100) NOT NULL, `prenom` varchar(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Pour ton code qui est pas mal structuré, je met 9 car il est peu documenté sinon j'aurai mis 10 et surtout ce n'est pas très prudent de passer des requêtes en tant que root, crées un user avec juste les droits necessaires au web et garde ton root pour l'administration en localhost comme cela tu n'ouvre pas de faille de sécurité.
JADU : Un service web est un programme informatique permettant la communication et l'échange de données entre applications ou systèmes hétérogènes dans des environnements distribués. Il s'agit donc d'un ensemble de fonctionnalités exposées sur internet ou sur un intranet, par et pour des applications ou machines sans intervention humaine et de manière synchrone.
JLN : merci pour votre remarque, j'ai mis débutant, car j'avais compris qu'il s'agissait de mon niveau en programmation.
quand en a-t-on besoin ???
ça marche comment ?
Après j'irais voir le code !
- Commenter ton code,
- Donner des explications beaucoup plus détaillées que les 2 lignes de commentaires que tu as mis
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.