Brei Geschrieben 31. August 2004 Teilen Geschrieben 31. August 2004 Hi im Netz hab ich folgendes dazu gefunden: <?php header("Location: http://$SERVER_NAME/"); ?> FÜr meine Zwecke passt das aber nicht. Ich möchte in/nach einem php skript entscheiden ob ich nach A oder nach B weiterleite. Am besten auch noch mit ner kleinen pause. Wie gehtn das? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 31. August 2004 Teilen Geschrieben 31. August 2004 schau ma hier: http://de3.php.net/manual/en/function.header.php verzögerung geht nur mit meta-weiterleitung: http://de.selfhtml.org/html/kopfdaten/meta.htm#weiterleitung Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 31. August 2004 Autor Teilen Geschrieben 31. August 2004 danke, aber das scheint mir auf die schnelle etwas zu kompliziert. Spricht etwas gegen das hier? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>MobiTruck Daten hinzufuegen</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <?php echo "<meta http-equiv=\"refresh\" content=\"3; URL=datei.html\">" ?> </head> <body> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
varg Geschrieben 31. August 2004 Teilen Geschrieben 31. August 2004 Das stimmt so schon, ich frag mich nur warum du für die eine Zeile, in der so wie ich das seh auch keine Variablen oder irgendwas von PHP is nen echo verwendest, und das nich direkt als HTML machst Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 31. August 2004 Autor Teilen Geschrieben 31. August 2004 ja, schon klar. Es sieht ja auch eher so aus: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>MobiTruck Daten hinzufuegen</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <?php //hier arbeitet mein script irgendwas //Fallunterscheidung für $weiterleitung echo "<meta http-equiv=\"refresh\" content=\"3; URL=" . $weiterleitung . "\">" ?> </head> <body> [/PHP] Ach ja, und kann ich sicher gehen dass mein script abgearbeitet ist bevor weitergeleitet wird? Auch wenn ich eine zeit von 0 angebe? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
varg Geschrieben 31. August 2004 Teilen Geschrieben 31. August 2004 Ah ok, hätt ich mir zwar denken können, aber mal wieder verplant PHP parst Zeile für Zeile, von oben nach unten durch das Script. Also wenn du das Echo wirklich ganz am Schluss hast, sollte dein Script auch wirklich funktionieren. //Edit: Ok, diesmal hab ich noch dran gedacht, nachzudenken *g* Du kannst dir auch ne If Schleife bauen, die z.b. abfragt, ob $weiterleitung schon gesetzt wurde: <? // Viel Gefasel vom Script if (isset($weiterleitung)) { echo "Das ding für weiterleitung was ich nich c&pn kann weil dat bei edit nich geht hmpf"; } ?>[/php] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 1. September 2004 Teilen Geschrieben 1. September 2004 Ich bräuchte auch etwas ähnliches. Ich möchte nach Abarbeitung eines PHP-Skripts, an eine andere Seite weiterverlinken ohne dass der Benutzer es merkt, bzw nicht wirklich bemerkt, wissen darf er es schon. Ich müsste an die Zieldatei GET-Parameter anhängen und das geht ja mit include('blabla.php'); nicht, include ist ja in dem Sinn auch keine Weiterleitung. Was ich bei obigem nicht verstehe: die Meta-Tags müssen ja im HTML-Head stehen, und das wiederum steht ja am Anfang der HTML-Datei. Wie kann ich dann am Schluss des Skripts ein Meta-Tag machen?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 1. September 2004 Teilen Geschrieben 1. September 2004 Wenn er es nicht wirklich merken soll, das heißt, das keine Ausgabe stattfindet, dann kannst du das auch mit header("Location: <ziel>"); machen. An das <ziel> kannst du dann auch deine GET-Parameter basteln, wobei ich mal irgendwo gelesen habe, daß das nicht standardkonform sei. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 1. September 2004 Teilen Geschrieben 1. September 2004 Ich bräuchte auch etwas ähnliches. Ich möchte nach Abarbeitung eines PHP-Skripts, an eine andere Seite weiterverlinken ohne dass der Benutzer es merkt, bzw nicht wirklich bemerkt, wissen darf er es schon. Ich müsste an die Zieldatei GET-Parameter anhängen und das geht ja mit include('blabla.php'); nicht, include ist ja in dem Sinn auch keine Weiterleitung. Was ich bei obigem nicht verstehe: die Meta-Tags müssen ja im HTML-Head stehen, und das wiederum steht ja am Anfang der HTML-Datei. Wie kann ich dann am Schluss des Skripts ein Meta-Tag machen?? du müsstest dann am besten mit dem outputbuffer arbeiten: http://de3.php.net/manual/en/function.ob-start.php am anfang nen output buffer gestartet und dann kannst du deine weiterleitung machen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 1. September 2004 Autor Teilen Geschrieben 1. September 2004 Was ich bei obigem nicht verstehe: die Meta-Tags müssen ja im HTML-Head stehen, und das wiederum steht ja am Anfang der HTML-Datei. Wie kann ich dann am Schluss des Skripts ein Meta-Tag machen?? Das PHP-Script befindet sich VOR dem Meta Tag: (praktisch im head der html Datei) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Titel</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <?php //hier arbeitet mein script irgendwas!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //Fallunterscheidung für $weiterleitung !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //zum Schluss kommt das: echo "<meta http-equiv=\"refresh\" content=\"3; URL=" . $weiterleitung . "\">" //hier kannst du dann die Weiterleitung mit echo ausgeben ?> </head> <body>[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 1. September 2004 Teilen Geschrieben 1. September 2004 und wo ist jetzt noch das problem? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 1. September 2004 Autor Teilen Geschrieben 1. September 2004 und wo ist jetzt noch das problem? Ich hab keins, ich wollte FinalFantasy nur sagenk, dass damit sein Problem (so wie ich es verstanden habe) schon gelöst sein dürfte. Einfach: $weiterleitung = "naechsteseite.html?irgendwashintendran"; echo "<meta http-equiv=\"refresh\" content=\"3; URL=" . $weiterleitung . "\">" [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 2. September 2004 Teilen Geschrieben 2. September 2004 Hmm, stimmt, wenn ich das PHP-Skript noch im Head mache, könnte es gehen. Hatte jedenfalls das Problem, dass headers('Location xyz.php'); bei mir lokal auf dem XAMPP funktionierte (genau wie session_start() nicht am Anfang vom Script) auf meinem Webspace aber dann Probleme gemacht hat, da Could not send Header, because already sent..... Ich probiers heut nachmittag mal. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 2. September 2004 Teilen Geschrieben 2. September 2004 oder, wie kills schon gesagt hat, mit nem output-Buffer arbeiten. Ist wohl fast noch sauberer. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 2. September 2004 Teilen Geschrieben 2. September 2004 Ja, danke. Hat funktioniert. Man muss es sogar Puffern, anders funktioniert es nicht. Geh ich recht in der Annahme, dass der Browser die Headers sofort ausführt, wenn er sie bekommt? Auch wenn er noch nicht das ganze Dokument, oder wenigstens alle Header hat? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 2. September 2004 Teilen Geschrieben 2. September 2004 Hmm .. das kann gut sein. Wenn da ne relocation im Header drin ist, schaut er sich wahrscheinlich gar nicht erst den eigentlichen Inhalt des Pakets an. Davon würde ich zumindest ausgehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 2. September 2004 Teilen Geschrieben 2. September 2004 Eigentlich andersrum Ich hab ein session_start() am Anfang, welches ja scho Header sendet, und beim header('Location: xyz.html') wird dann gemeckert. Sprich die Weiterleitung hat nicht funktioniert. Das andere schon Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 2. September 2004 Teilen Geschrieben 2. September 2004 Dann könnte es natürlich auch sein, daß session_start() nicht nur header-Informationen sendet, sondern auch schon HTML-Code Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 2. September 2004 Teilen Geschrieben 2. September 2004 Dann könnte es natürlich auch sein, daß session_start() nicht nur header-Informationen sendet, sondern auch schon HTML-Code session start sendet definitiv keine Ausgaben, sonst würde alle meine Anwendungen nicht laufen.... poste dochma deinen code der ausgeführt wird bis es zum Aufruf von session_start() kommt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 2. September 2004 Autor Teilen Geschrieben 2. September 2004 Was ich an diesem header-Zeug nicht verstehe, was hat es genau für einen Sinn? Wenn der Browser "gleich weiterleitet" dann kann er ja den code im script garnicht ausführen. Wo ist der Sinn? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 2. September 2004 Teilen Geschrieben 2. September 2004 Nun, das Script wird serverseitig ausgeführt. Der Client bekommt gar keinen PHP-Code zu sehen. Er bekommt nur noch das HTTP-Packet, bestehend aus dem Header und üblicherweise einem HTML-Inhalt. Daher ist sogar ganz nett, z.B. Formulare an sich selbst zu senden, die Eingabedaten zu verarbeiten und, wenn alles korrekt lief über einen Header-Befehl (sofern noch keine Ausgabe stattfand) auf eine Hauptseite/Erfolgsseite/wasauchimmer weiterzuleiten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 2. September 2004 Autor Teilen Geschrieben 2. September 2004 sorry, aber irgendwie durchschau ich das nicht. Also Script wird ausgeführ, und html der Seite wird auch angezeigt. Wann wird dann "weitergeleitet"? Und php-code sieht der client ja sowieso nie. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 3. September 2004 Teilen Geschrieben 3. September 2004 Also: 1. Client fordert eine Seite von einem Server an 2. Server überprüft (je nach config), was es ist (html, php, perl, cgi etc.) 3. Wenn es in unserem Falle eine PHP-Datei ist, dann liefert er die Datei nicht direkt aus, sondern übergibt sie ersteinmal an den PHP-Interpreter 4. Der PHP-Interpreter "interpretiert",durchläuft das PHP-Script 5. Alle Ausgaben, die mit echo, print oder ähnlichem gemacht werden, werden nun an den Client weitergegeben. In der Regel sollten das also HTML-konforme Ausgaben sein. 5.1. Wenn nun im PHP-Script irgendwo eine header()-Anweisung steht, dann sollte dies geschehen, bevor eine Ausgabe mit print oder echo geschieht. Dieser Befehl sendet dann den im Parameter übergebenen String als Header-Befehl. (Zur Erinnerung: Ein HTTP-Paket ist aufgeteilt in Header und Content. Im Header stehen alle Steuer- und Status-Informationen, im Content der eigentliche Inhalt). 5.1.1. Wenn im PHP-Script nun ein header("Location: blabla.htm"); steht, wird der Client dann zwar umgeleitet, ohne daß der Benutzer es mitbekommt, das PHP-Script wird trotzdem fertig abgearbeitet, es wird dort nicht automatisch abgebrochen oder so. Erst der Client erhält mit diesem Header-Befehl die Aufforderung, nun blabla.htm anzufordern, das tut nicht der Server. Ich hoffe, das war richtig und nicht zu konfus. Benjamin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 8. September 2004 Teilen Geschrieben 8. September 2004 Ja, man muss hier ganze genau unterscheiden, was auf Clientseite und Serverseite passiert. Ich hatte schon dass Problem, dass ich nen Header gesendet hab, und nicht dran gedacht habe, dass das Script ja weiterläuft. Ich sags immer so, PHP baut eigentlich nur eine HTML-Seite zusammen, die dann an den Client geschickt wird. Im Prinzip könnte man auch alles aus statischem HTML machen, nur dass halt dann die Inhalte auch fest wären. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.