'normale' Variablen während einer Session
alzheimer
- php
Hallo liebe Leute!
Sacht mal, kann das sein, dass meine Variablen während einer Session beim Neuaufruf meines Scripts erhalten bleiben?
Also es ist so: Ich rufe mein Script über einen link neu auf, in dem dann mit
?action=add
z.B. eine Variable übergeben wird, die mir einfach als $action zur Verfügung steht. Das hat bisher auch geklappt. Aber seid ich das Ganze über eine Session erweitern möchte, steht in dieser $action nach einem neuen Aufruf trotz ?action=xyz an der URL immernoch der Wert nach der ersten Initialisierung.
Finde das alles sehr seltsam. ;o) Kennt das jemand, oder wisst ihr schon, was ich falsch mache, oder wollt ihr mehr Infos? Fragen über Fragen...
lieben Gruß,
Marc
freu mich über eure Nachrichten.
Hallo!
?action=add
z.B. eine Variable übergeben wird, die mir einfach als $action zur Verfügung steht...
Das ist schon mal schlecht. Google mal nach register_globals.
Das sollte auf off sein.
Du kannst dann die Get-Variablen (also ?action=xyz in der url) über das $_GET-Array erreichen (also z.b. $_GET['action'] in diesem Fall), POST-Variablen über das $_POST-Array und Cookie-Variablen über das $_COOKIE-Array.
Änder mal dein Skript, dass es mit register_globals = off korrekt funktionniert. Wenns dann noch Probleme gibt, mal schaun.
Hello,
Das ist schon mal schlecht. Google mal nach register_globals.
"normale" Variablen werden aber auch bei Register Globals = ON nicht wieder zur Verfügung gestellt, wenn sie nicht explizit zur Session angemeldet wurden.
Ein harzliches Glückauf
Tom vom Berg
Hi,
"normale" Variablen werden aber auch bei Register Globals = ON nicht wieder zur Verfügung gestellt, wenn sie nicht explizit zur Session angemeldet wurden.
Ja - aber wenn man $foo und $_SESSION['foo'] verwendet, kann's auch da Ueberschneidungen geben.
MfG ChrisB
Ja - aber wenn man $foo und $_SESSION['foo'] verwendet, kann's auch da Ueberschneidungen geben.
MfG ChrisB
Hi Chris!
Das scheint mir dann tatsächlich das Problem zu sein. Ich wollte nämlich über die Unterscheidung der $_SESSION['action'] und der, wie ich dachte über die URL neu übermittelten ?action= mein Script steuern - aber in $action stand dann immer der Inhalt von $SESSION['action'].
Naja, dadurch, dass ich jetzt $_GET benutze funzt alles prima.
Danke nochmal an Alle !
Gruß,
Marc.
echo $begrüßung;
Ich wollte nämlich über die Unterscheidung der $_SESSION['action'] und der, wie ich dachte über die URL neu übermittelten ?action= mein Script steuern - aber in $action stand dann immer der Inhalt von $SESSION['action'].
Dann ist das Feature register_globals eingeschaltet. Gemäß variables_order überschreiben gleichnamige Felder die Variableninhalte. Hinzu kommt noch die Session, die erst zur Laufzeit gestartet wird und damit dominierend die anderen Variableninhalte überschreibt.
Eindeutig bleibt es, wenn man sich auf register_globals nicht verlässt und direkt die EGPCS+S-Array-Elemente verwendet.
echo "$verabschiedung $name";
Hey!
Danke für die schnelle Reaktion! :)
Hallo!
?action=add
z.B. eine Variable übergeben wird, die mir einfach als $action zur Verfügung steht...
Das ist schon mal schlecht. Google mal nach register_globals.
Hab grad mal phpinfo() aufgerufen und tatsächlich...
war mir nicht klar, dass das auch mit den, in der URL übertragenen Variablen zusammenhängt, dachte das ist nur für Funktionen wichtig...
Das sollte auf off sein.
Du kannst dann die Get-Variablen (also ?action=xyz in der url) über das $_GET-Array erreichen (also z.b. $_GET['action'] in diesem Fall), POST-Variablen über das $_POST-Array und Cookie-Variablen über das $_COOKIE-Array.
ja - so mach ich es jetzt auch.
Änder mal dein Skript, dass es mit register_globals = off korrekt funktionniert. Wenns dann noch Probleme gibt, mal schaun.
muss jetzt erstmal schauen, wie ich das bei meinem provider mache..(?)
Vielen Dank !
Gruß,
Marc.
Hallo Marc!
muss jetzt erstmal schauen, wie ich das bei meinem provider mache..(?)
Wieso? Es reicht die Daten nur mit $_GET['action'] statt $action, $_POST, $_COOKIE... zu verarbeiten.
Ggf. kannst du auch am Anfang einfach $action = $_GET['action']; verwenden wenn du den Inhalt nach der Verarbeitung zusätzlich als Original brauchst.
Grüße, Matze
Hi Matze !
Ggf. kannst du auch am Anfang einfach $action = $_GET['action']; verwenden wenn du den Inhalt nach der Verarbeitung zusätzlich als Original brauchst.
Ja! Das ist in sofern gut, weil ich dann nicht alle $action in meinem Script in $_GET['action'] umwandeln muss :)
Gruß !
echo $begrüßung;
Ggf. kannst du auch am Anfang einfach $action = $_GET['action']; verwenden wenn du den Inhalt nach der Verarbeitung zusätzlich als Original brauchst.
Ja! Das ist in sofern gut, weil ich dann nicht alle $action in meinem Script in $_GET['action'] umwandeln muss :)
Du hast überlesen, dass Matze die Umkopiererei _nicht_ als ein Allheilmittel gepriesen hat. Du siehst ja, wohin das führt. Die Eindeutigkeit der Herkunft und in deinem Fall auch der Inhalt leidet unter solch einer "Vereinfachung".
echo "$verabschiedung $name";
Du hast überlesen, dass Matze die Umkopiererei _nicht_ als ein Allheilmittel gepriesen hat. Du siehst ja, wohin das führt. Die Eindeutigkeit der Herkunft und in deinem Fall auch der Inhalt leidet unter solch einer "Vereinfachung".
mmh, ich glaube ich verstehe Dich nicht ganz. In meinem script gibt es die Variable $action, die wird zur Zustands-Unterscheidung benutzt.
Wenn ich diese jetzt ganz am Anfang mit dem eindeutigen Inhalt der $_GET['action'] fülle - ist doch alles gut, oder mache ich da einen Denkfehler?
Gruß!
Marc.
echo $begrüßung;
Du hast überlesen, dass Matze die Umkopiererei _nicht_ als ein Allheilmittel gepriesen hat. Du siehst ja, wohin das führt. Die Eindeutigkeit der Herkunft und in deinem Fall auch der Inhalt leidet unter solch einer "Vereinfachung".
mmh, ich glaube ich verstehe Dich nicht ganz. In meinem script gibt es die Variable $action, die wird zur Zustands-Unterscheidung benutzt.
Wenn ich diese jetzt ganz am Anfang mit dem eindeutigen Inhalt der $_GET['action'] fülle - ist doch alles gut, oder mache ich da einen Denkfehler?
Warum willst du $_GET['action'] nach $action umkopieren? Damit es dir zufälligerweise von register_globals beim session_start() überschrieben wird? $_GET['action'] ist eindeutig anzusehen, dass es sich im einen Querystring handelt. Bei $_SESSION['action'] sieht man einen Wert aus der Sessison vor sich. Einem $action hingegen sieht man die Herkunft nicht mehr an. Tipparbeit sparen zu wollen ist ein schlechtes Argument, wenn dabei die Übersichtlichkeit leidet (und man sich noch Nebeneffekte einhandelt).
echo "$verabschiedung $name";
Hallo Marc!
mmh, ich glaube ich verstehe Dich nicht ganz. In meinem script gibt es die Variable $action, die wird zur Zustands-Unterscheidung benutzt.
Wenn ich diese jetzt ganz am Anfang mit dem eindeutigen Inhalt der $_GET['action'] fülle - ist doch alles gut, oder mache ich da einen Denkfehler?
Nein, du hast keinen Denkfehler aber beachte dedlfix' Argumente!
Du solltest in deinem Fall unbedingt $_GET['action'] bevorzugen.
Wenn es dir zu mühsam ist, alle Variablen zu ändern, benutze Notepad++ oder ein ähnliches Programm mit dem du in mehreren Dateien suchen und ersetzen kannst, oder schreib ein Script ;)
Grüße, Matze
Hello,
Wenn es dir zu mühsam ist, alle Variablen zu ändern, benutze Notepad++ oder ein ähnliches Programm mit dem du in mehreren Dateien suchen und ersetzen kannst, oder schreib ein Script ;)
Könntest Du mir so ein Script mal zeigen?
Ich kann es mir nämlich nicht vorstellen, wie das Ersetzen mittels Script funktionieren kann, insbesondere, wenn keine "Affenformulare" benutzt werden, sondern getrennte Quell- und Zieldateien.
Ein harzliches Glückauf
Tom vom Berg