2017-06-08 6 views
0

私はいくつかの回答と質問を読んだが、まだ私のヘッダ()を動作させることができないようだ。これは単純な連絡フォームです。これはゲストを感謝のページに送る最後のステップです。私は何が欠けている。PHPヘッダを正しく使用する方法(場所:)

<?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; 
    } 

    ?> 

そして私は私のコードは、おそらくより良い行わできることを承知していますので、単純化または凝縮する上での提案がある場合、私はそれを喜んでいただければ幸いです!

+0

エラーログを確認しましたか? –

+0

エラーが発生しますか? –

+0

@JayBlanchard警告:ヘッダー情報を変更できません - 既に送信されたヘッダー(/home/sites/1b/a/a84868269e/public_html/pages/contact.php:25に出力が開始されました)が/ home/sites/1b/a/a84868269e/public_html/pages/contact.php 162行目にあります。しかし、それはそれが私が望むものを見つけることを意味していますか?私はこれをかなり理解していない。 –

答えて

0

header()は、通常のHTMLタグ、ファイルの空白行、またはPHPのいずれかによって実際の出力が送信される前に呼び出す必要があることに注意してください。 documentationを参照してください。

テストする方法の1つは、コード内のheader()の呼び出しを、カスタム文字列(たとえば 'XYZXYZ')を含む単純なエコーで置き換えることです。生の出力を見て、この文字列の前に文字があるかどうかを確認します。

+0

これは私のメール()の前に私のヘッダーを入れなければならないということですか?もし私がそれをすればそれはまだメールを送りますか? –

+0

生の出力はどういう意味ですか? –

+0

最初に確認するのはあなたのcontact.php行にあるものです25. :) Raw出力とは、このページをブラウザーとビューソースに読み込むことを意味します。 メールの前にヘッダーを挿入してみてください。私はその行動がどんなものになるのかはかなり確信していません。実験! – SunnyPro

関連する問題