为啥我的 PHP 表单不起作用?我确实收到了电子邮件,但里面没有内容

Posted

技术标签:

【中文标题】为啥我的 PHP 表单不起作用?我确实收到了电子邮件,但里面没有内容【英文标题】:Why isn't my PHP form working? I do receive the email but there is no content in it为什么我的 PHP 表单不起作用?我确实收到了电子邮件,但里面没有内容 【发布时间】:2021-02-18 11:42:35 【问题描述】:

我网站上的 php 表单响应不佳。如果有人可以帮助我,将不胜感激。

这是表单的HTML代码

<form action="contactform.php" method="post" name="form" class="p-5 bg-white">
    
    <div class="row form-group">
        <div class="col-md-6 mb-3 mb-md-0">
            <label class="text-black" for="fname">First Name</label>
            <input type="text" id="fname" class="form-control">
        </div>
        <div class="col-md-6">
            <label class="text-black" for="lname">Last Name</label>
            <input type="text" id="lname" class="form-control">
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <label class="text-black" for="email">Email</label> 
            <input type="email" id="email" class="form-control">
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <label class="text-black" for="subject">Subject</label> 
            <input type="subject" id="subject" class="form-control">
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <label class="text-black" for="mssg">Message</label>
            <textarea name="mssg" id="mssg" cols="30" rows="7" class="form-control" placeholder="Write your notes or questions here..."></textarea>
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <input type="submit" value="Send Message" class="btn btn-primary py-2 px-4 text-white">
        </div>
    </div>
</form>

这是PHP代码

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") 

    $to = "alyyashar@gmail.com";
    $subject = "New email from your site!";
    $fname = $_POST['fname'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
    
    $title = '<h3>Hello! You have received a new mail from your website!</h3>';
    
    $body = "$title
            <br/>
            <b>From:</b> $fname
            <br/>
            <b>E-Mail:</b> $email
            <br/>
            <b>Message:</b>\n$message
            <br/>
            <br/>";

    if (mail($to, $subject, $body, $headers))
        echo "<h1>Sent Successfully! Thank you"." ".$fname.", We will contact you shortly!</h1>";
     else  
        echo "Something went wrong!";
    

?>
<br>
<a href="/">Back to Homepage</a>

这是我收到的电子邮件

Screenshot of the email

当我在表单中输入信息并单击发送消息时,我确实收到了电子邮件,但里面没有内容。

【问题讨论】:

良好的代码缩进将帮助我们阅读代码,更重要的是它将帮助您调试您的代码Take a quick look at a coding standard为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。 【参考方案1】:

表单元素没有name 属性,这是浏览器用来将其名称/值对发送到服务器的属性。因此,当它发布表单时,没有包含任何值。

例如,这个:

<input type="text" id="fname" class="form-control">

应该是这样的:

<input type="text" id="fname" class="form-control" name="fname">

需要对剩余的表单元素重复相同的修复。

【讨论】:

以上是关于为啥我的 PHP 表单不起作用?我确实收到了电子邮件,但里面没有内容的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 密码重置表单不起作用

联系表格 PHP 重定向不起作用

为啥我的谷歌电子商务不起作用?

为啥我的适配器更新不起作用

我用于邮寄表格的 php 脚本不起作用

Pear PHP Mail 发送 CC 似乎不起作用