PHP und SOAP

MS47475

Mitglied
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:
<?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:
<?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
 
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:
	$server->setPersistence(SOAP_PERSISTENCE_SESSION);
Somit sähe dann das Server-Script wie folgt aus:
PHP:
	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) );
	}
 
Zurück