2010-03-19 3 views
5

Ich habe versucht, dieses Problem für viele Stunden zu debuggen, aber ohne Erfolg. Ich benutze PHP seit vielen Jahren und bin nach langer Zeit wieder in das System zurückgekehrt, weshalb ich immer noch etwas eingerostet bin.PHP-basierte Sitzungsvariable, die keinen Wert behält. Funktioniert auf localhost, aber nicht auf Server

Wie auch immer, meine $ _SESSION vars behalten ihren Wert aus irgendeinem Grund nicht, den ich nicht herausfinden kann. Die Seite funktionierte perfekt auf localhost, aber das Hochladen auf den Server schien es zu stören.

Das erste, was ich überprüft habe, war die PHP.ini Servereinstellungen. Alles scheint in Ordnung zu sein. In der Tat ist mein Login-System Session-basiert und es funktioniert perfekt. Nun, da ich weiß, dass $ _SESSIONS ordnungsgemäß funktionieren und ihren Wert für meine Anmeldung beibehalten, nehme ich an, dass der Server eingerichtet ist und das Problem in meinem Skript liegt.

Hier ist eine abgespeckte Version des Codes, die ein Problem verursacht. $ type, $ order und $ style werden nicht beibehalten, nachdem sie über eine GET-Variable gesetzt wurden. Der Benutzer klickt auf einen Link, der eine Variable über GET setzt, und diese Variable bleibt für den Rest ihrer Sitzung erhalten.

Gibt es ein Problem mit meiner Logik, das ich nicht sehe?

Wenn mir jemand in die richtige Richtung zeigen kann, würde ich es sehr schätzen. Vielen Dank.

Antwort

7

Unglaublich!

Nach drei Stunden Debuggen, ich habe

das Problem heraus

HostGator, mein Nicht-mehr-geliebter Host läuft ihren Standard ini mit register_globals ON

Ich kann nicht glauben, Dies.

Also meine Variablen von $ Typ wurde mit $ _SESSION ['Typ'] überschrieben und sie wurden als die gleichen behandelt. Es war also ein Serverproblem, das das Problem verursachte, nicht meine Codierung. Das ist toll zu wissen, aber ich möchte, dass ich meine Haare 5 Stunden lang zurück ziehe.

Ich hoffe, dass dies jemand hilft, der HostGator verwendet und ist als Hölle verwirrt.

+0

Das habe ich auch schon einmal erlebt. Es ist einfach schrecklich, wenn du nicht so ein komisches Verhalten erwartest. – Gumbo

+0

@Foo Danke, Bruder! Du hast meine 5 Stunden gespeichert. Danke vielmals. –

+0

Ich habe mich gerade bei +1 angemeldet, sowohl Ihre Frage als auch Ihre Antwort. Es hat mich verrückt gemacht. –

1

Sie müssen die session_start() Funktion aufrufen. Vor dem Zugriff auf die Variable $_SESSION.

Dann wird es alle Session-Variablen Sie behalten ..

+0

Der session_start() wird in der ersten erforderlichen/included-Datei ganz oben aufgerufen. Andere sitzungsbasierte Variablen funktionieren, sodass die Sitzung erstellt und perfekt gestartet wird. – Foo

0

Ich glaube, Sie Sie einen Anruf() in der top.php Recht auf session_start gemacht haben darauf hingewiesen? Und eine andere Sache, die ich bemerke, ist, dass Sie Integer-Felder über den PHP-Filter validieren. Stellen Sie sicher, dass es sich um ganzzahlige Werte handelt, oder dass Sie zwangsläufig mit Nullwerten enden. Führen Sie einen Test durch, um festzustellen, ob die Werte TYPE, ORDER und STYLE vor der Validierung gesetzt sind. Beachten Sie, dass die Verwendung des PHP-Filters für einen bestimmten Typ validiert und nicht gespeichert wird. Ich denke nicht, dass $ Typ Ihre Daten speichern würde, es wäre eher eine boolesche Überprüfung. Versuchen Sie, den Variablen SESSION VARIABLES die Variablen $ _GET [] zuzuweisen. Hoffe das hilft.

+0

Danke für die Vorschläge. Ich habe es ausprobiert, alle Variablen werden gesetzt. In der Tat, die $ _SESSION ['Typ'] oder was auch immer mit meinem Code gesetzt wird. Es behält den Wert nicht bei, während Sie die Site weiter durchsuchen. Es gibt keinen anderen Ort, der es unscharf oder überschreibt. – Foo

Verwandte Themen