Ankündigung

Einklappen
Keine Ankündigung bisher.

header(sprintf("Location: %s", $BackGoTo)); <- funktioniert nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • header(sprintf("Location: %s", $BackGoTo)); <- funktioniert nicht

    Hallo Gemeinde,

    ich schicke ein Formular ab und alles wird auch, wie gewünscht, in die Datenbank eingetragen. Nur der Browser leitet den User nicht auf die Ursprungsseite mittels

    PHP-Code:
     header(sprintf("Location: %s"$BackGoTo)); 
    zurück, sondern bleibt auf der formularverarbeitenden, leeren Seite stehen.

    Ich weiss, dass vor header(sprintf.... keinerlei html-Code ausgegeben werden darf und habe das Script auch mehrfach daraufhin untersucht. Nichts gefunden und trotzdem gibt es kein redirect.

    hier mal der Code:

    PHP-Code:
    <?php 

    require_once('Connections/connect.php');
    require_once(
    'includes/func.php');
    $BackGoTo "../index.php?id=locations_start";


    session_start();
    if(isset(
    $_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
    unset(
    $_SESSION['captcha_spam']);



    if ((isset(
    $_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
      
    $updateSQL sprintf("INSERT INTO fc_locations (Name, Strasse, Nummer, PLZ, Ort, Region, Beschreibung, Stichworte, Besonderheiten, Link, B_Firma_Inst, B_Name, B_Vorname, B_Strasse, B_Nummer, B_PLZ, B_Ort, B_Telefon, B_Email, A_Name, A_Vorname, A_Strasse, A_Nummer, A_PLZ, A_Ort, A_Telefon, A_Email, Freigabe, Datum, Scout, Scoutname) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",
                           
    GetSQLValueString($_POST['Name'], "text"),
                           
    GetSQLValueString($_POST['Strasse'], "text"),
                           
    GetSQLValueString($_POST['Nummer'], "int"),
                           
    GetSQLValueString($_POST['PLZ'], "int"),
                           
    GetSQLValueString($_POST['Ort'], "text"),
                           
    GetSQLValueString($_POST['Region'], "text"),      
                           
    GetSQLValueString($_POST['Beschreibung'], "text"),
                           
    GetSQLValueString($_POST['Stichworte'], "text"),
                           
    GetSQLValueString($_POST['Besonderheiten'], "text"),
                           
    GetSQLValueString($_POST['Link'], "text"),
                           
    GetSQLValueString($_POST['B_Firma_Inst'], "text"),
                           
    GetSQLValueString($_POST['B_Name'], "text"),
                           
    GetSQLValueString($_POST['B_Vorname'], "text"),
                           
    GetSQLValueString($_POST['B_Strasse'], "text"),
                           
    GetSQLValueString($_POST['B_Nummer'], "int"),
                           
    GetSQLValueString($_POST['B_PLZ'], "int"),
                           
    GetSQLValueString($_POST['B_Ort'], "text"),
                           
    GetSQLValueString($_POST['B_Telefon'], "text"),
                           
    GetSQLValueString($_POST['B_Email'], "text"),
                           
    GetSQLValueString($_POST['A_Name'], "text"),
                           
    GetSQLValueString($_POST['A_Vorname'], "text"),
                           
    GetSQLValueString($_POST['A_Strasse'], "text"),
                           
    GetSQLValueString($_POST['A_Nummer'], "int"),
                           
    GetSQLValueString($_POST['A_PLZ'], "int"),
                           
    GetSQLValueString($_POST['A_Ort'], "text"),
                           
    GetSQLValueString($_POST['A_Telefon'], "text"),
                           
    GetSQLValueString($_POST['A_Email'], "text"),
                           
    GetSQLValueString($_POST['Freigabe'], "text"),
                           
    GetSQLValueString(FormatTimestamp($_POST['Datum']), "date"),
                           
    GetSQLValueString($_POST['Scout'], "text"),
                           
    GetSQLValueString($_POST['Scoutname'], "text"));

      
    mysql_select_db($database_connect$connect);
      
    $Result1 mysql_query($updateSQL$connect) or die(mysql_error());

      
    header(sprintf("Location: %s"$BackGoTo));
    }
    }


    ?>
    Wo könnte der Fehler liegen?

    Danke für hilfreiche Gedanken.

    Gruß Steffen

  • #2
    Der erste offensichtliche Fehler ist, dass du hinter dem Location: keinen vollständigen URL inkl. Protokollangabe angibst - der ist da nämlich per Definition gefordert.

    Wenn's damit immer noch nicht klappt - dann teste per Debugausgaben, ob dein Script überhaupt bis zu der Stelle kommt.
    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

    Kommentar


    • #3
      Danke für die schnelle Antwort.

      Wenn ich
      PHP-Code:
       header(sprintf("Location: http://www.meineseite.de"$BackGoTo)); 
      angebe, passiert genauso wenig.

      Wie kann ich das ganze debuggen? bzw. was genau meinst du damit?

      Kommentar


      • #4
        Na per echo simple Testausgaben machen, um zu schauen, ob das Script überhaupt in die Verzweigungen rein geht ...
        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

        Kommentar


        • #5
          PHP-Code:
          echo 'Schritt 1...99'
          Dann weißt du welcher Schritt nicht mehr ausgeführt wird und da musste dann nachsehen wo der Fehler ist.

          Natürlich kannst du auch wichtige Variablen ausgeben, oder beides...
          Signatur:
          PHP-Code:
          $s '0048656c6c6f20576f726c64';
          while(
          $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

          Kommentar


          • #6
            Okay, wenn ich also das Result1 ausgeben lasse

            PHP-Code:
              echo $Result1
            dann erscheint auf der Seite nur eine 1. Bis dahin kommt das Script also.
            Und gleich danach soll der header(sprintf... ja greifen. Tut er aber nicht. (was er in diesem Fall ja auch nicht kann, da die Ausgabe von $Result1 ja nun eine html-Ausgabe ist und somit der header nicht mehr greift - richtig?)

            Kommentar


            • #7
              Ist das das komplette Script?

              Hast du das mal irgendwo online? Oder was sagt bspw. das Net-Panel von Firebug dazu?
              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

              Kommentar


              • #8
                $BackGoTo debuggen, prüfen ob or die greift... Error reporting einschalten.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  @Chris

                  Das ist das komplette Script, welches die Formulardaten aus der vorangehenden Seite verarbeitet.

                  Auf der vorangehenden Seite leitet das Formular mittels $editFormAction = "location_user_insert_form.php"; auf eben diese Seite weiter, in der das von mir gepostete Script enthalten ist.

                  Die Seite kannst du dir auch "live" ansehen, die URL sende ich dir per IM.

                  Kommentar


                  • #10
                    @nikosch

                    $BackGoTo gibt den richtigen Wert aus.
                    Muss man Error reporting irgendwo "einschalten" ? Ich dachte, error_reporting(E_ALL); würde reichen... ?

                    Kommentar


                    • #11
                      OK, die 1 als Ausgabe sehe ich, aber der Location-Header wurde definitiv nicht gesendet, das zeigt Firebug ganz deutlich.
                      Allerdings scheint vor der 1 auch noch eine Leerzeile zu sein.

                      Hast du etwa das error_reporting nicht auf E_ALL und/oder display_errors nicht auf on stehen? Falls nein, solltest du das schleunigst ändern.
                      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                      Kommentar


                      • #12
                        Ich habe jetzt alles auf error_reporting(E_ALL); gesetzt.
                        Daraufhin kam eine Warnung, dass der Header bereits gesendet wurde (durch die Result1-Ausgabe).
                        Ich habe dann die Ausgabe wieder auskommentiert und auf einmal klappte es. ???? Das verstehe ich nun überhaupt nicht. Das gleiche habe ich doch vorher bereits mehrere Male probiert. Es kann doch nicht sein, dass header(sprintf... nur klappt, wenn error_reporting(E_ALL); eingetragen ist???
                        *grübel*
                        Trotzdem - habt vielen Dank für die Hilfe!

                        Gruß Steffen

                        Kommentar


                        • #13
                          Zitat von estebu Beitrag anzeigen
                          Ich habe jetzt alles auf error_reporting(E_ALL); gesetzt.
                          Daraufhin kam eine Warnung, dass der Header bereits gesendet wurde (durch die Result1-Ausgabe).
                          Ich habe dann die Ausgabe wieder auskommentiert und auf einmal klappte es. ???? Das verstehe ich nun überhaupt nicht. Das gleiche habe ich doch vorher bereits mehrere Male probiert. Es kann doch nicht sein, dass header(sprintf... nur klappt, wenn error_reporting(E_ALL); eingetragen ist???
                          *grübel*
                          Trotzdem - habt vielen Dank für die Hilfe!

                          Gruß Steffen
                          warum sprintf benutzen wenn man eh nicht formatiert ?

                          PHP-Code:
                          header("Location: ".$wohinsollerspringen); 
                          zu deiner errorreporting frage: Das Errorreporting default ist in der php-config vorgegeben, die kann per script ( ini_set("error_reporting", ... ), error_reporting( ... ) ) gesetzt werden, oder wenn man das nicht ausliefern möchte was seine eigene entwicklungsumgebung so braucht auch per htaccess:

                          Code:
                          php_flag display_errors off
                          php_flag log_errors on
                          php_value track_errors on
                          nachzulesen hier: .htaccess tricks and tips.. part one: tips, tricks, hints, examples; juicy .htaccess information.

                          Die Apache-By-Directory Konfiguration benötigt aber dementsprechende AllowOverride-Rechte für deine Verzeichnisse.
                          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                          Kommentar

                          Lädt...
                          X