2013-11-26 48 views
-1

你好3天后,試圖把我的表格在一起,我遇到了一個問題... 使用表格,它可以驗證當我按下提交。這是好的,但一旦我按發送,無效的數據仍然會發送到我的收件箱..所以我最終會收到兩封電子郵件..一個與無效的數據,然後一個有效的數據,它是在輸入錯誤信息後輸入已被顯示並重新發送。如果任何人都可以看看我的代碼,看看我錯過了什麼,或做錯了我會欣賞它洙多php發送無效的電子郵件地址

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

if(empty($_POST['email_addr'])) 

$msg_email = "*"; 

$email_subject = $_POST['email_addr']; 

$email_pattern = '/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/'; 

preg_match($email_pattern, $email_subject, $email_matches); 

if(!$email_matches[0]) 

$msg2_email = "Please enter a valid email address"; 

} 

// validation complete 

if(isset($_POST['submit'])){ 

if($msg_name=="" && $msg2_name=="" && $msg_email=="" && $msg2_email=="") 

$msg_success = "Thankyou for your enquiry"; 

//send mail 

$EmailFrom = "[email protected]"; 

$EmailTo = "[email protected]"; 

$Subject = "Online contact form"; 

$email_addr = Trim(stripslashes($_POST['email_addr'])); 

} 

// prepare email body text 

$Body = ""; 

$Body .= "email_addr: "; 

$Body .= $email_addr; 

$Body .= "\n"; 

// send email 

$success = mail($EmailTo, $Subject, $Body, "From: $EmailFrom"); 

    ?> 
+0

設置一個默認狀態爲false的布爾變量。正確驗證時,將該變量設置爲true。如果這個變量是真的,表單驗證正確,所以發送電子郵件。 – Tim

+0

你能提供一個例子嗎?我已經從字面上只是一個tutorias - [http://www.w3resource.com/php/form/php-form-validation.php]並試圖一路學習,但它很難當你沒有太多的經驗與PHP並有一週時間完成一個網站:p –

回答

2

使用正則表達式驗證電子郵件地址。我會使用filter_var。

if(!filter_var($_POST['email_addr'], FILTER_VALIDATE_EMAIL)) { 
    $msg2_email = "Please enter a valid email address"; 
} 

filter_var如果過濾器失敗則返回false,否則返回過濾後的電子郵件地址。

最重要的是,如果您的過濾器失敗,您可以設置default的值。例如,假設電子郵件地址字段是沒有必要的,所以不用編寫代碼的另一行中的變量,以檢查空的煩躁,如:

$isEmailNull = ($_POST['email_addr'] === NULL) ? NULL : $_POST['email_addr']; 

filter_var,你可以寫這樣的:

$emailAddress = filter_var($_POST['email_addr'], FILTER_VALIDATE_EMAIL, 
           array('options' => array(
              'default' => null 
             ) 
            )); 

如果您的過濾器失敗,那麼$emailAddress不是false,而是null。這對非布爾變量更有意義。

你可以閱讀更多關於filter_varhere

可以驗證/消毒IP地址,URL,電子郵件地址,ASCII字符,數字,等等,而無需使用正則表達式,可能會或可能無法正常工作。

相關問題