Session-Variable üblebt Redirect nicht
-
-
Indem man einfach session_start();schreibt. Wenn du eine Session mit session_start(); anfängst, dann wird am ende der Datei das $_SESSION Array gespeichert und wieder gefüllt, wenn du in einem Anderen script wieder session_start() machst, da geht auch nix verloren.
Das einige was sein kann, ist dass dein Browser den Session-Keks (meist PHPSESSID) nicht mag und wieder ausspukt xD -
Kommt drauf an was du willst, die spezielle Session['test'] mit unset löschen
Oder gleich mit session_destroy() die gesammte Session
Edit: huch verlesen
Tobse, warum sollte ein Browser die PHPSESSID ausspucken? -
Natürlich ist die Session gestartet.
Im Übrigen benutz ich FF - da haben Sessions bis jetzt immer problemlos gefunztNaja, jedenfalls funktioniert das Ganze wenn ich mit <meta http-equiv="refresh" content="0; url=#foot" /> weiterleite.
Kann doch nich sein oder? -
Glasguckel auspacken , die Gugel meint das du $_SESSION['test'] = '12345'; nach dem Redict im Code hast
-
Der Redirect findet nach der Auswertung eines Formulars statt und die Session soll eine Fehlermeldung übertragen.
Da normale Variablen den Redirect nicht überleben mach ich das mit Session-Vars.Die Weiterleitung soll erreichen das die Seite wieder zum Form zurückspringt, weil es sich ganz unten auf der Seite befindet.
-
Öhm dazu brauchst du aber keinen Redict, kannst auch nach unten springen ohne einen Redict...
Abgesehen davon könnte du hier einfach GET Parameter an die Rediction hängen..
Aber was soll ich sagen, ich kann nicht Hellsehen von dem Herr keine Ahnung was du falsch machst nach deiner Fehlerbeschreibung(da ja Meta geht) füllst du die Session erst nach dem Redict
mfg
-
Ich schau mir das nochmal an - is recht komplex aufgebaut das Ding.
Der Redirect is auch an eine Bedingung geknüpft. Vielleicht hab ich da ja was verbocktDanke jedenfalls
EDIT:
Danke für den Tipp mit dem "ohne Redirect springen".
Auf die Idee bin nicht gekommen und wusste auch nicht dass das geht wenn man im action-Attribut einfach das Sprungziel angibt...<form action="index.html#foot" method="post">
Jetzt funzt alles
-
Zu dem Problem:
Das hatte ich auch schon mal und da musste ich über nochmal eine Datei springen.
Dann hats bei mir gefunzt, aber innerhalb der gleichen Datei redirecten geht nicht.Zumindest habe ich da auch keine Lösung gefunden.
Hab das sogar hier gepostet, mom ich suchs mal raus. -
Naja, wenn du dem browser sagst, deine beue adresse soll jetzt #form sein, kann der ja da reininterpretoeren was er will. Du könntest auchnoch versuchen, ihn nach datei.php#foo zu leiten, das kann det FF nicht falsch verstehen.
-
aber innerhalb der gleichen Datei redirecten geht nicht.
Von was redet ihr bitte, du kannst überall überall hin redictenmfg
-
Ja klar geht das, aber ich hatte dasselbe Problem, als ich auch in der gleichen Datei redirecten wollte.
Als ich über eine andere Datei redirecte und dann wieder zurück, dann gings. -
Dann hast du vermutlich was falsch gemacht.
-
Das einzige was ich mir vorstellen kann ist das du zb in der index.php auf dieselbe index.php redictest aber es dem script nicht sagst, so entsteht eine Endlosredictschleife die zum Abbruch führt
mfg
-
Nä, das hätt ich bestimmt bemerkt.
Es ging einfach nur die Session Variable nicht, wie hier schon Donkey beschrieb.So wies aussieht, weiss also keiner eine Lösung dazu.
Ich sag jetzt halt nur, falls du - Donkey - das wieder brauchen solltest, dann merk dir, geh einfach über eine redirect-PHP-Seite und dann wieder zurück ins index Script, natürlich aufpassen wegen Endlosschleifen. -
Nä, das hätt ich bestimmt bemerkt.
Es ging einfach nur die Session Variable nicht, wie hier schon Donkey beschrieb.So wies aussieht, weiss also keiner eine Lösung dazu.
Ich sag jetzt halt nur, falls du - Donkey - das wieder brauchen solltest, dann merk dir, geh einfach über eine redirect-PHP-Seite und dann wieder zurück ins index Script, natürlich aufpassen wegen Endlosschleifen.
Ohne Code weiß natürlich keiner wo der Fehler liegt und kann eine Lösung bieten. Aber einen Fehler habt ihr beide definitiv gemacht. PHP ist bei euch sicherlich nicht "kaputt", auch wenn viele Leute das gerne so haben wollen wenn etwas nicht klappt, da es ja keinesfalls an ihrem Code liegen kann, der selbstverständlich richtig ist...Wenn man es richtig macht funktioniert sowas völlig problemlos.
-
Ich habe nicht gesagt, PHP sei kaputt, das stimmt nicht.
Ausser in meinem Falle von den Segmentation Faults.Den Script habe ich leider nicht mehr, aber ich weiss, wie er aufgebaut wurde:
- Aufruf: Session Start
- Wenn Session Variable x nicht gesetzt ist, wird sie mit einer ID gefüllt
- Überprüfung auf GET Var redir
- Wenn redir nicht no ist
- Weiterleitung auf den gleichen Script aber mit GET Var redir=no mit header()
- Sonst Ausgabe von SESSION Variable x
- Wenn redir nicht no ist
Das geht aber nicht, es wird nichts angezeigt.So hat er das wahrscheinlich auch gemacht.
Und ich habe wirklich NUR das reingeschrieben, mehr nicht. -
Ich habe nicht gesagt, PHP sei kaputt, das stimmt nicht.
Ausser in meinem Falle von den Segmentation Faults.Den Script habe ich leider nicht mehr, aber ich weiss, wie er aufgebaut wurde:
- Aufruf: Session Start
- Wenn Session Variable x nicht gesetzt ist, wird sie mit einer ID gefüllt
- Überprüfung auf GET Var redir
- Wenn redir nicht no ist
- Weiterleitung auf den gleichen Script aber mit GET Var redir=no mit header()
- Sonst Ausgabe von SESSION Variable x
- Wenn redir nicht no ist
Das geht aber nicht, es wird nichts angezeigt.So hat er das wahrscheinlich auch gemacht.
Und ich habe wirklich NUR das reingeschrieben, mehr nicht.
Natürlich geht das, habe grad mal eben exakt deine Beschreibung nachgebaut:PHP<?php session_start(); $_SESSION['var'] = !isset($_SESSION['var']) ? uniqid() : $_SESSION['var']; if(!isset($_GET['redir']) || $_GET['redir']!="no") { header("Location: mytest.php?redir=no"); } echo $_SESSION['var']; ?>
Was soll da jetzt nicht funktionieren? Läuft einwandfrei.
Allerdings habe ich mir grad nochmal das Eröffnungspost angeschaut. Der TE hat uns da offensichtlich eine wichtige Fehlermeldung verheimlicht. Diese ist so einleuchtend und selbsterklärend, dass er sich den Thread hier auch hätte sparen können, bzw. zumindest den Hinweis darauf hätte bringen müssen:
Damit begibst du dich in einen Endlos-Loop, die Seite ruft sich immer wieder selbst auf. Und der Browser gibt auch eine entsprechende Meldung aus.
Du kannst mit PHP nicht innerhalb einer HTML-Datei springen, weil PHP serverseitig läuft. header("Location: xxx") führt immer zu einem neuen Seitenaufruf. Und wenn das selbe Script immer wieder aufgerufen wird und der header()-Befehl nicht in einem einschränkenden if-Befehl liegt, der dafür sorgt, dass er nur beim ersten Aufruf der Seite ausgeführt wird, hat man einen klassischen Endlos-Loop.