Mastershrimp: Gästebuch: Weiterleitung nach Eintrag auf Hauptseite

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

  1. 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

  2. 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

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  3. 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

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. 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

      1. 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

        1. 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

          1. 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

            --
            Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
            Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
            Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/