首页 文章

JS验证后的空联系表单

提问于
浏览
0

我们收到了来自我们网站联系表单的空白电子邮件,我们不知道原因 . 我们的表单非常简单,验证也不是那么先进,但足以达到我们的目的 .

我们有5个领域:

  • 名称(文字输入)

  • mail(文字输入)

  • 电话(文字输入)

  • 原因(选择,3个值)

  • message(textarea)

然后使用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:

怎么会这样?

2 回答

  • 2

    使用php脚本创建服务器端验证 .

    Demostration

    if($_POST['Name']=="")
        {
          $err = "Enter the name";
        }
        if($_POST['mail']=="")
        {
         .......
        }
    ......
    if($err=="")
    {
     //mail function
    }
    else
    {
      echo $err;
    }
    
  • 1

    Asumming你通过POST发送数据:

    您是否认为可以直接从浏览器加入动作网址而不需要任何类型的POST数据?那将使所有“领域”变空 .

    如果是这种情况您可以通过多种方式尝试服务器验证:

    • 添加引用程序验证,以便只能从表单URL中加入URL . 您可以为此目的使用$ _SERVER ['HTTP_REFERER'],但请记住,可能并非总是可用 .

    • 查明数据是否已发送 . 您可以像 if(isset($_POST['name']) && isset($_POST['email']) 中那样使用isset来添加服务器验证 . 您始终可以执行此操作 $name=isset($_POST['name']) ? $_POST['name'] : 'no_name_entered' 并始终发送电子邮件 .

    • 在表单中添加隐藏的输入,如"contacting",并检查它是否设置为服务器端: if(!isset($_POST['contacting'])) die('ERROR: Form not sent');

    无论如何,请记住,您收到的大多数数据都可能受到污染,即使是通过选择字段发送的数据也是如此 .

相关问题