2017-06-08 3 views
0

Ich habe mehrere Antworten und Fragen gelesen, aber ich kann immer noch nicht scheinen, meine Header() zu arbeiten. Dies ist nur ein einfaches Kontaktformular, und dies ist mein letzter Schritt, um Gäste auf eine Dankeseite zu senden. Was vermisse ich.Wie man PHP-Header richtig verwendet (Location:)

<?php 

    $fname = $lname = $cname = $email = $budget = $services = ""; 

    $error_counter = 0; 

    $error_report = ""; 

    if ($_SERVER['REQUEST_METHOD'] == 'POST') { 


     if (empty($_POST['fname'])) { 
     $fname_error = 'Please provide your first name.'; 
     $error_counter++; 
     } else { 
     $fname = test_input($_POST['fname']); 

     if (!preg_match("/^[a-zA-Z ]*$/",$fname)) { 
      $fnameErr = "Only letters and white space allowed"; 
      $error_counter++; 
     } 
     } 
     if (empty($_POST['lname'])) { 
     $lname_error = 'Please provide your last name.'; 
     $error_counter++; 
     } else { 
     $lname = test_input($_POST['lname']); 

     if (!preg_match("/[a-zA-Z \.]/",$lname)) { 
      $lnameErr = "Only letters and white space allowed"; 
      $error_counter++; 
     } 
     } 
     if (empty($_POST['cname'])) { 
     $cname = ''; 
     } else { 
     $cname = test_input($_POST['cname']); 

     if (!preg_match("/^[a-zA-Z0-9 \.]*$/",$cname)) { 
      $cnameErr = "Only letters and white space allowed"; 
      $error_counter++; 
     } 
     } 
     if (empty($_POST['phone'])) { 
     $phone = ''; 
     } else { 
     $phone = test_input($_POST['phone']); 

     if (!preg_match("/^[()\-0-9 \.]*$/",$phone)) { 
      $phoneErr = "Please use only the following: () - . 0-9."; 
      $error_counter++; 
     } 
     } 
     if (empty($_POST['email'])) { 
     $email_error = 'Please provide an email so that I can get back in touch with you.'; 
     $error_counter++; 
     } else { 
     $email = test_input($_POST['email']); 

     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { //validate email 
      $emailErr = "Invalid email format"; 
      $error_counter++; 
     } 
     } 
     if (empty($_POST['budget'])) { 
     $budget_error = 'Please provide an estimated budget.'; 
     $error_counter++; 
     } else { 
     $budget = test_input($_POST['budget']); 
     } 
     if (empty($_POST['textarea'])) { 
     $textarea = ''; 
     } else { 
     $textarea = test_input($_POST['textarea']); 
     } 

     if (isset($_POST['new-website'])) { 
     $services = $services."New Website<br>"; 
     } 
     if (isset($_POST['website-redesign'])) { 
     $services = $services."Website Re-design<br>"; 
     } 
     if (isset($_POST['mobile-website'])) { 
     $services = $services."Mobile Website<br>"; 
     } 
     if (isset($_POST['online-resume'])) { 
     $services = $services."Online Resume<br>"; 
     } 
     if (isset($_POST['non-profit-website'])) { 
     $services = $services."Non-profit Website<br>"; 
     } 
     if (isset($_POST['seo'])) { 
     $services = $services."SEO<br>"; 
     } 
     if (isset($_POST['google-adwords'])) { 
     $services = $services."Google AdWords<br>"; 
     } 
     if (isset($_POST['graphics-design'])) { 
     $services = $services."Graphics Design<br>"; 
     } 
     if (isset($_POST['other'])) { 
     $services = $services."Other<br>"; 
     } 

     $fname = test_input($_POST['fname']); 
     $lname = test_input($_POST['lname']); 
     $cname = test_input($_POST['cname']); 
     $phone = test_input($_POST['phone']); 
     $email = test_input($_POST['email']); 
     $budget = test_input($_POST['budget']); 
     $textarea = test_input($_POST['textarea']); 

     if ($error_counter == 0) { 

     $to = "[email protected]"; 
     $subject = "Website Contact Peachwebdev"; 

     $name_final = "Name: ".$fname." ".$lname."<br><br>"; 
     $company_final = "Company: ".$cname."<br><br>"; 
     $phone_final = "Phone Number: ".$phone."<br><br>"; 
     $email_final = "Email: ".$email."<br><br>"; 
     $budget_final = "Est. Budget: ".$budget."<br><br>"; 
     $services_final = "Services: <br>".$services."<br><br>"; 
     $textarea_final = "Comments: ".$textarea."<br><br>"; 
     $message = $name_final.$company_final.$phone_final.$email_final.$budget_final.$services_final.$textarea_final; 


     $headers = "MIME-Version: 1.0" . "\r\n"; 
     $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 
     $headers .= 'From: '.$email; 


     mail($to,$subject,$message,$headers); 

     header("Location: http://www.peachwebdev.com/pages/thankyou.html"); 
     exit; 

     } else { 
     echo '<script type="text/javascript"> alert(\'There were errors in your form. Please try again.\'); </script>'; 
     $error_report = "<div class='alert alert-danger'>There were errors in your form, please correct and submit again.</div>"; 
     } 

    } 

    function test_input($data) { 
     $data = htmlspecialchars($data); 
     $data = trim($data); 
     $data = stripslashes($data); 
     return $data; 
    } 

    ?> 

Und ich bin mir bewusst, dass mein Code wahrscheinlich besser gemacht kann, so, wenn es Vorschläge zur Vereinfachung oder Betauung sind, würde ich schätzen es gerne!

+0

Haben Sie Ihre Fehlerprotokolle überprüft? –

+0

Erhalten Sie einen Fehler? –

+0

@JayBlanchard Ich erhalte diesen Fehler: Warnung: Header-Informationen können nicht geändert werden - Header bereits gesendet von (Ausgabe gestartet unter /home/sites/1b/a/a84868269e/public_html/pages/contact.php:25) in/home/sites/1b/a/a84868269e/public_html/pages/contact.php in Zeile 162. Aber es bedeutet, dass es den einen findet, den ich es will? Ich verstehe das nicht ganz. –

Antwort

0

Denken Sie daran, dass header() aufgerufen werden muss, bevor eine tatsächliche Ausgabe gesendet wird, entweder mit normalen HTML-Tags, Leerzeilen in einer Datei oder aus PHP. Siehe die documentation.

Eine Möglichkeit zu testen ist, ersetzen Sie den Aufruf von header() in Ihrem Code mit einem einfachen Echo mit einigen benutzerdefinierten Zeichenfolge (zB 'XYZXYZ'). Sehen Sie sich dann die Rohausgabe an und prüfen Sie, ob vor dieser Zeichenkette Zeichen stehen.

+0

bedeutet das, dass ich meinen Header vor meine Mail() setzen muss? Wenn ich das tue, wird es immer noch die E-Mail senden? –

+0

Und was bedeutet rohe Ausgabe? –

+0

ist die erste Sache, die zu überprüfen ist, was in Ihrer contact.php Zeile 25 läuft. :) Raw-Ausgabe bedeutet, laden Sie diese Seite im Browser und Quelltext anzeigen. Sie können versuchen, den Header vor der Mail zu setzen. Ich bin mir nicht sicher, wie das Verhalten sein wird. Experiment! – SunnyPro

Verwandte Themen