Redirect ohne header location?

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

  • Redirect ohne header location?

    Ich wäre für Hilfe sehr dankbar, denn an dem Problem bastle ich schon seit Stunden:
    Ich kann kein redirect über "header location:" machen, weil php als cgi beim provider läuft
    Gibt es sonst eine Möglichkeit den user auf einer andere Seite weiterzuleiten, nachdem er "submit" gedrückt hat (kann kein meta refresh verwenden, weil ich nicht weiß, wie lange der user zum Ausfüllen des Formulars braucht.
    Habe auch probiert Javascript in ein php if statement zu integrieren, dass nach submit aufgerufen wird. Folgendes funktioniert leider nicht (d.h. alles im if Block klappt außer das redirect):....
    if ($submit)
    { ..../*perform Mysql update
    mysql_close();
    echo "<SCRIPT language='JavaScript'>";
    echo "<!--";
    echo "window.location='confirm.php';";
    echo "//-->";
    echo "</SCRIPT>";
    }
    ...
    Vielen Dank für jeden Hinweise!

  • #2
    Gibt es sonst eine Möglichkeit den user auf einer andere Seite weiterzuleiten, nachdem er "submit" gedrückt hat
    PHP-Code:
    <form action="URL" 

    Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

    Kommentar


    • #3
      window.location.href='confirm.php';

      *verschieb*
      Kissolino.com

      Kommentar


      • #4
        ja, url Veschiebung direkt im form tag würde funktionieren, aber das Problem nur verschieben. Bei submit werden eine Reihe von Validierungs- und user Authentifizierungschecks "onsubmit durchgeführt"; erst wenn alle die Bedingungen erfolgt sind soll das mysql update geschehen und DANN der user auf eine Seite gelenkt werden, wo das Eingabeformular nicht mehr sichtbar ist und nur die update confirmation message erscheint.
        Habe inzwischen einen Tip zur Eindbindung des javascript codes in php bekommen. Folgendes funktioniert:
        if ($submit)
        { ..../*perform Mysql update
        mysql_close();
        echo '<script language="Javascript">';
        echo 'window.location="http://www.site.com/page.htm"';
        echo '</script>';
        }

        Hat natürlich den Nachteil, das Javascript aktiviert sein muss. Irgendwie muss es auch in php auch gehen. Folgender code wird von Dreamweaver erzeugt, der funktioniert aber leider nicht "stand alone" und ich habe nicht rausbekommen, wie man in php unter cgi es dennoch schafft einen header zu verschicken (eigebettet in ein kompletten Dreamweaver php code funktioniert die folgende Weiterleitung nämlich mysteriöserweise):
        $insertGoTo = "confirm.php";
        if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
        }
        header(sprintf("Location: %s", $insertGoTo));

        Kommentar


        • #5
          erst wenn alle die Bedingungen erfolgt sind soll das mysql update geschehen und DANN der user auf eine Seite gelenkt werden
          mach das update doch auf der neuen seite

          Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

          Kommentar


          • #6
            Re: Redirect ohne header location?

            Original geschrieben von tho68
            kann kein meta refresh verwenden, weil ich nicht weiß, wie lange der user zum Ausfüllen des Formulars braucht.
            Was hat das eine mit dem anderen zu tun ... ?!
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              ...könnte den ganzen Authentifzierungs- und Valiederungskram (ca. 450 Zeilen) in eine neue Seite kopieren, aber dann stehe ich wieder vor dem gleichen Problem: Für den Fall, dass etwas in den Formulareingaben nicht stimmt, muss ich das Formular neu anzeigen; und wenn wieder ein Fehler drinnen ist muss ich erneut eine Seite mit 450 Zeilen aufrufen usw. und am Ende: wenn alles stimmt, soll das Formular gar nicht mehr angezeigt werden, sondern nur noch: "Update war erfolgreich". Und dafür brauche ich dann ein redirect auf eine Seite ohne Formular. Ich denke ich werde den Javascript code benutzen, aber interessieren würde es mich trotzdem, wie Dreamweaver es schafft, den eigebetteten header aus dem oben genannten Codeschnippsel erfolgreich zu verschicken, obwohl das eigentlich unter CGI nicht gehen soll (und mit einem einfachen header:location Befehl (stand alone) auch tatsächlich nicht klappt.

              Kommentar


              • #8
                zu meta refresh: wenn ich den refresh-Wert auf eine bestimmte Zeit stelle, dann wir das redirect bei abgelaufenem Zeitpunkt vorgenommen, unabhängig davon, ob der user mit dem Ausfüllen des Formulars fertig ist oder nicht (das wäre natürlich gar nicht gut, wenn plötzlich nach z.B. 5 Minuten ein automatisches redirect durch meta refresh vorgenommen wird, unabhängig davon, ob submit gedrückt wurde oder nicht). Daher ist ein (statisches) meta refresh zum redirect bei Formulareingabe wohl nicht sinnvoll.

                Kommentar


                • #9
                  du denkst viel zu kompliziert.

                  1. input.php
                  ... keine Metarefresh oder dergleichen, eine stinknormale Eingabeform
                  <form ... action="dbinput.php" ...

                  2. dbinput.php
                  <?php ... // daten in die Datenbank schreiben ... ?>
                  <script language="javascript">
                  window.location.href="confirm.php";
                  </script>

                  3. confirm.php
                  // hier Bestätigung or whateveryouwant ausgeben

                  Kommentar


                  • #10
                    danke, so ähnlich habe ich es auch gemacht (zwar mit $PHP_SELF um Schritt 2 zu sparen, aber mit dem gleichen Javascipt code um von 1 zu 3 zu gelangen; wichtig ist das echo mit einfachem Anführungszeichen (')auszuführen und den Javascript redirect mit ", sonst geht`s nämlich nicht). Das funktioniert, setzt allerdings aktiviertes Javascript beim user voraus. Aber das ist ja meistens der Fall.
                    Das "kompliziterte" Denken rührt nur aus dem Versuch zu verstehen, wie es ein Programm wie Dreamweaver schafft, automatischen php Code zu generieren, mit dem man die header output Sperre im CGI mode umgehen kann; den oben genannten Dreamweaver Codeschnipsel, der das (in einem noch komplexeren eingewickelten Code) schafft, verstehe ich nämlich nicht. Ist aber eher ein theoretisches Interesse, praktisch werde ich es mit dem einfachen Javascript code machen.

                    Kommentar

                    Lädt...
                    X