Jnnbo: header('Location:')

Moin,

ich habe eine Frage, kann ich auf der Ziel Seite, die nach einer header('Location:') Weiterleitung kommt eine Meldung ausgeben lassen "Das Angebot wurde erfolg verschickt und gespeichert".

Wenn ich die Ziel Seite ohne Weiterleitung aufrufe, soll diese natürlich nicht kommen. Ich hoffe ihr versteht was ich meine.

akzeptierte Antworten

  1. Hallo Jnnbo,

    ich habe eine Frage, kann ich auf der Ziel Seite, die nach einer header('Location:') Weiterleitung kommt eine Meldung ausgeben lassen "Das Angebot wurde erfolg verschickt und gespeichert".

    Wenn ich die Ziel Seite ohne Weiterleitung aufrufe, soll diese natürlich nicht kommen. Ich hoffe ihr versteht was ich meine.

    Kurz: nein.

    Länger: nein, das musst du in deiner Bestätigungsseite einbauen (z.B. nicht auf confirmation.php umleiten, sondern auf confirmation.php?success=1 und dann nach $_REQUEST['success'] schauen) oder via Cookie mitschicken und dann beim nächsten 200er-Response anzeigen (das ist der Weg, den Rails geht).

    LG,
    CK

    1. Hallo Christian,

      Länger: nein, das musst du in deiner Bestätigungsseite einbauen (z.B. nicht auf confirmation.php umleiten, sondern auf confirmation.php?success=1 und dann nach $_REQUEST['success'] schauen) oder via Cookie mitschicken und dann beim nächsten 200er-Response anzeigen (das ist der Weg, den Rails geht).

      schade, ich hab gehofft, ich könnte es irgendwie anderes lösen. Denn jetzt habe ich ein Problem mit meiner htaccess Datei:

      RewriteRule kunde/angebote-rechnungen/([^/]*)$      a-kunden-pdf [l]
      

      Wenn ich in meiner URL also ein ?success=1 mit dran hänge, findet mein Script keine Daten mehr. Jetzt muss ich schauen wie ich das beheben kann.

  2. @@Jnnbo

    Moin,

    ich habe eine Frage, kann ich auf der Ziel Seite, die nach einer header('Location:') Weiterleitung kommt eine Meldung ausgeben lassen "Das Angebot wurde erfolg verschickt und gespeichert".

    Wenn ich die Ziel Seite ohne Weiterleitung aufrufe, soll diese natürlich nicht kommen. Ich hoffe ihr versteht was ich meine.

    Die Zielseite (ohne Deppenleerzeichen) weiß nichts davon, ob sie durch eine wie auch immer geartete Weiterleitung angefragt wurde.

    Es sei denn, du bringst diese Information in die Anfrage mit hinein, bspw. durch einen Parameter.

    Statt header('Location: http://example.net') bspw. mit Parameter header('Location: http://example.net?weitergeleitet'), den du in $_GET abfragen kannst.

    LLAP 🖖

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  3. Hallo,

    ich habe eine Frage, kann ich auf der Ziel Seite, die nach einer header('Location:') Weiterleitung kommt eine Meldung ausgeben lassen "Das Angebot wurde erfolg verschickt und gespeichert".

    Wenn ich die Ziel Seite ohne Weiterleitung aufrufe, soll diese natürlich nicht kommen. Ich hoffe ihr versteht was ich meine.

    Arbeitest Du mit Session? Kannst Du dir in der Session merken, ob etwas verschickt wurde? Kannst Du das anzeigen lassen, wenn etwas eingetragen wurde in der Session? Kannst Du das auch wieder löschen lassen aus der Session, indem der Kunde dann einen Post aus der angezeigten Informationsseite auslöst "Weitere Bestellung aufgeben"?

    Dann sieht die URL immer gleich aus. Durch die Sessiondaten wird gesteuert, ob dieses Formular mit der Meldung in der Bestätigungsseite angezeigt wird, oder ob da steht "Rien ne vas plus!"

    @ Gunnar und Christian: Was haben solche Daten in URLs zu suchen?

    LG Ich

    1. @@Head

      @ Gunnar und Christian: Was haben solche Daten in URLs zu suchen?

      Wozu ist denn der Query-Teil eines URIs da, wenn nicht für Parameter?

      LLAP 🖖

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. Hallo Gunaaaaaar!

        @ Gunnar und Christian: Was haben solche Daten in URLs zu suchen?

        Wozu ist denn der Query-Teil eines URIs da, wenn nicht für Parameter?

        Netter Versuch, den OP vollständig in die Wüste zu schicken.

        Ich denke aber, dass der in diesem Fall klüger sein wird, als Du.

        Irgendwo wurde hier vorhin sogar etwas über Sicherheit von Shops nachgedacht.

        @Innbo:

        Man sollte den Kunden nicht nur die Info geben "Angebot verschickt" sondern auch etwas mehr Bezug zur Anfrage geben. Also Datum dazu, Kurzdarstellung der Anfrage, ... Das nennt man dann Servicefreundlichkeit :-)

        LG XSS-Teufel

    2. Hallo Head,

      Arbeitest Du mit Session? Kannst Du dir in der Session merken, ob etwas verschickt wurde? Kannst Du das anzeigen lassen, wenn etwas eingetragen wurde in der Session? Kannst Du das auch wieder löschen lassen aus der Session, indem der Kunde dann einen Post aus der angezeigten Informationsseite auslöst "Weitere Bestellung aufgeben"?

      die Sache mit der Session hört sich sehr gut an, ich habe bereits eine Session, die ich wie folgt starte:

      session_start();
      

      Hier könnte ich ja einen Wert mehr hineinschreiben? Meine Idee ist:

      $_SESSION['success'] = "1";
      header('Location: kunde/angebote-rechnungen/'.$wk->kd_code);
      

      Dieser Wert könnte ich dann auf der zweiten Seite prüfen, wenn ja, dann Meldung ausgeben.

      <?php if ($_SESSION['success'] == 1) { echo "OK"; }?>
      

      Die Frage ist, kann ich diese Session danach sofort wieder löschen, wenn ich eine weitere Seite anklicke oder direkt wenn die Meldung angezeigt wurde, wie z.B. hier auf dem Forum (der Grüne Balken).

      Die Seite ist nicht öffentlich zugänglich, ist nur ein kleines Tool für mich um meine Kunden etwas besser zu verwalten :)

      1. Hallo Head,

        sorry, ich war zu langsam, kann mein Beitrag leider nicht mehr editieren. Die Überprüfung habe ich so umgesetzt:

         <?php if ($_SESSION['success'] == 1) { 
        		echo "OK";
        		unset($_SESSION['success']);
         }?>
        

        damit habe ich die Session sofort wieder gelöscht. Rufe ich die Seite jetzt direkt auf, bekomme ich allerdings eine Meldung "Undefined index: success " die muss ich noch los werden, dann habe ich es geschafft. Danke für den Tipp mit der Session.

      2. Hallo Head,

        sorry, ich war zu langsam, kann mein Beitrag leider nicht mehr editieren. Die Überprüfung habe ich so umgesetzt:

         <?php if ($_SESSION['success'] == 1) { 
        		echo "OK";
        		unset($_SESSION['success']);
         }?>
        

        damit habe ich die Session sofort wieder gelöscht. Rufe ich die Seite jetzt direkt auf, bekomme ich allerdings eine Meldung "Undefined index: success " die muss ich noch los werden, dann habe ich es geschafft. Danke für den Tipp mit der Session.

        EDIT:

        Ok, hab es hinbekommen

                <?php 
        		if (isset($_SESSION['success'])) {
        			if ($_SESSION['success'] == 1) { 
        					echo "OK";
        					unset($_SESSION['success']);
        			 }
        		}
        	?>