2017-02-26 141 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纪录,但已经超出了问题的范围。