Variablen - Geltungsbereich
carsten schlichting
- php
habe auch schon im PHP-Handbuch gelesen, bin aber immer noch unsicher.
< http://www.php.net/manual/de/language.variables.scope.php>
was mir noch nicht ganz schlüssig ist, ist ob die Variablen, die ich in einem script definiert habe, beim Wiederaufrufen des scripts ihre veränderten Werte behalten.
Angenommen mehrere User benutzen gleichzeitig meine phpseite würde doch der server automatisch sessions anlegen. Geht ja für die interne php Verwaltung gar nicht anders. legt er dort jetzt auch die Werte der variablen aus dem script ab, so dass beim wiederaufruf des scripts ich automatisch auf die alten werte zurückgreifen kann?
oder müßte ich alle Variablen, die ich nach dem verlassen des scriptes irgendwann nocheinmal brauchen sollte, sicherheitshalber in einer session abspeichern?
Hi,
was mir noch nicht ganz schlüssig ist, ist ob die Variablen, die ich in einem script definiert habe, beim Wiederaufrufen des scripts ihre veränderten Werte behalten.
das ist in etwa so als würdest Du fragen, ob ein Mensch, den Du erschießt, nach seiner Wiedergeburt noch die alten Erinnerungen haben wird.
Angenommen mehrere User benutzen gleichzeitig meine phpseite
Tun sie nicht. Sie fordern vielleicht (mehr oder minder) gleichzeitig die selbe URL an, aber das ist auch alles, was da irgend was mit "gleich" zu tun hat. Die Ausführung kann sogar auf unterschiedlichen Rechnern passieren.
würde doch der server automatisch sessions anlegen.
Nö.
Geht ja für die interne php Verwaltung gar nicht anders.
Da gibt's keine interne PHP-Verwaltung. Wenn mehrere Leute gleichzeitig aus einem Zug zum Taxi-Stand rennen, kriegen sie (idealerweise) auch alle ein Taxi, ohne dass sie sich um die Plätze auf der Rückbank schlagen müssen.
oder müßte ich alle Variablen, die ich nach dem verlassen des scriptes irgendwann nocheinmal brauchen sollte, sicherheitshalber in einer session abspeichern?
Nachdem ein Script beendet wurde, hat es nie existiert. HTTP ist zustandslos.
Cheatah
danke schön cheatah
das war mir vorher nie so richtig klar. Also muß ich die daten in eine session schreiben, nicht?
gibt es eventuell noch andere möglichkeiten?
viele Grüße von mir
carsten
Ahoi carsten schlichting,
gibt es eventuell noch andere möglichkeiten?
cookies, z.B. oder ne Datenbank.
du könntest auch am anfang jedes deines scripte alle post, bzw
getvariablen überprüfen, in hiddenfelder mit gleichnahmigen namen
und/oder an evt. links hintendran hängen. ist zwar etwas umständlich
und fehleranfällig, aber es müsste gehn, einfach ein
foreach($_POST as $variablename => $wert)
und/oder
foreach($_GET as $variablename => $wert)
MfG
\ / \ /´¯.l.¯
\ /Hi
ich brauch sowieso eine session,
dann mach ich´s besser über die session - oder?
also dankeschön und viele Grüße
carsten
Hi,
das war mir vorher nie so richtig klar. Also muß ich die daten in eine session schreiben, nicht?
wenn Informationen über einen Request hinaus erhalten bleiben sollen: ja.
gibt es eventuell noch andere möglichkeiten?
Keine, die nicht mit dem Begriff "Session" beschrieben werden könnte. Am unähnlichsten wären noch Cookies, deren Akzeptanz aber keineswegs gewährleistet ist.
Cheatah
hallo Cheatah
ich wollte Dich jetzt doch noch mal nach der request-methode fragen.
wie würde das funktionieren?
ist das ein Befehl, der die Werte der benutzten Variablen praktisch dem aufgerufenen script zur Verfügung stellt? in diesem Falle sich selbst, weil es ja dasselbe script ist.
grüße von mir
carsten
Hi,
ich wollte Dich jetzt doch noch mal nach der request-methode fragen.
nach wem?
wie würde das funktionieren?
Keine Ahnung, weil ich nicht weiß, wovon Du redest. Ein Request ist das, was beispielsweise der Browser an den Server schickt, wenn der User auf einen Link klickt. Der Server erzeugt daraus einen Response, beispielsweise die darzustellende Seite.
ist das ein Befehl, der die Werte der benutzten Variablen praktisch dem aufgerufenen script zur Verfügung stellt? in diesem Falle sich selbst, weil es ja dasselbe script ist.
Nein, ein Request wird nicht an ein Script gesendet, sondern von einem Client an einen Server. Auch wenn der Client das selbe Script ist wie das, was der Server dann ausführt, ist es kein Scriptaufruf, sondern ein Request in einer Client-Server-Architektur, also für den Client nicht zu unterscheiden von einer Anfrage an einen völlig anderen Server.
Cheatah
Hi danke
Jetzt kann ich mir auch etwas unter den include_Sachen vorstellen.
also kann man sagen, wenn ich sowieso eine session hab, sollte ich diese einfach dazu benutzen, um meine Variablenwerte zwischenzuspeichern!! aber Sessions können doch nur funktionieren, wenn man einen zentralen server hat-oder?
Grüße von mir
carsten
Morgen!
also kann man sagen, wenn ich sowieso eine session hab, sollte ich diese einfach dazu benutzen, um meine Variablenwerte zwischenzuspeichern!! aber Sessions können doch nur funktionieren, wenn man einen zentralen server hat-oder?
Was verstehst du unter einem zentralen Server?? Sessions sind ein Mechanismus, den z.B. PHP zur Verfügung stellt um Informationen von einem eigentlich unabhängigen Skriptaufruf zum nächsten zu transportieren. Dazu versucht es z.B. beim Aufruf des Skriptes A ein Cookie zu setzen in dem die Session-ID abgelegt wird. Skript A schreibt nun Daten in die Session und liefert den HTML Code an den Benutzer aus. Der Benutzer liest vor sich hin und klickt einen Link zu Skript B an. Der wird, zusammen mit dem Cookie, an den Server geschickt. Dieser erkennt das Cookie bzw. die darin liegende Session-ID, stellt die Informationen wieder her und stellt sie dem Skript zur Verfügung.
Wenn du ein Skript auf Server X und eines auf Server Y hast wird das mit den Sessions so einfach nichts werden, aber das Problem hast du nicht, oder?
MfG
Rouven
echo $begrüßung;
Wenn du ein Skript auf Server X und eines auf Server Y hast wird das mit den Sessions so einfach nichts werden,
So schwer ist das nun wieder auch nicht.
Wenn die Server beide unterhalb der selben Second-Level-Domain zu finden sind, ist es schon mal möglich, den gleichen Keks mit der Session-ID zu verwenden. Ansonsten kann man die Session-ID als GET/POST-Parameter übertragen.
Nun kommt es noch darauf an, dass beide Server auf das gleiche per session.save_path referenzierte Verzeichnis zugreifen; dafür gibt es genug, auch rechnerübergreifende Mechanismen. Oder man verwendet als Session-Save-Handler einen, der auf einer Datenbank basiert ...
echo "$verabschiedung $name";
Hi
hab erstmal nur einen server.
es ging mit eher ums Verständis, dass der Server ja irgendwie an die Sessioninformationen ran muß. außerdem war es schon ziemlich spät gestern.
mit den 2 servern muß ich mich wohl erst beschäftigen, falls mal zu viele Leute auf meinem Internetshop gehen sollten-- ;-)
also Grüße und danke
carsten