Session beendet if-Anweisung?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
ausgabe
ausschnitt
bearbeiten
bedingung
befehl
beginn
code
datei
folgendes problem
frage
funktionieren
header
machen
meinung
richtig liege
session
vergessen
vermutung
zitat
-
Ich habe folgendes Problem: immer wenn ich innerhalb der if-Bedingung versuche auf die Session Variable zuzugreifen wird die Bedingung beendet.
(das klappt, echo wird ausgeführt)
if (isset($_SESSION["vote"])) { echo '<script type="text/javascript" src="scripts/vote.js"></script>'; }
(das klappt nicht, echo wird nicht ausgeführt)
if (isset($_SESSION["vote"])) { unset($_SESSION["vote"]); echo '<script type="text/javascript" src="scripts/vote.js"></script>'; }
(und das klappt auch nicht nicht, was ich mir erst recht nicht erklären kann)
if (isset($_SESSION["vote"])) { echo '<script type="text/javascript" src="scripts/vote.js"></script>'; unset($_SESSION["vote"]); }
auch session_destroy() klappt nicht. Ich finde einfach keine Erklärung für mein Problem.
Beitrag zuletzt geändert: 8.9.2010 15:19:05 von albert92 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
Ich hoffe dir hilft es.
Was ich gerne mache ist:
Das macht alles ungültig und unset alle Variablen der Sessionsession_unset(); session_destroy(); setcookie("NameDesCookies", "", time()+(-3600), "/");
Gruß
illuxio
Beitrag zuletzt geändert: 8.9.2010 15:58:43 von illuxio -
ho ;)
Ich habe schon wieder einiges vergessen, aber...
Kann es sein, dass du Sessions nur bearbeiten kannst, bevor eine Ausgabe gemacht wird?
D.h.
if (isset($_SESSION["vote"])) { echo '<script type="text/javascript" src="scripts/vote.js"></script>'; }
Geht, weil keine Session bearbeitet wird, sondern nur abgefragt wird...
if (isset($_SESSION["vote"])) { unset($_SESSION["vote"]); echo '<script type="text/javascript" src="scripts/vote.js"></script>'; }
Sollte meiner Meinung nach gehen, sofern vor dem if keine andere Ausgabe (echo o.ä.) gemacht wurde...
if (isset($_SESSION["vote"])) { echo '<script type="text/javascript" src="scripts/vote.js"></script>'; unset($_SESSION["vote"]); }
Kann meines Wissensstands nach gar nicht funktionieren, da bereits eine Ausgabe gemacht wurde, und der TCP Header schon versandt wurde...
Also wenn ich richtig liege geht dein destroy o.ä. nur dann, wenn du vor dem Aufruf dieses Befehls keine Ausgabe an den Clienten geschickt hast. (Also kein echo, print, oder ähnliches ausführen lässt.)
Kann aber auch an etwas anderem liegen, das war nur meine erste Vermutung :P
lg
Sincer -
Also wenn ich richtig liege geht dein destroy o.ä. nur dann, wenn du vor dem Aufruf dieses Befehls keine Ausgabe an den Clienten geschickt hast. (Also kein echo, print, oder ähnliches ausführen lässt.)
Zunächst mal die Frage: Ist diese Datei, aus der du Ausschnitte postet, auch die, die die Session startet? Falls es eine andere Datei ist musst du auch hier start_session() am Beginn der Datei einfügen, um die Session zu übernehmen bzw am Leben zu halten.
Zu dem Zitat: Zerstören kannst du meiner Meinung nach die Session wann du willst, ebenso Variablen leeren, nur starten musst du sie VOR einer Ausgabe. Denn wie willst du auf eine Session-Variable zugreifen, die du eine Zeile zuvor zerstört bzw gelöscht hast?!
-
Danke sincer, das war's. War mir jetzt auch neu, ich dachte immer, dass das nur für session_start() gilt.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage