Gästebuch: Weiterleitung nach Eintrag auf Hauptseite
Mastershrimp
- php
Hallo!
Z.Z. bastele ich an einem Gästebuch. Es besteht aus 2 Dateien:
1. Die Hauptseite, die die Einträge ausliest und anzeigt, und auf der man einen neuen Eintrag eintragen kann.
2. Die Datei, die die Daten in die Datenbank schreibt.
Bis jetzt ist es so, dass die 2. Datei, nachdem sie einen Eintrag eingefügt hat eine Seite mit einem Link anzeigt, der wieder zurück auf die Hauptseite führt.
Ist es auch möglich, dass nach dem Eintragen der Daten der User direkt wieder auf die Hauptseite zurückgeleitet wird?
JavaScript-Weiterleitungen nach 2 Sekunden (wie in vielen Foren) meine ich nicht.
Danke schonmal im Vorraus!
Gruß
Mastershrimp
Moin Mastershrimp,
Ist es auch möglich, dass nach dem Eintragen der Daten der User direkt wieder auf die Hauptseite zurückgeleitet wird?
Nach erfolgreichem Eintrag könntest Du das nutzen:
echo '
<head>
<meta http-equiv="Refresh" content="0; url=hauptseite.php">
</head>';
regds
Mike
Hallo Mastershrimp,
Ist es auch möglich, dass nach dem Eintragen der Daten der User direkt wieder auf die Hauptseite zurückgeleitet wird?
wenn du vorher nichts ausgegeben hast, könnte dir ein
header('Location: http://www.example.com/...');
(siehe auch das vierte Beispiel auf http://de3.php.net/header) helfen.
Grüße aus Nürnberg
Tobias
Hallo,
Ist es auch möglich, dass nach dem Eintragen der Daten der User direkt wieder auf die Hauptseite zurückgeleitet wird?
Wenn Du schon PHP zur Verfuegung hast, mach die Umleitung doch damit:
header ("Location: http://www.example.com");
http://www.php.net/manual/de/function.header.php
* Hiermit wird der Benutzer _sofort_ weitergeleitet.
* Die URL muss vollstaendig sein (inkl. "http://")
* Vor dem Header darf gar rein nichts an den Browser geschickt werden.
http://www.dclp-faq.de/q/q-fehler-header.html
Wenn Du ein ganz besonders braver Junge sein willst, gibst Du
_nach_ dem HTTP-Redirect noch ein paar Zeilen HTML aus
mit einem klickbaren Link zur neuen Seite.
Das ist eine Empfehlung in der HTTP/1.1 Spezification (RFC 2616)
bei der Beschreibung des Status Codes 302 (Found):
[http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3]
"Unless the request method was HEAD, the entity of the response
SHOULD contain a short hypertext note with a hyperlink to the new URI(s)."
=> So kommen sicher alle auf die Zielseite, sogar die (wenigen) Benutzer,
welche in ihrem Browser automatische Weiterleitungen abgeschaltet haben.
---
Um ein paar Sekunden verzoegert oder sofort: Mit Meta-Tag oder JavaScript.
Das ist allerdings unzuverlaessig (weil es z.B. in einigen Browsern vom Benutzer
abgeschaltet werden kann) und hat Nachteile bezueglich History u.s.w.
Gruesse,
Thomas
Hallo zusammen!
Erst einmal vielen Dank für die schnellen Antworten! Es klappt alles perfekt.
Wegen dieser Empfehlung in der HTTP/1.1-Specification habe ich noch eine Frage:
Meinen die damit so etwas wie folgender Code?
header("Location: http://www.mastershrimp.com/test/php/gaestebuch/guestbook.php"); // Umleitung des Browsers
exit;
//Ohne Weiterleitung:
print("<br><br><br><br><div class='error'><b>Danke! Dein Eintrag wurde erfolgreich eingetragen!<br><br><a class='error' href='http://www.mastershrimp.com/test/php/gaestebuch/guestbook.php'>» zurück zum Gästebuch «</a></b></div>");
Wäre das so richtig?
Gruß
Mastershrimp
Hallo,
Erst einmal vielen Dank für die schnellen Antworten! Es klappt alles perfekt.
Sehr schoen!
Wegen dieser Empfehlung in der HTTP/1.1-Specification habe ich noch eine Frage:
header("Location: http://www.mastershrimp.com/test/php/gaestebuch/guestbook.php"); // Umleitung des Browsers
exit;
print("<br><br><br><br><div class='error'><b>Danke! Dein Eintrag wurde erfolgreich eingetragen!<br><br><a class='error' href='http://www.mastershrimp.com/test/php/gaestebuch/guestbook.php'>» zurück zum Gästebuch «</a></b></div>");Wäre das so richtig?
Naja, fast.
Das exit; muss weg bzw. weiter nach unten, sonst wird ja der HTML-Code
ja gar nicht an den Browser geschickt. Das soll er aber.
Der Browser soll beides erhalten: HTTP-Head _und_ ein paar Zeilen HTML (mit Link).
Und Du solltest nicht mit <br> anfangen, sondern ein vollstaendiges, valides
HTML-Dokument ausliefern. Dieses kann sehr kurz sein, siehe unten.
Dabei wuerde ich auf Schnickschnack wie Abstaende und CSS verzichten.
Die Chance, dass jemand diese Zeilen ueberhaupt zu sehen kriegt, sind
sehr klein... ;-)
header("Location: http://www.mastershrimp.com/test/php/gaestebuch/guestbook.php");
print('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'."\n");
print('<title>Danke</title>');
print('<p><b>Danke! Dein Eintrag wurde erfolgreich eingetragen!</b></p>');
print('<p><a href="http://www.mastershrimp.com/test/php/gaestebuch/guestbook.php">Zurueck zum Gaestebuch</a></p>');
exit;
Gruesse,
Thomas
Das exit; muss weg bzw. weiter nach unten, sonst wird ja der HTML-Code
ja gar nicht an den Browser geschickt. Das soll er aber.
Also quasi so?
header("Location: http://www.mastershrimp.com/test/php/gaestebuch/guestbook.php"); // Umleitung des Browsers
//Ohne Weiterleitung:
print($head);
print("<br><br><br><br><div class='error'><b>Danke! Dein Eintrag wurde erfolgreich eingetragen!<br><br><a class='error' href='http://www.mastershrimp.com/test/php/gaestebuch/guestbook.php'>» zurück zum Gästebuch «</a></b></div>");
exit;
$head ist weiter oben so definiert:
$head = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n<HTML>\n<HEAD>\n<TITLE>Mastershrimp [ Gästebuch v.1.2b ] - Eintrag einfügen</TITLE>';
$head .= '<link rel="stylesheet" type="text/css" href="gb_style.css">\n</HEAD>\n<BODY>';
Die Chance, dass jemand diese Zeilen ueberhaupt zu sehen kriegt, sind
sehr klein... ;-)
Was muss man eigentlich machen, um diese Weiterleitung zu verhindern? Kann man das mit einem Standart-IE oder einem Standart-Mozilla? Das fällt ja nicht in die Rubrik "JavaScript", oder?
Danke weiterhin
Gruß
Mastershrimp
Hallo,
Der Quellcode sieht OK aus.
Was muss man eigentlich machen, um diese Weiterleitung zu verhindern? Kann man das mit einem Standart-IE oder einem Standart-Mozilla?
AFAIK nein.
In Opera kann man Weiterleitungen ganz bequem
in den Optionen ausschalten (unter "Privatsphaere").
AFAIK betrifft das sowohl META-Redirects als
auch HTTP-Redirects.
Jedenfalls kriege ich so die "kurze HTML-Seite"
angezeigt bei folgenden URLs mit 302-Weiterleitung:
http://www.comparis.ch/
http://www.gelbeseiten.ch/
http://www.weisseseiten.ch/
http://www.adsl.ch/
Gruesse,
Thomas