我们正在从我们的站点联系表收到空电子邮件,我们不知道为什么。我们的表单非常简单,验证也不是那么先进,但足以满足我们的目的。
我们有5个字段:
然后使用JS验证所有字段。最后,使用submit,我们发送带有php邮件功能的邮件:
<?php
$name = $_POST['name'];
$mail= $_POST['mail'];
$phone= $_POST['phone'];
$reason= $_POST['reason'];
$message= $_POST['message'];
$header = 'From: ' . $mail. " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
$msg.= "Name: " . $name . " \r\n";
$msg.= "Mail: " . $mail. " \r\n";
$msg.= "Phone: " . $phone. " \r\n";
$msg.= "Reason: " . $reason. " \r\n";
$msg.= "Message: " . $message. " \r\n";
$for= "ourmail@ourserver.com";
$as= "Contact form";
mail($for, $as, $msg, $header);
?>
总的来说,工作正常。但有时我们会收到一封包含所有内容的电子邮件(包括原因...这是一个选择!)字段为空。类似于:
Subject: Contact form
Name:
Mail:
Phone:
Reason:
Message:
怎么会这样呢?
当您通过POST发送数据时:
您是否考虑过操作url可能直接从浏览器访问,而不需要任何类型的POST数据?。那会使所有的“字段”都是空的。
如果是这种情况,您可以通过以下几种方式尝试服务器验证:
if(isset($_post['name'])&isset($_post['email'])
中那样使用isset来添加服务器验证。您可以始终这样做$name=isset($_post['name'])?$_post['name']:'no_name_enter'
并发送电子邮件。if(!isset($_post['contacting']))die('error:表单未发送');
无论如何,请记住,您接收到的大多数数据都可能被污染,即使是通过select字段发送的数据。