gpt4 book ai didi

javascript - 使用 html5 表单和 php 获取空电子邮件

转载 作者:行者123 更新时间:2023-12-03 05:03:43 25 4
gpt4 key购买 nike

我管理的网站上有一些 html5 表单字段,这些字段将用户输入的数据推送到 php 文件,该文件将电子邮件发送到该网站的专用 yahoo 电子邮件。

这是 html:

<form role="form" method="post" action="php/contact-us.php" lang="es" id="contactForm">
<div class="row">
<div class="form-group col-lg-4 required">
<label for="name">Name</label>
<input type="text" class="form-control" name="name" required placeholder="Enter Name" />
</div>
<div class="form-group col-lg-4 required">
<label for="email">Email</label>
<input type="email" class="form-control" name="email" required placeholder="Enter valid email" />
</div>
<div class="form-group col-lg-4">
<label for="phone">Phone Number</label>
<input type="tel" class="form-control" name="phone" placeholder="e.g. (000) 000 - 0000">
</div>
<div class="clearfix"></div>
<div class="form-group col-lg-12 required">
<label for="message">Mensaje</label>
<textarea class="form-control" rows="6" name="message" required placeholder="Write your message here"></textarea>
</div>
<div class="form-group col-lg-12">
<input type="hidden" name="save" value="contact">
<button type="submit" class="btn btn-default">Enviar</button>
</div>
</div>
</form>

之前,我没有对字段进行任何验证,但我收到了没有用户内容的空电子邮件,所以我认为人们只是按下按钮而没有输入任何我也可以自己测试的内容。因此,我添加了以下验证 JS,还对不支持的浏览器使用了 webshim(以及上面表单元素中的 required 标签):

<script>
$('#contactForm input[type=text], select, textarea').on('change invalid', function() {
var field = $(this).get(0);
field.setCustomValidity('');

if (!field.validity.valid) {
field.setCustomValidity('Please fill required fields');
}
});
$('#contactForm input[type=email]').on('change invalid', function() {
var field = $(this).get(0);

field.setCustomValidity('');

if (!field.validity.valid) {
field.setCustomValidity('Enter a valid email');
}
});
</script>

以前,我从用户那里获取输入的电子邮件并将其设置为发件人电子邮件,但我遇到了某些电子邮件地址等问题。因此,我将其默认为始终有效的随机电子邮件,并且仅包含输入的用户邮件中的电子邮件。这是我的 php 文件 (contact-us.php):

<?php
// Set your email below
$to = "<dedicatedemail>@yahoo.com";
// Receive and sanitize input
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$subject = "Request from website";
$headers = "From: no-reply@gmail.com";

// set up email
$msg = "Sender Information \nName: " . $name . "\nEmail: " . $email . "\nPhone: " . $phone . "\n\n" . $message;
$msg = wordwrap($msg,70);

// mail
mail($to,$subject,$msg,$headers);
header('Location: ../contact-thank-you.html');
?>

首先让我说一切正常。当我在这里测试功能时,一切正常。我可以从我的 iOS 设备和笔记本电脑发送电子邮件,而且我有几个 friend 从他们的 Android 设备发送电子邮件。验证对我有用,因此它不允许我在至少填写必填字段的情况下发送电子邮件。在添加验证并将发件人电子邮件设置为默认电子邮件之前,我收到了空电子邮件。然而,即使在进行了所有更改之后,我仍然收到空电子邮件。当我测试时,我无法在所有平台和浏览器上进行测试,但在添加检查后我无法强制发送空电子邮件。我的验证在某个地方失败了吗?我觉得人们正在填写字段,但不知何故,电子邮件却是空的。当我说空时,我的意思是我以编程方式添加到消息中的内容会通过,但用户应该输入的实际信息却不会?这是怎么发生的?

最佳答案

始终执行服务器端验证并确认有 POST 传入。否则,即使像网络爬虫这样简单的东西也会触发空电子邮件。

<?php
if (empty($_POST['email']) || empty($_POST['name'])) {
// Respond with a proper error message
...
} else {
// Send email
$to = "<dedicatedemail>@yahoo.com";
$name = $_POST['name'];
$email = $_POST['email'];
...
}

关于javascript - 使用 html5 表单和 php 获取空电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097665/

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