Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Services Web
Services Web Forum d'entraide pour les services Web en PHP, qui permettent de créer et de consommer facilement des webservices (génération de WSDL etc.). Exemples : SOAP, NuSOAP, REST, SCA-SDO... Avant de poster -> Cours webservices
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2006, 00h57   #1
Invité de passage
 
Inscription : juillet 2002
Messages : 6
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France

Informations forums :
Inscription : juillet 2002
Messages : 6
Points : 0
Points : 0
Par défaut [SOAP] SOAP et requêtes persistantes

Bonjour à tous.

J'essaye de mettre en place un service SOAP avec une méthode d'authentification.

Je souhaiterais que le client s'authentifie à l'aide d'une fonction, puis ensuite qu'il puisse utiliser les autres fonctions (s'il y est autorisé).

Mon problème est que SOAP ne semble pas garder de données persistantes entre deux appels de fonctions.

Coté serveur, j'ai ceci :
Code :
1
2
3
4
5
6
7
8
<?php
 
$server = new SoapServer("monwsdl.wsdl");
$server->setClass("MaClass");
$server->setPersistence(SOAP_PERSISTENCE_REQUEST);
$server->handle();
 
?>
et du coté client, ça donne ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$client = new SoapClient("monwsdl.wsdl");
try {
    if ( $client->auth('login','password') ) {
        $data = $client->getWhatIWant();
    }
} catch(SoapFault $e) {
    $msg = (!$e->getMessage()) ? $e->faultstring : $e->getMessage();
    print "Sorry, an error was returned: $msg<HR>";
}
 
?>
Dans ma classe, j'ai une propriété $isAuth à false par defaut qui passe à true dans la fonction auth(). Problème, elle passe bien à true mais lors de l'appel de la deuxième fonction, elle est repassé à false.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    /**
     * Authentification
     *
     * @param string $username
     * @param string $password
     * @return mixed SOAP Fault on error, true on success
     */
    function auth($username,$password) {
        if ( empty($username) || empty($password) ) throw new SoapFault("-4", "Please provide your username and password !");
        $result = mysql_query("SELECT * FROM api WHERE username = '".mysql_real_escape_string($username)."' AND password = '".md5($password)."' LIMIT 1",$this->db);
        if ($result && $api_user = mysql_fetch_assoc($result)) {
            $this->isAuth = true;
            $this->username = $username;
            $this->password = $password;
            return true;
        } else {
            throw new SoapFault("-5", "Authentification failed");
        }
    }
J'ai également essayé avec SOAP_PERSISTENCE_SESSION mais rien n'y fait, à chaque appel de fonction, il reconstruit une instance de l'objet.

Quelqu'un a-t-il déjà eu ce problème ?
Ma google search ne me retourne pas grand chose si ce n'est des pages de manuel

Merci pour vos lumières.
blackangel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 15h52   #2
Invité de passage
 
Inscription : juillet 2002
Messages : 6
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France

Informations forums :
Inscription : juillet 2002
Messages : 6
Points : 0
Points : 0
Merci au modérateur d'avoir déplacé ce message ici, mais je pense qu'il avait plus sa place dans la section "Général PHP", vu qu'il ne s'agit pas d'une librairie mais d'une fonction native de PHP 5 :-P
Enfin, simple question de point de vue.
Ceci dit, ça ne fait pas avancer mon problème
blackangel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h52.


 
 
 
 
Partenaires

Hébergement Web