PHP-Weiterleitung auf eine andere Seite nach dem Absenden des Formulars

Lesezeit: 7 Minuten

Ich habe alle Ihre Posts über das Einfügen von Headern in eine PHP-Formulardatei gelesen, um den Benutzer auf eine andere URL umzuleiten, NACHDEM das Formular gesendet wurde – aber ich kann nicht herausfinden, wie das geht. Unten ist mein Code. Können Sie mir zeigen, wo ich den Header/die Weiterleitung platzieren muss, damit die Informationen per E-Mail gesendet werden und der Benutzer dann zu einer anderen HTML-Seite geht?

    <?php
    if(isset($_POST['email'])) {

    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "[email protected]";
    $email_subject = "Mailing List Form";

    function died($error) {
        // your error code can go here
        echo "We are very sorry, but there were error(s) found with the form you
       submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }

   // validation expected data exists
    if(!isset($_POST['first_name']) ||
        !isset($_POST['last_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['telephone']) ||
        !isset($_POST['company']) ||
        !isset($_POST['street']) ||
        !isset($_POST['city']) ||
        !isset($_POST['state']) ||
        !isset($_POST['zip'])) {
        died('We are sorry, but there appears to be a problem with the form you 
    submitted.');      
    }

    $first_name = $_POST['first_name']; // required
    $last_name = $_POST['last_name']; // required
    $email_from = $_POST['email']; // required
    $telephone = $_POST['telephone']; // required
    $company = $_POST['company']; // required
    $street = $_POST['street']; // required
    $city = $_POST['city']; // required
    $state = $_POST['state']; // required
    $zip = $_POST['zip']; // required

    $error_message = "";
    $string_exp = "/^[A-Za-z0-9 .'-]+$/";
  if(!preg_match($string_exp,$first_name)) {
    $error_message .= 'The First Name you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$last_name)) {
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
  }  
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$company)) {
    $error_message .= 'The Company you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$street)) {
    $error_message .= 'The Street you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$city)) {
    $error_message .= 'The City you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$state)) {
    $error_message .= 'The State you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$zip)) {
    $error_message .= 'The Zip Code you entered does not appear to be valid.<br />';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = "Response from Mailing List Page.  Please enter in database.\n\n";

    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "First Name: ".clean_string($first_name)."\n";
    $email_message .= "Last Name: ".clean_string($last_name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Telephone: ".clean_string($telephone)."\n";
    $email_message .= "Company: ".clean_string($company)."\n";
    $email_message .= "Street: ".clean_string($street)."\n";
    $email_message .= "City: ".clean_string($city)."\n";
    $email_message .= "State: ".clean_string($state)."\n";
    $email_message .= "Zip: ".clean_string($zip)."\n";


// create email headers
$headers="From: ".$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);

?>

<!-- include your own success html here -->

Thanks for subscribing to our mailing list



<?php
}
?>

  • Keine Antwort, aber bitte wählen Sie einen anderen Weg, um E-Mail-Adressen zu validieren.

    – PeeHaa

    17. Juni 2013 um 22:18 Uhr

  • Setzen header("Location: thank_you_page.php"); nach dem @mail($email_to, $email_subject, $email_message, $headers); und erstellen thank_you_page.php mit Botschaft Ihrer Wahl.

    – Funk Forty-Niner

    17. Juni 2013 um 22:26 Uhr


Gleich nach @mail($email_to, $email_subject, $email_message, $headers);

header('Location: nextpage.php');

Beachten Sie, dass Sie niemals „Danke, dass Sie unsere Mailingliste abonniert haben“ sehen werden.

Das sollte auf der nächsten Seite sein, wenn Sie einen Text echoen, erhalten Sie eine Fehlermeldung, weil die Header bereits erstellt worden wären, wenn Sie umleiten möchten, geben Sie niemals Text zurück, nicht einmal ein Leerzeichen!

Geben Sie Ihrem Eingabetyp zunächst einen Namen, wie zum Beispiel diesen name="submitform".

und fügen Sie diese dann in Ihre PHP-Datei ein

if (isset($_POST['submitform']))
    {   
    ?>
<script type="text/javascript">
window.location = "http://www.google.com/";
</script>      
    <?php
    }

Vergessen Sie nicht, die URL auf Ihre zu ändern.

  • In einigen Fällen scheint dies zuverlässiger zu sein. Ich hatte eine Seite, die ein unregelmäßiges Verhalten mit der Header-Methode zeigte, der Wechsel zu dieser Javascript-Technik scheint sie geheilt zu haben.

    – Jeremy Jung

    13. Januar 2019 um 15:01 Uhr

  • Danke dafür. ein Header-Problem zu haben, das nicht zu verschwinden scheint. Warning: Cannot modify header information - headers already sent by

    – mukolweke

    20. Februar um 12:24 Uhr

PHP Weiterleitung auf eine andere Seite nach dem Absenden des Formulars
Johann

Wenn Ihre Umleitung in PHP erfolgt, sollte vor der Umleitungsanweisung nichts an den Benutzer zurückgesendet werden.

Sehen Header Für mehr Information.

Denken Sie daran, dass header() aufgerufen werden muss, bevor eine tatsächliche Ausgabe gesendet wird, entweder durch normale HTML-Tags, Leerzeilen in einer Datei oder von PHP

Andernfalls können Sie Javascript verwenden, um den Benutzer umzuleiten.

Benutz einfach

window.location = "http://www.google.com/"

Sie können Ihre Header-Funktion einfügen, wo immer Sie möchten, solange KEIN HTML und/oder Text standardmäßig ausgegeben wurde.

Weitere Informationen und Verwendung: http://php.net/manual/en/function.header.php


Ich sehe in Ihrem Code, dass Sie echo() im Fehler- oder Erfolgsfall einen Text ausgeben. Tun Sie das nicht: Sie können nicht. Sie können den Text nur umleiten ODER anzeigen. Wenn Sie den Text anzeigen, wird die Weiterleitung fehlschlagen.

Wann immer Sie umleiten möchten, senden Sie die Header:

header("Location: http://www.example.com/");

Denken Sie jedoch daran, dass Sie vorher keine Daten an den Client senden können.

  • Das ist es auch schon – ich bin ein Programmiertölpel und muss genau wissen, wo ich den Header in meinem Codebeispiel platzieren soll. Danke

    – Benutzer2494737

    17. Juni 2013 um 22:12 Uhr

  • Anstelle von Danke, dass Sie unsere Mailingliste abonniert haben, in -Tags.

    – Frildoren

    17. Juni 2013 um 22:13 Uhr


  • Wie sollen wir jemals einen Header verwenden, wenn er nicht verwendet werden kann, nachdem Daten an den Client gesendet wurden? Müssen wir nicht Daten senden, um das Formular zu erstellen, das sie verwenden, um das Neuladen überhaupt erst auszulösen?

    – Markus Kramer

    18. Februar 2017 um 1:02 Uhr

  • Es sind zu unterschiedliche HTTP-Aufrufe (das Beispiel ist verwirrend, wäre in zwei verschiedenen Dateien oder einer anderen besser organisierten Struktur sauberer). Wenn der Benutzer das Formular sendet, macht der Browser einen neuen Aufruf an den Webserver und in diesem Aufruf können Sie Ihre Daten verarbeiten und die Kopfzeilen senden.

    – Frildoren

    21. Februar 2017 um 15:22 Uhr

PHP Weiterleitung auf eine andere Seite nach dem Absenden des Formulars
SmithVyne

Ich hatte dieses Problem einmal und hielt es für vernünftig, zu teilen, wie ich es gelöst habe.

Ich denke, der Weg, dies in PHP zu tun, besteht darin, die Header-Funktion wie folgt zu verwenden:

header ("Location: exampleFile.php");

Sie könnten diese Header-Datei einfach in eine if-Anweisung einschließen, sodass sie nur umleitet, wenn eine bestimmte Bedingung erfüllt ist, wie in:

if (isset($_POST['submit'])){   header("Location: exampleFile.php")   }

Ich hoffe, das hilft.

  • Das ist es auch schon – ich bin ein Programmiertölpel und muss genau wissen, wo ich den Header in meinem Codebeispiel platzieren soll. Danke

    – Benutzer2494737

    17. Juni 2013 um 22:12 Uhr

  • Anstelle von Danke, dass Sie unsere Mailingliste abonniert haben, in -Tags.

    – Frildoren

    17. Juni 2013 um 22:13 Uhr


  • Wie sollen wir jemals einen Header verwenden, wenn er nicht verwendet werden kann, nachdem Daten an den Client gesendet wurden? Müssen wir nicht Daten senden, um das Formular zu erstellen, das sie verwenden, um das Neuladen überhaupt erst auszulösen?

    – Markus Kramer

    18. Februar 2017 um 1:02 Uhr

  • Es sind zu unterschiedliche HTTP-Aufrufe (das Beispiel ist verwirrend, wäre in zwei verschiedenen Dateien oder einer anderen besser organisierten Struktur sauberer). Wenn der Benutzer das Formular sendet, macht der Browser einen neuen Aufruf an den Webserver und in diesem Aufruf können Sie Ihre Daten verarbeiten und die Kopfzeilen senden.

    – Frildoren

    21. Februar 2017 um 15:22 Uhr

917530cookie-checkPHP-Weiterleitung auf eine andere Seite nach dem Absenden des Formulars

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy