繁体   English   中英

联系表格张贴

[英]Contact Form Posting

我为我的联系表创建了 html、php 和 js 文件。 我将它上传到我的托管服务提供商只是为了测试,因为我没有实时服务器。 当我填写所有必填字段并点击提交时,我没有收到发送到 email 地址的信息。 这只是一个简单的表格,以便客户可以向我发送他们的查询和详细信息。

 $(function() { $(".form-control").on('focus', function() { $(this).parents(".form-group").addClass('focused'); }); $(".form-control").on('blur', function() { $(this).parents(".form-group").removeClass('focused'); }); });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <div class="container"> <form action="form-handler.php" method="POST" class="form"> <div class="form-group"> <label for="name" class="form-label">Your Name</label> <input type="text" class="form-control" id="name" name="Name" placeholder="Jane Doe" tabindex="1" required> </div> <div class="form-group"> <label for="email" class="form-label">Your Email</label> <input type="text" class="form-control" id="email" name="Email" placeholder="Jane@Doe.com" tabindex="2" required> </div> <div class="form-group"> <label for="subject" class="form-label">Subject</label> <input type="text" class="form-control" id="subject" name="Subject" placeholder="Subject" tabindex="3" required> </div> <div class="form-group"> <label for="message" class="form-label">Message</label> <textarea class="form-control" name="message" id="message" cols="50" rows="5" placeholder="Write your message here..." tabindex="4"></textarea> </div> <div> <button class="btn" type="submit">Send Message</button> </div> </form> </div> </body> </html>

PHP

<?php
$message_sent = false;
if (isset($_POST['email']) && $_POST['email'] != '')
{
    if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
    {
        //submit the form
        $userName = $_POST['name'];
        $userEmail = $_POST['email'];
        $messageSubject = $_POST['subject'];
        $message = $_POST['message'];

        $to = "...@....com";
        $body = "";

        $body = "From:" . $userName . "\r\n";
        $body = "Email:" . $userEmail . "\r\n";
        $body = "Message:" . $message . "\r\n";
        mail($to, $messageSubject, $body);
        $message_sent = true;
    }
}
?>

你的代码是

$body = "From:" . $userName . "\r\n";
$body = "Email:" . $userEmail . "\r\n";
$body = "Message:" . $message . "\r\n";
mail($to, $messageSubject, $body);

从文档中,我看到发送 FROM 等附加标头的正确方法如下:

$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

另一种更完整的方式如下:

// To send HTML mail, the Content-type header must be set
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';

// Additional headers
$headers[] = 'To: Mary <mary@example.com>, Kelly <kelly@example.com>';
$headers[] = 'From: Birthday Reminder <birthday@example.com>';
$headers[] = 'Cc: birthdayarchive@example.com';
$headers[] = 'Bcc: birthdaycheck@example.com';

// Mail it
mail($to, $subject, $message, implode("\r\n", $headers));

最后,.. 而不是这样的代码:

mail($to, $messageSubject, $body);
$message_sent = true;

你应该编码这个

$message_sent = mail($to, $messageSubject, $body);

因为您的代码假设一切正常,但如果邮件发送与否,邮件 function 已经返回 true 或 false。

但我看到的最重要的东西是你的表单输入名为:

  • 姓名
  • Email
  • 主题
  • 信息

和您的 php 代码检查

  • $_POST['name']; // 与名称不同
  • $_POST['电子邮件']; //不同于Email
  • $_POST['主题']; // 不同的 rom 主题
  • $_POST['消息']; // 好的

所以,... if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))应该总是返回 false,因为$_POST['email'] email 不存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM