Weiterleitung auf beliebige Seite
Claus
- javascript
0 Sönke Tesch0 Claus
Hi Forum,
ich hab in ein PHP-Script ein JavaScript eingefügt,
dass bei einem Erfolgreichen Login auf sich selbst
verweist. Nur leider funktioniert das Script nicht immer.
Ich rufe einfach mitten in einer Seite die Funktion
location.href="index.php"
auf.
Mit meinem IE6.0 geht es, aber mit Opera oder IE < 6.0
geht es nicht. Bei diesen Browsern muss ich die Seite nochmal aktualisieren oder komplett neu aufrufen.
Das Cookie der PHP-Session wird gesetzt, da es nach neuem Laden der Seite funktioniert.
Was kann man bei der Location-Funktion falsch machen?
Gibt es da solche Unterscheide zwischen den einzelen Browsern?
Danke!
ciao
Claus
ich hab in ein PHP-Script ein JavaScript eingefügt,
dass bei einem Erfolgreichen Login auf sich selbst
verweist.
Ich kenne Deine Anwendung nicht, aber hältst Du es nicht für sinnvoller, wenn Du PHP gleich eine Weiterleitung machen lässt, anstatt PHP erst Javascript ausgeben zu lassen, welches dann wiederum die Aufgabe erledigt?
Da könntest Du genauso gut Dein Auto auf einen Autotransporter laden, um zum Einkaufen zu fahren - geht auch, ob's irgendwie Sinn macht, ist eine andere Frage. Noch viel wichtiger: Genauso wie Du mit dem Autotransporter möglicherweise nicht auf den Parkplatz einiger Supermärkte kommst, gibt es garantiert einige Leute, die Javascript nicht eingeschaltet haben und deshalb nicht weitergeleitet werden. Und genau wie diese Leute ohne Javascript wirst auch Du Dir lieber einen anderen Laden suchen, anstatt Dich mit dem unfähigen Supermarktbesitzer und seinem dämlichen, schlecht gebauten Parkplatz rumzuärgern ;> (Wenn Du jetzt fragst, "Wer ist denn schon so blöd und schaltet Javascript aus?", hast Du das Beispiel nicht verstanden.)
Eine Weiterleitung erreichst Du in PHP, indem Du einfach einen entsprechenden HTTP-Kopf ausgibst (Antworten von Webservern bestehen aus den eigentlichen Daten und einem Kopf mit Zusatzinfos wie Größe, Typ, letzterer Änderungszeitpunkt).
Für Kopfdaten steht die Funktion header() (siehe PHP-Anleitung) bereit, HTTP-Antwortcodes für die Weiterleitung sind in http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3 beschrieben. Für Dich möglicherweise das richtige Konstrukt:
header("HTTP/1.0 303 See other");
header("Location: http://dein.ser.ver/naechste/seite");
Gruß,
soenk.e
So schlau war ich auch schon, aber vor dem Location("http://..");
wird eine Session initzialisiert und ich bekomm immer
"Header already send".
Somit wollte ich es mit JavaScript machen.
Aber ich werd wohl mein Script ändern müssen und das Template-Parsing
weiter nach hinten schieben.
cya
Claus