php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 30-08-2007, 15:14
MS4747
 Newbie
Links : Onlinestatus : MS4747 ist offline
Registriert seit: Aug 2007
Beiträge: 12
MS4747 ist zur Zeit noch ein unbeschriebenes Blatt
Standard PHP und SOAP

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 muss bei JEDEM Funktionsaufruf Logindaten mitgesendet werden?
Dank schon mal.

Gruß,
Markus
Mit Zitat antworten
  #2 (permalink)  
Alt 30-08-2007, 17:10
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

die verbindug wird nach dem aufruf von der erster Methode getrennt und bei dem Aufruf von der 2-ter Methode wird dein server-script neu gestartet . also ist deine $b_login_ok wieder auf false gesetzt.
vielleicht hilft dir das weiter:
http://de2.php.net/manual/de/function.soap-soapserver-setpersistence.php
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #3 (permalink)  
Alt 30-08-2007, 18:34
MS4747
 Newbie
Links : Onlinestatus : MS4747 ist offline
Registriert seit: Aug 2007
Beiträge: 12
MS4747 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank für die kompetente Antwort. Hab zwar lange gesucht, aber die Erklärung habe ich leider dazu nicht gelesen gehabt. Oder mein Englisch ist dafür nicht gut genug...
Leider ist das meiner Meinung nach nicht wirklich Vorteilhaft für SOAP. D.h. also, ich müsste dann entweder jedesmal eine Art Schlüssel, also bei jedem Funktionsaufruf mitsenden, oder mit Funtionen wie __wakeup und __sleep (wenn ich mich nicht irre) arbeiten, um nicht serialisierbare Funktionen wie die PDO-Schnittstelle verwenden zu können!?
Mit Zitat antworten
  #4 (permalink)  
Alt 31-08-2007, 00:21
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

versuch bitte nach der 'class server' das zu machen
PHP-Code:
$service=new SoapServer("http://irgendwas/server.php?wsdl");
$service->setClass("server");
$service->setPersistence(SOAP_PERSISTENCE_SESSION); 
und teste dein Client-script noch ein mal
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #5 (permalink)  
Alt 31-08-2007, 07:52
MS4747
 Newbie
Links : Onlinestatus : MS4747 ist offline
Registriert seit: Aug 2007
Beiträge: 12
MS4747 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So funktioniert das und es werden keine Werte mehr "vergessen". Danke schön.
Allerdings kann ich dann in der jetzigen Form keine Datenbankverbindung mit PDO aufbauen, da PDO nicht serialisiert werden kann.
Mit Zitat antworten
  #6 (permalink)  
Alt 31-08-2007, 11:39
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

natürlich kann PDO nicht serialisiert werden, da diese Klassen mit Resourcen arbeiten.
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #7 (permalink)  
Alt 31-08-2007, 11:46
MS4747
 Newbie
Links : Onlinestatus : MS4747 ist offline
Registriert seit: Aug 2007
Beiträge: 12
MS4747 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn man drüber nachdenkt ist das ja auch völlig logisch, aber erst dann
Ich habe das jetzt mittlerweile durch __sleep und __wakup geregelt und es läuft zu meiner zufriedenheit.
Eine Frage habe ich aber noch:
Wenn ich in der Server-Klasse sensible Daten (Passwörter) speichern würde, kann der Client dann durch auslesen von Session-Variablen oder ähnlichem auf diese Daten zugreifen?

Gruß,
Markus
Mit Zitat antworten
  #8 (permalink)  
Alt 31-08-2007, 13:02
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von MS4747

Wenn ich in der Server-Klasse sensible Daten (Passwörter) speichern würde, kann der Client dann durch auslesen von Session-Variablen oder ähnlichem auf diese Daten zugreifen?
Antwort mit Gegenfrage:
Kann ein Browser auf die session-daten zugreifen?
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #9 (permalink)  
Alt 31-08-2007, 14:14
MS4747
 Newbie
Links : Onlinestatus : MS4747 ist offline
Registriert seit: Aug 2007
Beiträge: 12
MS4747 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Slava
Antwort mit Gegenfrage:
Kann ein Browser auf die session-daten zugreifen?
Wenn ich das jetzt so genau wüsste ...
Eigentlich müsste ich doch nur auf der Client-Seite nach dem login ein print_r($_SESSION) ausführen, um zu sehen, ob dort sensible Daten gespeichert wurden. Aber zu sehen ist da nichts. Allerdings mit nem print_r($_SESSION) auf der Server-Seite auch nicht.
Mit Zitat antworten
  #10 (permalink)  
Alt 31-08-2007, 15:41
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

so lange du in deinem serverseitigem script keine session-daten dem client zeigst, sieht der klient sie auch nicht, da die inhalte von $_SESSION auf dem server gespeichert sind.
einzige bindung zwischen dem client und server ist session_id, die client für die identifitierung an den server sendet und server an hand von session_id die local-gespeicherte daten in $_SESSION ladet.
Was übernimmt eigentlich session?
1)guken, ob der client schon eine session-id hat
2)wenn keine session_id da ist, dann eine session_id generieren und bei dem user speichern (das muss eine zufällige und lange zeichenkette sein, damit die andere clients oder haker mit einer sehr geringer Warscheinlichkeit rausfinden könnten) .
Wenn session_id vorhanden ist, dann die passende daten finden(an hand von session_id) und die globale variable $_SESSION mit diesen Daten belegen.
3) bei Setzen von einem neuem wert in $_SESSION, diesen wert persitent zu machen, also in eine Datei oder DB oder wie auch immer, so abspeichern, dass man später an hand von session_id an diese Daten wieder kommt.

Es ist nicht so, dass man die oben genannte 3 Punkte schwär zu erledigen sind, aber warum muss man das machen, wenn das alles Session übernimmt?

wenn du noch mal die docu zum SoapServer::setPersistence liest, dann wirst du entdechen, dass alle private variablen die Du in deinem Server-classe benutzt in session gespeichert werden.
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #11 (permalink)  
Alt 31-08-2007, 15:50
MS4747
 Newbie
Links : Onlinestatus : MS4747 ist offline
Registriert seit: Aug 2007
Beiträge: 12
MS4747 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann möchte ich dir jetzt noch eben zu deiner umfangreichen Hilfe und Bemühungen danken. Ich habe wie ich sehe noch viel zu lernen...
Mit Zitat antworten
  #12 (permalink)  
Alt 31-08-2007, 16:12
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von MS4747
Ich habe wie ich sehe noch viel zu lernen...
Ich auch
__________________
Slava
bituniverse.com
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:32 Uhr.