【发布时间】:2021-11-02 17:37:57
【问题描述】:
我是帮助我姑姑建立个人网站的初学者。我有一个 HTML 表单,用户可以在其中联系她(为了清楚起见,稍微简化了):
<form id = "contact-form" method = "post" action = "contact-form-handler.php">
<input name = "name" type = "text" required><br>
<input name = "email" type = "email" required><br>
<textarea name = "message" class = "form-control" required></textarea><br>
<input type = "submit" class = "form-control submit" value = "SEND MESSAGE">
</form>
脚本contact-form-handler.php 读取,
<?php
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$message = $_POST['message'];
$email_from = "SEND_EMAIL@ADDRESS.com";
$email_subject = "Message from fziastories";
$email_body = "Name: $name.\n".
"Email: $visitor_email.\n".
"Message: $message.\n";
$to = "RECIEVE_EMAIL@ADDRESS.com";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
mail($to,$email_subject, $email_body, $headers);
header("Location: index.html");
?>
这种形式很好用。当我进入各种测试时,消息完美通过。当我没有为三个输入之一输入值时,我无法点击“发送消息”按钮。
除此之外,每隔一段时间,可能每周一次或两次,我都会收到一条没有填写任何值的空消息。这让我感到困惑,因为我认为当前的设置会阻止用户在不输入值的情况下提交表单,而且通过测试我已经排除了将有效响应作为空白输入的可能性。
如果有任何建议,我将不胜感激!如果您有任何后续问题,请随时提出。谢谢!
【问题讨论】:
-
意识到不必通过您的表单来向您的服务器发送包含任意内容的 HTTP 请求。前端验证永远不够,最终您需要在 PHP 中进行验证。
-
谢谢@deceze!