webentwicklung-frage-antwort-db.com.de

PHP Nach dem Senden des Formulars auf eine andere Seite umleiten

Ich habe alle Ihre Beiträge über das Einfügen von Headern in eine PHP-Formulardatei gelesen, um den Benutzer NACH dem Senden des Formulars an eine andere URL umzuleiten. Ich kann jedoch nicht herausfinden, wie das gemacht wird. Unten ist mein Code. Können Sie mir zeigen, wo die Kopfzeile/Weiterleitung eingefügt werden soll, damit die Informationen per E-Mail verschickt werden und der Benutzer dann zu einer anderen HTML-Seite wechselt?

    <?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._%-][email protected][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
}
?>
25
user2494737

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

header('Location: nextpage.php');

Beachten Sie, dass Sie nie "Danke für das Abonnieren unserer Mailingliste" sehen werden.

Das sollte auf der nächsten Seite sein. Wenn Sie einen Text wiederholen, erhalten Sie eine Fehlermeldung, da die Header bereits erstellt worden wären. Wenn Sie eine Weiterleitung durchführen möchten, geben Sie keinen Text zurück, nicht einmal ein Leerzeichen!

56
multimediaxp

Geben Sie Ihrem Eingabetyp zunächst einen Namen wie name='submitform'.

und dann diese in deine PHP-Datei

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

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

7
KeepMove

Wenn Ihre Weiterleitung in PHP erfolgt, sollte dem Benutzer vor der Weiterleitungsanweisung nichts angezeigt werden.

Siehe header für weitere Informationen.

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

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

Benutz einfach

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

Sie können Ihre Header-Funktion an beliebiger Stelle einfügen, solange KEIN HTML und/oder Text als Standard gedruckt wurde.

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


Ich sehe in Ihrem Code, dass Sie echo() Text im Fehlerfall oder Erfolg ausgeben. Tu das nicht, das kannst du nicht. Sie können den Text nur umleiten OR. Wenn Sie den Text anzeigen, können Sie die Umleitung nicht durchführen.

3
Saturnix

Ich hatte dieses Problem einmal für vernünftig gehalten, um mitzuteilen, wie ich es gelöst habe.

Ich denke, der Weg, um das in PHP zu tun, ist die Verwendung der Header-Funktion als:

header ("Location: exampleFile.php");

Sie können diese Headerdatei einfach in eine if-Anweisung einschließen, sodass sie nur dann umgeleitet wird, wenn eine bestimmte Bedingung erfüllt ist.

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

Hoffentlich hilft das.

0
Smitho

Wenn Sie umleiten möchten, senden Sie die Kopfzeilen:

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

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

0
Frildoren