Weiterleitung *nach* html-Ausgabe???

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

  • Weiterleitung *nach* html-Ausgabe???

    Hallo Forum,

    dies ist meine erste Frage hier, würde mich über Hilfe natürlich freuen :-)

    Ich möchte auf eine andere Seite weiter leiten, *nachdem* bereits Daten ausgegeben wurden. Geht das wirgedwie?

    konkret geht es um folgendes:

    - auf Seite a klickt man auf einen Form submit
    - es erscheint php-Seite b mit "bitte warten" während die Bearbeitung auf dem Server läuft (z.B. Datenbankzeug und dann Verschicken eines Bestätigungsmails).
    - nachdem der Server seine Sache gemacht hat, soll jetzt auf Seite c gewechselt werden ("Danke. Mail wurde verschickt").

    Da ich auf Seite b ja schon "bitte warten" ausgegeben habe, kann ich die normale "header"-Anweisung natürlich nicht nutzen, möchte aber trotzdem irgendwie auf Seite c leiten, wenn das php-Script beendet ist... Mit JavaScript wärs ja kein Problem, aber die Seite soll auch funktionieren, wenn jemand kein JavaScript mag...

    Gibts so was überhaupt?

    Danke für Tipps!

  • #2
    Meta-Refresh in die "bitte warten"-Seite einbauen und solange der Server noch nicht fertig ist immer wieder die selbe Seite ausgeben. Ist er fertig, leitest du mit header() um oder gibst die gewünschte Folgeseite direkt aus.

    Ich frage mich allerdings, wie lange dein Server braucht um eine Mail zu verschicken und woher du wissen willst, wann er damit fertig ist. Verrätst du uns den Trick?

    Kommentar


    • #3
      Original geschrieben von onemorenerd
      Meta-Refresh in die "bitte warten"-Seite einbauen und solange der Server noch nicht fertig ist immer wieder die selbe Seite ausgeben. Ist er fertig, leitest du mit header() um oder gibst die gewünschte Folgeseite direkt aus.
      So wie ichs jetzt habe, würde der refresh ja laufend die Verarbeitung neu starten und mit der Mailverschickerei wieder von vorne beginnen. Oder versteh ich da etwas falsch? Ich fang mal an, meine Hirnzellen in Betrieb zu setzen und darüber nachzudenken :-)

      Ich frage mich allerdings, wie lange dein Server braucht um eine Mail zu verschicken und woher du wissen willst, wann er damit fertig ist. Verrätst du uns den Trick?
      Also zuoberst im Script steht die "bitte warten Seite", dann flush().
      Anschliessend macht das Script die Datenbank-Sachen und bereitet das Antwortmail auf. Schliesslich benutze ich die class.phpmailer.php (weil ich authentifizierte Mails verschicken will), von der ich mit if($mail->Send()) erfahre, ob sie erfolgreich ausgeführt wurde. Wenn das alles abgearbeitet wurde, will ich eben weiterleiten.

      Je nach Belastung des Servers dauert das Erledigen schon eine kleine Weile, und selbst wenn es nur ein, zwei Sekunden sind, ist das halt für viele schon laaaange und sie klicken noch x-mal auf Submit, wenn sie können :-) Drum gebe ich nach Submit gleich die "Bitte warten"-Seite aus.

      Natürlich weiss ich nicht, ob das Mail dann auch vom smtp-Server bereits weg ist, aber immerhin habe ich die Wartezeit, die das php-Script selber für seine Ausführung braucht, überbrückt, die Besucher darüber informiert, dass überhaupt was läuft und damit gleichzeitig mehrfaches Submit-Klicken verhindert.

      Kommentar


      • #4
        auf Umweg gelöst (nicht 100% befriedigend...)

        Nur zur Info für die, die's interessiert:

        Nachdem mir nichts Eleganteres eingefallen ist, habe ich jetzt folgendes gemacht:

        Am Schluss des Scripts, wenn alles abgearbeitet ist, gebe ich ein JavaScriptchen aus, das per window.location.href auf die neue Seite leitet. Darunter ein <noscript> tag, mit einem <div> drin, das per CSS als Layer über die "bitte warten"-Meldung kommt und in dem ein normaler anklickbarer Link "hier geht es weiter" ist.

        Ich hätts ja gern auch für Leute automatisch, die JavaScript ausgeschaltet haben, also, wenn noch jemandem was einfällt, bin ich immer noch dankbar...

        Kommentar

        Lädt...
        X