2017-02-26 67 views
1

因此,最近我在我的網站上修復了我的聯繫表單,但是我遇到了問題。人們可以向我發送電子郵件,而無需在聯繫人表單框中添加任何內容。PHP聯繫表格垃圾郵件的問題

所以,大多數人只需按下發送按鈕,而不需要輸入任何真正煩人的東西。

無論如何解決這個問題?

這是我的PHP代碼:https://hastebin.com/ukowawovab.pl

這是我的HTML代碼:https://hastebin.com/hisayacuji.xml

謝謝! TrifleTower

+0

把你的代碼在這裏,複選框不是空的(你似乎知道你應該這樣做),添加CAPCHA – nogad

+1

這其實是比你想象的簡單。檢查空值並使用完整標題 –

+0

我已將我的HTML代碼添加到線程。我很新的PHP,所以我不知道如何檢查空值,並使用完整的標題等。 – TrifleTower

回答

1

正如我在評論中所述,檢查任何空白字段。

即使添加了required,漫遊器可能正在直接訪問php文件,或其他人。

<?php 

if(!empty($_REQUEST['name']) 

&& !empty($_REQUEST['email']) 

&& !empty($_REQUEST['skype']) 

&& !empty($_REQUEST['message'])){ 

$to = "[email protected]"; 
$subject = "FluxDesigns Contact Form"; 
$name = $_REQUEST['name']; 
$email = $_REQUEST['email']; 
$skype = $_REQUEST['skype']; 
$message = $_REQUEST['message']; 
$ip = $_SERVER['REMOTE_ADDR']; 
$body = " Name: $name \n Email: $email \n Skype: $skype \n Message: $message \n\n IP Address: $ip"; 
if (mail($to, $subject, $body)) { 
    header('Location: /thanks'); 
    exit; // added that to prevent further execution 
    } 

} 
else{ 
    echo "Fill in all fields"; 

    } 

你可以另加一個複選框,並檢查它是否被設定爲isset(),並相應地處理它。

但是,您應該使用完整標題,如mail()手冊中所述。否則,您可能無法收到,也可能被視爲垃圾郵件。

完整標題是指具有有效From的電子郵件地址。從手動

例子:

<?php 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

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

您還應該創建一個SPF紀錄,但已經超出了問題的範圍。