2014-03-12 39 views
-1

我已經通過噸的形式,似乎無法找到答案。我一直在用我的php表單來處理這個問題幾天。希望在這裏找到幫助。表單工作完美。所有字段在提交時都正常工作,但似乎總是有一天發送到第二天的表單,這兩天後是空白的。如果有任何建議,爲什麼會發生這將是有益的。php聯繫表有時會發送空白郵件

<?php 


$name = $_POST['name']; 
$email = $_POST['email']; 
$subject = $_POST['subject']; 
$comments = $_POST['comments']; 

// recipient address 
$to = "[email protected]"; 

// subject of email 
$re = "Contact Us Form Delivery"; 

// message creation 
$contact = "Name:".$name."\nEmail:".$email."\nSubject:".$subject."\r\n"; 

$txt = "Comments:".$comments."\r\n"; 


$fmsg = $contact."\r\n".$txt; 

$msg = wordwrap($fmsg, 70); 

// send email 
mail($to,$re,$msg); 

?> 

    <form action="contact1.php" method=post name="form" id="form"> 
    <div class="col_w280 float_l"> 
    <p><em> 
<label for="author">Name:</label> <input type="text" id="name" name="name"    class="required input_field" /> 
<div class="cleaner_h10"></div> 

    <label for="email">Email:</label> <input type="text" id="email" name="email" class="validate-email required input_field" /> 
    <div class="cleaner_h10"></div> 
    <label for="email">Phone:</label> <input type="text" id="phone" name="phone" class="required input_field" /> 
    <div class="cleaner_h10"></div> 

    <label for="subject">Subject:</label> <input type="text" name="subject" id="subject" class="input_field" /> 
    <div class="cleaner_h10"></div> 

          </div>       
    <div class="col_w280 float_r"> 

    <label for="text">Comments:</label> <textarea id="comments" name="comments" rows="0" cols="0" class="required input_field"></textarea> 
    <div class="cleaner_h10"></div></em></p> 
    <input name=submit type=submit id="submit" onClick="MM_validateForm('name','','R','email','','RisEmail');return document.MM_returnValue" value="Send">    

        </div></form> 
+0

你還可以張貼正面形式的HTML嗎?您可能會收到來自機器人的電子郵件... – larsAnders

+1

也許您在幾天後收到的第二封空白電子郵件是因爲您有**沒有**檢查,以確保發佈到此表單的值不爲空?這可能是某人在你的網站上撒尿,它可能是垃圾郵件,它可能是一個搜索引擎爬行,它可能是某人在你的頁面上意外進入。這個故事的寓意是,如果你要發送類似上面的代碼的電子郵件,**在你發送郵件之前做一些服務器端的驗證**,或者忍受大量的空白/垃圾郵件(grandforkssuites @ gmail.com?甜美)。 –

+0

我不確定你是否忽略了它,但是如果你沒有進行任何表單驗證,那麼發送NULL值到你的主題和評論將非常容易。 –

回答

0

向PHP添加驗證,否則即使沒有通過POST發送值,只需通過訪問頁面發送空白電子郵件。搜索引擎或這種機器人很可能只是爬行。

因此,檢查它的POST

<?php 
if($_SERVER['REQUEST_METHOD']==='POST'){ 
//put code here 
} 
?> 

,並檢查您的值設置最小 - 最大長度ECT

<?php 

... 
... 
... 

//Comments 
if(empty($_POST['comments'])){ 
    //comments empty, do or set something 
}else if(strlen($_POST['comments']) < 5){ 
    //not long enough, do or set something 
}else if(strlen($_POST['comments']) > 50){ 
    //too large, do or set something 
} 
?> 

,最重要的檢查電子郵件是一個真正的電子郵件..

<?php 
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ 
//is an email 
}else{ 
//not an email 
} 
?> 

此外,您還想添加一個基本的驗證碼,否則您每天會享受1000次的營銷/垃圾郵件。

祝你好運,實施它。

+0

謝謝,我會試試這個。 – user3412783