【问题标题】:Php contact form coding issuePHP联系表格编码问题
【发布时间】:2016-02-10 05:45:29
【问题描述】:

我为我的网站创建的联系表有问题。我不是 PHP 专家,但我认为适当的联系表格会比简单的 href mailto 链接更专业。 我设法收到了电子邮件,它告诉我发件人,但没有主题,而且都是空白的,没有文字。此外,我每天都会收到 2 封没有发件人的电子邮件。

这是我在名为contact.php 的页面中在PHP 中所做的。 希望能帮到你:

<?php 
$name = $_POST['name'];
$email = $_POST['email'];
$form1_services = $_POST['form1_services'];
$msg = $_POST['msg'];
$formcontent="From: $name \n Message: $message";
$recipient = "dandrea.alessandro81@gmail.com";
$subject = "Customer Inquiry";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You! Keep in touch soon!" . " -" . "<a href='index.html'           style='text-decoration:none;font-family: 'gooddogregular';color:#009999;'>     Return Home</a>";

?>

这是 HTML 中的实际形式:

<form action="contact.php" method="post">
    <fieldset>
        <legend></legend>
        <div class="controlgroup">
            <label for="form1_name">Name *</label>
                <input type="text" placeholder="Enter your full name*" name="name" value>
        </div>
        <div class="controlgroup">
            <label for="form1_email">Email *</label>
                <input type="text" placeholder="Enter a valid email address*" name="email" value>
        </div>
        <div class="controlgroup">
            <label for="form1_services">Services Required</label>
                <select id="form1_services" name="services">
                    <option value="Website Design"> Website Design (from scratch) </option>
                    <option value="Resposive Design"> Responsive Design </option>
                    <option value="Customize a Site"> Customize a Site </option>
                    <option value="Quotation"> Quotation </option>
                </select>
        </div>
        <div class="controlgroup">
            <label>Project Info*</label>
                <textarea placeholder="Ciao Alessandro, I am contacting you because...*" id="msg" name="msg" required aria-required="true"></textarea>
        </div>
            <input type="submit" name="submit_btn" id="send" value="Hit me up!" class="wow rubberBand animated" data-wow-delay="2s">
    </fieldset>         
</form>

提前非常感谢。 亚历山德罗

【问题讨论】:

  • 将 echo('&lt;p&gt;'.$_POST['name'].'&lt;/p&gt;'); 添加到您的 php 以确保您实际上是从表单中获取数据。
  • 作为一个警示故事,正如@samlev 所提到的,您需要实施验证,以免有人劫持您的表单发送垃圾邮件。
  • 还要注意您正在使用来自name html 属性的索引。您要求$_POST['form1_services'],但它实际上是以services 发送的。

标签: php html forms email post


【解决方案1】:

看看您的 PHP,您正在收集许多字段,然后实际上并没有使用它们。试试这个:

<?php 
$name = $_POST['name'];
$email = $_POST['email'];
$form1_services = $_POST['services'];
$msg = $_POST['msg'];

$message = 'From: ' . $name . ' <' . $email . '>' . "\n";
$message .= 'Service: ' . $form1_services . "\n";
$message .= 'Message: ' . "\n";
$message .= $msg;

$recipient = "dandrea.alessandro81@gmail.com";
$subject = "Customer Inquiry";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $message, $mailheader) or die("Error!");
echo "Thank You! Keep in touch soon!" . " -" . "<a href='index.html'           style='text-decoration:none;font-family: 'gooddogregular';color:#009999;'>     Return Home</a>";

请记住,此时您实际上并未验证任何此类信息,因此您无法确定电子邮件地址或姓名是否确实有效,但这至少应该向您展示什么正在发布。

【讨论】:

  • 您好 samlev,非常感谢您的帮助。我刚刚尝试了您的代码,终于可以使用了。唯一的问题是,这封邮件被我的垃圾邮件发走了。你认为它可以修复吗?
  • 最好的选择是不要让它“来自”用户(这很容易被滥用,大多数邮件客户端会看到发件人与实际发送它的服务器不匹配)。您将在正文中获取姓名和电子邮件,因此只需从您自己的电子邮件地址发送,或者您可以设置一个 gmail 过滤器来捕获所有联系请求。
  • 我还要注意,将未经处理的from 作为标题是个坏消息。我可以将我的电子邮件地址设置为 test@example.com\r\nBCC: spamtarget@example.com, spamtarget2@example.com, morespam@example.com,然后它会在你不知情的情况下向其他多个人发送电子邮件。
  • 嗨@Alessandro,如果真的对您有帮助,请勾选正确答案。
【解决方案2】:

尝试添加一些标题:

    $mailheader = "From: $email \r\n";
    $mailheader .= "MIME-Version: 1.0\r\n";
    $mailheader .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 2013-08-15
    • 2016-06-23
    • 1970-01-01
    • 2015-06-22
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多