Ankündigung

Einklappen
Keine Ankündigung bisher.

Weiterleitung mit header

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Weiterleitung mit header

    Hallo,
    nach absenden des Formulars möchte ich auf eine andere Seite weiterleiten.
    Ich wollte dies mit header lösen.
    PHP-Code:
    if ($mail_output)
    {
    header("Location: http://www.kontakt.de/danke.php");
    exit;

    Leider bekomme ich diese Fehlermeldung .


    Warning: Cannot modify header information - headers already sent by (output started at /homepages/42/d118xxxxxx/htdocs/kontakt.de/danke.php:10) in /homepages/42/d118xxxxxx/htdocs/kontakt.de/danke.php on line 275

    Könnt ihr mir weiterhelfen?
    Welchen Fehler habe ich produziert?
    Danke

  • #2
    Zitat von myoddo Beitrag anzeigen
    Warning: Cannot modify header information - headers already sent by (output started at /homepages/42/d118xxxxxx/htdocs/kontakt.de/danke.php:10) in /homepages/42/d118xxxxxx/htdocs/kontakt.de/danke.php on line 275

    Könnt ihr mir weiterhelfen?
    Welchen Fehler habe ich produziert?
    Steht alles da, was Du verbrochen hast.

    Google sagt zu dem Thema: "Ungefähr 26.100.000 Ergebnisse"

    Kommentar


    • #3
      "headers already sent"

      Du kannst "header"-Daten nur beim verarbeiten selbst verändern. Wenn eine Ausgabe gemacht wird, sind alle Schritte beendet und es werden nur noch Ausgaben getätigt.

      Das heißt: Vor dem Header dürfen keine Ausgaben erfolgen, dass gilt auch für "Leere Zeichen" ( Leertaste usw. ) !

      Kommentar


      • #4
        obendrein sagt "er" dir auch noch, wo die Ausgabe passiert (Zeile 10 des Scriptes "danke.php" ) ...

        also kein html, keine Leerzeilen / Leerzeichen vor <?PHP ... eventuell musst du dein Programm geeignet strukturieren, dass alle diese Ausgaben "übersprungen" werden, wenn deine header-Weiterleitung greifen soll

        Kommentar


        • #5
          Danke an zorndyuke und eagle275
          bestimmt habe ich noch nicht alles verstanden, werde mich aber heute Abend dransetzen.

          Nun muss ich noch eines loswerden.
          „ Klasse meikel !! “
          Hätte ich es verstanden, würde ich nicht nachfragen.
          Weshalb antwortest du?
          Spar dir doch die Zeit und mach was nützliches!

          Kommentar


          • #6
            naja - meikel hat trotzdem recht, myoddo ... das Thema ist so oft besprochen worden...

            Und du hast ja schon eine Fehlermeldung, mit der du arbeiten kannst - zur Not hättest du nur den Kern deiner Fehlermeldung in die Such-Zeile deines Browsers kopiert ("headers already sent") und google oder deine favorisierte Suchmaschine hätte dich mit Ergebnissen förmlich erschlagen

            Kommentar


            • #7
              Zitat von myoddo Beitrag anzeigen
              Danke an zorndyuke und eagle275
              bestimmt habe ich noch nicht alles verstanden, werde mich aber heute Abend dransetzen.

              Nun muss ich noch eines loswerden.
              „ Klasse meikel !! “
              Hätte ich es verstanden, würde ich nicht nachfragen.
              Weshalb antwortest du?
              Spar dir doch die Zeit und mach was nützliches!
              Entschuldige, Spar du dir die Zeit und Werf Google deinen Fehler hin, dort wirst du dann auf mehr als 20.000 Ergebnisseiten fündig von der die erste in den ersten Einträgen schon mindestens 3 PHP-/Entwickler-Foren liefert, in der haarklein erklärt ist wie man das Problem löst und warum das Problem überhaupt existiert.

              Der Fehler ist außerdem schon ein alter Schuh. Gute Grundlagen-Tutorials die sich mit dem Umgang mit Cookies und Sessions beschäftigen, sollten diese "Grundlage" bereits vermittelt haben, sodas es selbst erklärend sein sollte warum PHP dort meckert.

              Wenn du das geschafft hast, konsultier bitte auch unsere Forenregeln, respektiere sie und änder jedwege genutzte Domainnamen im Quellcode auf die entsprechenden allgemeingültigen und erwünschten example.*-Domains.

              Kommentar


              • #8
                Hast ja recht.
                Allerdings wenn man die halbe Nacht dransitzt und nix blickt und gleich eine so „schlaue“ Antwort kommt.
                Na egal ich lebe damit !
                Aber Danke noch einmal @eagle275
                Wünsche dir einen schönen Tag.
                Eventuell muss ich mich aber am Abend noch einmal melden.

                Kommentar


                • #9
                  Hallo,
                  also mit header bekomme ich die Weiterleitung nicht hin.
                  (Habe zu viele Ausgaben vor dem header)
                  Wie macht ihr den Abschluss eines Formulars?
                  Ich dachte mir, sobald alle Pflichtfelder ausgefüllt sind und der Submit Button betätigt wird,
                  soll eine neue Seite geöffnet werden. (Dies wollte ich mit header bewerkstelligen)
                  Dann Dachte ich mir ich mache dies mit action.
                  PHP-Code:
                  echo"<form action=\"kontakt-gesendet.php\"method=\"POST\" >"
                  Nun ist aber das Problem, dass beim betätigen des Submit Buttons gleich weitergeleitet wird.
                  (zumindest in meinem Script)
                  Könnt ihr mir ein Gedankenanstoß geben, wie ich weiterverfahren kann.
                  Bitte nicht in den falschen Hals bekommen. KEINEN CODE
                  Ich meine nicht mach mir, tu mir, brauche ich.
                  Möchte dies schon selbst schreiben.
                  Allerdings fehlt mir die Richtung wo ich ansetzen kann.
                  Bitte um Gedankenanstoß


                  Danke

                  Kommentar


                  • #10
                    Pack die Auswertung deines Formulars VOR die Ausgaben die Du tätigst.
                    Ich habe bei meinen Projekten eine Index.php die alles nötige includiert. Also den html-head, die Seitenstruktur, menue usw. Formularauswertung(en) werden jedoch zuerst includiert dann erst der übliche "Seiteninhalt".

                    Ganz grob...

                    PHP-Code:
                    <?php
                    session_start
                    ();
                    error_reporting(E_ALL);
                    require_once(
                    "inc/dbdata.php");
                    require_once(
                    "inc/DBClass.php");
                    $db=new Database($loghost,$dbname,$logname,$logpw);
                    $db->connect();

                    if (isset(
                    $_GET['action'])){
                      if (
                    $_GET['action'] == "savetermin"){
                        
                    // "Termin speichern...;
                        // das ist eine formularauswertung. 
                      
                    }
                      
                    // Weitere stehen auch alle noch in diesem Block und VOR
                      // der eigentlichen Seitenausgabe
                    }
                    require_once(
                    "functions.php");
                    include (
                    "meta_head.inc.php"); # head-Bereich
                    include ("head.php"); # # body-Bereich mit Layout
                    include("inc/register_kunden.php");
                    include (
                    "end.php");
                    $db->close();
                    ?>

                    Kommentar


                    • #11
                      Zitat von myoddo Beitrag anzeigen
                      (Habe zu viele Ausgaben vor dem header)
                      Wie macht ihr den Abschluss eines Formulars?
                      Eingabe-Verarbeitung-Ausgabe.

                      Vor der Weiterleitung hat also keine Ausgabe etwas verloren. Wenn deine vorhandene Struktur es schwierig macht, die Formularverarbeitung an den Anfang zu setzen, gib zumindest das HTML nicht direkt aus sondern speichere es im Output Buffer oder einer Variablen und gib es erst zum Schluss aus. Das wäre immerhin schonmal ein Schritt in die richtige Richtung und ist leichter nachträglich umzusetzen.

                      Noch ein nicht-funktionaler Tipp: Für die Weiterleitung nach Formularverarbeitung gibt es den Statuscode "303 See Other", standardkonform geht es also so:
                      PHP-Code:
                      header("Location: http://www.kontakt.de/danke.php"true303); 

                      Kommentar


                      • #12
                        Ich verstehe absolut nicht, warum Weiterleitungen bei einer Formularverarbeitung überhaupt notwendig sein sollen? Hab ich bisher noch nicht gebraucht.
                        Ein 'Danke' kann ich doch genauso includieren wie alles andere.
                        Wenn ich danach ganz woanders hin möchte, macht es doch auch ein normaler Link.

                        Kommentar


                        • #13
                          Post-Redirect-Get-Pattern: verhindert das erneute absenden des Formulars beim aktualisieren der Seite.

                          Kommentar


                          • #14
                            Zitat von fab Beitrag anzeigen
                            verhindert das erneute absenden des Formulars beim aktualisieren der Seite.
                            So dachte ich auch.
                            Oder man könnte die Submit Buttons verschwinden lassen.

                            Kommentar


                            • #15
                              Das Thema ist in diesem Forum mehr als ausgiebig besprochen.
                              Der Hinweis auf Google von Meikel ist durchaus angemessen - unverschämt ist nur deine Antwort darauf.
                              *close*

                              Kommentar

                              Lädt...
                              X