gpt4 book ai didi

php - JS 验证后联系表单为空

转载 作者:行者123 更新时间:2023-11-28 16:14:43 24 4
gpt4 key购买 nike

我们从网站联系表单中收到空电子邮件,但我们不知道原因。我们的表单非常简单,验证也不是那么高级,但足以满足我们的目的。

我们有 5 个字段:

  • 姓名(文本输入)
  • 邮件(文本输入)
  • 电话(文字输入)
  • 原因(选择,3 个值)
  • 消息(文本区域)

然后使用 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);
?>

总体来说,工作正常。但有时我们会收到一封电子邮件,其中所有字段(包括原因...这是一个选择!)都是空的。像这样的东西:

Subject: Contact form
Name:
Mail:
Phone:
Reason:
Message:

怎么会这样?

最佳答案

假设您通过 POST 发送数据:

您是否考虑过可以直接从浏览器访问操作 URL,而不需要任何类型的 POST 数据?这将使所有“字段”为空。

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

  • 添加引用验证,以便只能从表单网址访问该网址。您可以使用 $_SERVER['HTTP_REFERER'] 来实现此目的,但请记住,这可能并不总是可用。
  • 查明数据是否已发送。您可以使用 isset 来实现此目的,例如 if(isset($_POST['name']) && isset($_POST['email']) 中,以便添加服务器验证。您始终可以执行此操作 $name=isset($_POST['name']) ? $_POST['name'] : 'no_name_entered' 并发送电子邮件。
  • 在表单中添加隐藏输入,例如“联系”,并检查它是否设置在服务器端: if(!isset($_POST['contacting'])) die('错误:表单未发送');

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

关于php - JS 验证后联系表单为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11843155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com