我们从网站联系表单收到空白电子邮件,我们不知道原因。 我们的表格非常简单,验证也不是那么先进,但足以达到我们的目的。
我们有5个字段:
然后使用JS我们验证所有字段。最后,通过提交,我们发送带有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);
?>
一般来说,工作正常。但有时我们会收到一封包含ALL的电子邮件(包括原因......这是一个选择!)字段为空。类似的东西:
Subject: Contact form
Name:
Mail:
Phone:
Reason:
Message:
这怎么可能?
答案 0 :(得分:2)
使用php脚本创建服务器端验证。
<强>笔画演示强>
if($_POST['Name']=="")
{
$err = "Enter the name";
}
if($_POST['mail']=="")
{
.......
}
......
if($err=="")
{
//mail function
}
else
{
echo $err;
}
答案 1 :(得分:1)
Asumming您通过POST发送数据:
您是否认为可以在没有任何POST数据的情况下直接从浏览器加入动作网址?这将使所有“领域”变空。
如果是这种情况您可以通过多种方式尝试服务器验证:
if(isset($_POST['name']) && isset($_POST['email'])
中那样使用isset来添加服务器验证。您始终可以执行此操作$name=isset($_POST['name']) ? $_POST['name'] : 'no_name_entered'
并始终发送电子邮件。if(!isset($_POST['contacting'])) die('ERROR: Form not sent');
无论如何,请记住,您收到的大多数数据都会受到污染,甚至是通过选择字段发送的数据。