tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
1211
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MS47475 MS47475 ist offline Mitglied Silber
    Registriert seit
    May 2005
    Beiträge
    70
    Hallo,

    erst einmal kurz eine Beschreibung des Problems:
    Ich habe eine PHP-Klasse, die einen SOAP-Server darstellen soll und für die Verwaltung von Daten einer Datenbank zuständig ist. Um Daten z.B. zu editieren muss man vorher ein login durchführen.
    Vereinfachte Darstellung Server:
    PHP-Code:
    <?php
        
    class server
        
    {
            private 
    $b_login_ok FALSE;
            
            public function 
    login($username$password)
            {
                if( 
    abfrage_der_datenbank==TRUE )
                    
    $this->b_login_ok TRUE;
            }
            
            public function 
    update($input)
            {
                if(
    $this->b_login_ok == TRUE)
                    
    //erledige das Datenbank-Update
            
    }
        }
    ?>
    Vereinfachte Darstellung Client:
    PHP-Code:
    <?php
        $client 
    = new SoapClient("http://irgendwas/server.php?wsdl");
        
    $client->login'mein_benutzername''mein_passwort' );
        
    $client->update'irgendwelche geänderten datenbank daten?!' );
    ?>
    Wenn ich das so realisiere, vergisst der server zwischen dem login und dem update nämlich, dass die Variable b_login auf true gesetzt wurde.
    Geht das so, oder müssen bei JEDEM Funktionsaufrufdie Logindaten mitgesendet werden?
    Dank schon mal.

    Gruß,
    Markus
     

  2. #2
    MS47475 MS47475 ist offline Mitglied Silber
    Registriert seit
    May 2005
    Beiträge
    70
    Für jeden den es interressiert:

    Der Server vergisst tatsächlich jedesmal die Daten, da die Verbindung zum Server nach dem ersten Aufruf wieder getrennt wird. Beim zweiten Aufruf wird dann das Serverscript neu gestartet und somit auch die Klasse neu initialisiert.
    Damit der Server die Daten nicht vergisst ist lediglich eine weitere Zeile nötig:
    PHP-Code:
        $server->setPersistence(SOAP_PERSISTENCE_SESSION); 
    Somit sähe dann das Server-Script wie folgt aus:
    PHP-Code:
        try
        {
            
    ini_set("soap.wsdl_cache_enabled""0"); //only for test purposes
            
    $server = new SOAPServer('wsdl_filename.wsdl');
            
    $server->setClass('ServerClass');
            
    $server->setPersistence(SOAP_PERSISTENCE_SESSION);
            
    $server->handle();
        }
        catch (
    SOAPFault $f)
        {
            
    file_put_contents('error.txt'var_export($e->getMessage(), true) );
        } 
     

Ähnliche Themen

  1. JSP mit SOAP
    Von Lausi0809 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 3
    Letzter Beitrag: 11.03.10, 08:15
  2. XML-RPC und SOAP
    Von HeckMc im Forum Coders Talk
    Antworten: 0
    Letzter Beitrag: 12.06.09, 16:57
  3. SOAP in PHP
    Von Compane im Forum PHP
    Antworten: 1
    Letzter Beitrag: 22.02.08, 15:48
  4. JAX WS 2 und MS SOAP
    Von Clipp im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 21.01.08, 13:19
  5. soap lib
    Von CosmoKey im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 11.06.04, 20:11