【问题标题】:Basic contact form not displaying input info in email PHP HTML5基本联系表单未在电子邮件 PHP HTML5 中显示输入信息
【发布时间】:2017-06-27 10:16:57
【问题描述】:

我有一个使用 PHP 提交的基本联系表单。提交后,我会收到一封电子邮件,但它不会显示输入到该字段中的信息。然而,该信息被发送。它显示在浏览器的地址栏中,例如

../contact.phpurl=antispam&name=dfsaa&number=fdfd&email=fdsafds%40fds.com&message=Please+contact+me+regarding+this

正面:

<form action="contact.php">
<input class="form-control" id="name" name="name" placeholder="Name" type="text" required>
<input class="form-control" id="number" name="number" placeholder="Contact Number" type="text" required>
<input class="form-control" id="email" name="email" placeholder="Email" type="email" required>
<textarea class="form-control" id="message" name="message" placeholder="Message" rows="5">Please contact me regarding this...</textarea><br>
<button class="btn btn-default pull-right" type="submit">Send</button>
</form>

PHP:

    <?php
    $name = @trim(stripslashes($_POST["name"])); 
    $email = @trim(stripslashes($_POST["email"]));
    $number = @trim(stripslashes($_POST["number"]));
    $message = @trim(stripslashes($_POST["message"])); 

    $email_from = $email;
    $email_to = "sarah@blockcpm.com";

    $body = "Name: " . $name . "\n\n" . "Email: " . $email . "\n\n" . "Number: " . $number . "\n\n" . "\n\n" . "Message: " . $message;

    $success = @mail($email_to, $body, "Name: " . $name . "\n\n" . "Email: " . $email . "\n\n" . "Number: " . $number . "\n\n" . "Message: " . $message);


 ?>

 <!DOCTYPE HTML>
 <html lang="en-US">

 <head>
    <script>
        alert("Thank you for contacting us. A member of our team will be in touch as soon as possible.");

    </script>
    <meta HTTP-EQUIV="REFRESH" content="0; url= index.html">
  </head>

联系表格在另一个站点上完美运行...这个是在我没有创建的 Godaddy 站点上,我只是在修改。

我收到的电子邮件包含所有字段标题,但没有输入信息。

有什么想法吗?

【问题讨论】:

  • 这不是重复的! @弗雷德
  • @tilz0R 谢谢!我查看了所有其他类似的答案,但没有一个是我想要的
  • 谁重新打开了这个问题,没有理由这样做,这是重复的。标记问题以供审核。
  • @Fred-ii- 请您指出这个问题,它是重复的,因为到目前为止我还没有找到答案。谢谢
  • 所有给出的答案都遗漏了一些东西。不要发布部分答案。

标签: php html forms email


【解决方案1】:

默认情况下,您的表单是 GET 类型,而不是 POST,因为您要检查 PHP,因此数据通过 $_GET 而不是 $_POST 全局 PHP 变量可见。

既然要POST,就修改表单结构

<form action="contact.php">

应该是

<form action="contact.php" type="post">

在你的 PHP 中,首先检查请求方法是否为 POST

<?php 
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') {
    //Get data and send email
    $name = trim($_POST['....']);
    ...
}

【讨论】:

  • 这就是问题所在!非常感谢!感谢您意识到这实际上不是重复的。
【解决方案2】:

您还没有设置表单的method,所以它默认发出 GET 请求。

您可以在 URL 中看到的数据将用于填充 $_GET

您需要在&lt;form&gt; 元素上设置method="POST" 以发出POST 请求,使数据放入请求正文中,并出现在$_POST 中。

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 2015-08-13
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2021-04-23
    相关资源
    最近更新 更多