2017-05-16 18 views
0

タイトルが意味するように、私はオブジェクト$エラーに対して私に未定義のエラーを与えるPHPの簡単なフォームを持っています。私はそれをグローバルに宣言し、nullに設定しようとしましたが、すべてのエラーログを防止するだけです。下のコード、ありがとう!

<?php 


$siteOwnersEmail = '[email protected]'; 


if($_POST) { 

    $name = trim(stripslashes($_POST['contactName'])); 
    $email = trim(stripslashes($_POST['contactEmail'])); 
    $subject = trim(stripslashes($_POST['contactSubject'])); 
    $contact_message = trim(stripslashes($_POST['contactMessage'])); 

    // Check Name 
    if (strlen($name) < 2) { 
    $error['name'] = "Please enter your name."; 
} 
    // Check Email 
if (!preg_match('/^[a-z0-9&\'\.\-_\+][email protected][a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) { 
    $error['email'] = "Please enter a valid email address."; 
} 
// Check Message 
if (strlen($contact_message) < 15) { 
    $error['message'] = "Please enter your message. It should have at least 15 characters."; 
} 
    // Subject 
    if ($subject == '') { $subject = "Contact Form Submission"; } 


// Set Message 
    $message .= "Email from: " . $name . "<br />"; 
    $message .= "Email address: " . $email . "<br />"; 
    $message .= "Message: <br />"; 
    $message .= $contact_message; 
    $message .= "<br /> ----- <br /> This email was sent from your site's contact form. <br />"; 

    // Set From: header 
    $from = $name . " <" . $email . ">"; 

    // Email Headers 
    $headers = "From: " . $from . "\r\n"; 
    $headers .= "Reply-To: ". $email . "\r\n"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 


    if (!$error) { 

    ini_set("sendmail_from", $siteOwnersEmail); // for windows server 
    $mail = mail($siteOwnersEmail, $subject, $message, $headers); 

    if ($mail) { echo "OK"; } 
    else { echo "Something went wrong. Please try again."; } 

} # end if - no validation error 

else { 

    $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null; 
    $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null; 
    $response .= (isset($error['message'])) ? $error['message'] . "<br />" : null; 

    echo $response; 

} # end if - there was a validation error 

} 

?> 
+0

私は、コードを認めるが、それでも同じ結果を取得しています。この –

答えて

0

エラー変数を配列として宣言します。これらの新しい行をコードに追加して修正してください

if($_POST) { 
$error = array();#declare error variable 

if (!isset($error)) {#check if we have an error message of some kind 
    #proceed 
0

空白の配列として$ errorを作成してください。以下のコードを使用してください。

<?php 


$siteOwnersEmail = '[email protected]'; 
$error=array(); 

if(!empty($_POST)) { 

    $name = trim(stripslashes($_POST['contactName'])); 
    $email = trim(stripslashes($_POST['contactEmail'])); 
    $subject = trim(stripslashes($_POST['contactSubject'])); 
    $contact_message = trim(stripslashes($_POST['contactMessage'])); 

    // Check Name 
    if (strlen($name) < 2) { 
    $error['name'] = "Please enter your name."; 
} 
    // Check Email 
if (!preg_match('/^[a-z0-9&\'\.\-_\+][email protected][a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) { 
    $error['email'] = "Please enter a valid email address."; 
} 
// Check Message 
if (strlen($contact_message) < 15) { 
    $error['message'] = "Please enter your message. It should have at least 15 characters."; 
} 
    // Subject 
    if ($subject == '') { $subject = "Contact Form Submission"; } 


// Set Message 
    $message .= "Email from: " . $name . "<br />"; 
    $message .= "Email address: " . $email . "<br />"; 
    $message .= "Message: <br />"; 
    $message .= $contact_message; 
    $message .= "<br /> ----- <br /> This email was sent from your site's contact form. <br />"; 

    // Set From: header 
    $from = $name . " <" . $email . ">"; 

    // Email Headers 
    $headers = "From: " . $from . "\r\n"; 
    $headers .= "Reply-To: ". $email . "\r\n"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 


    if (!$error) { 

    ini_set("sendmail_from", $siteOwnersEmail); // for windows server 
    $mail = mail($siteOwnersEmail, $subject, $message, $headers); 

    if ($mail) { echo "OK"; } 
    else { echo "Something went wrong. Please try again."; } 

} # end if - no validation error 

else { 

    $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null; 
    $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null; 
    $response .= (isset($error['message'])) ? $error['message'] . "<br />" : null; 

    echo $response; 

} # end if - there was a validation error 

} 

?> 
+0

のようなエラーを回避するために電子メールを定義した後$エラーを定義します。 $ errorがnull、 ''、またはarray();として宣言されると、エラーログには何も表示されませんが、フォーム送信時にエコーエラーメッセージが表示され続けます。これに別のアプローチがありますか? – Manny

関連する問題