【问题标题】:PHP mail form - not posting a variable [closed]PHP邮件表单-不发布变量[关闭]
【发布时间】:2012-10-29 21:17:03
【问题描述】:

除了 1(一个)变量之外的所有东西似乎都在我的邮件表单上工作。在我的 HTML 页面上,我有一个带有选择框、一些文本输入和消息的文本区域的表单。正在检索除 message 变量之外的所有内容。

我对这些基于 PHP 的邮件表单从来没有这么好过。我通常使用 HTML mailto 表单,但它们不安全且非常初级。

感谢您的帮助。谢谢!

HTML

<form method="post" action="php/contact.php">
            <label for="senderName">name:</label> <input name="senderName" type="text" /><br />
            <label for="senderEmail">email:</label> <input name="senderEmail" type="text" /><br />
            <label for="senderRegarding">subject:</label> 
                <select name="senderRegarding">
                    <option value="start a project">Wish to start a project</option>
                    <option value="request resume password">Request resum&eacute; password</option>
                    <option value="other">Other</option>
                </select><br />
            <label for="senderMessage">message:</label> <textarea name="senderMessage"></textarea><br />
            <input type="submit" name="submit" /> <input type="reset" />
        </form>

PHP

    <?php
if (isset($_POST['submit'])){
     $name = $_POST['senderName'];
     $email = $_POST['senderEmail'];
     $regarding = $_POST['senderRegarding'];
     $message = $_POST['message'];

     $subject = "Contact Form";

     $message = 
     "Name: " . $name . "\r\n" . 
     "Email: " . $email . "\r\n" . 
     "Subject: ". $regarding . "\r\n" .
     "Message: " . $senderMessage;

     $headers = 
     "From: " . $name .  "\r\n" .
     "Reply-To: " . $email . "\r\n" .
     "MIME-Version: 1.0\n" .
     "Content-type: text/plain; charset=iso-8859-1\n";

     $to = "email@address";
};
     mail($to, $subject, $message, $headers);
     header("Location:../index.htm");
?>

【问题讨论】:

  • 它的“senderMessage”不是“消息”

标签: html forms html-email php


【解决方案1】:

如果您查看您的代码,则 textarea 称为“senderMessage”,而您的 $_POST 正在寻找“消息”。

将 $_POST['message'] 更改为 $_POST['senderMessage'] 就可以了

现有

$message = $_POST['message'];

更改为

$message = $_POST['senderMessage'];

【讨论】:

  • 哈哈!哇。让我尴尬的颜色。谢谢一堆。有时需要一双新的眼睛才能看到最简单的事物。
  • 是的!没问题。
【解决方案2】:

我强烈建议不要使用 PHP 内置的mail() 函数;这真的很糟糕。你最终会得到看起来很糟糕的代码;您必须手动构建所有标题;而且它很容易出现错误。

请下载一份phpMailer

这是一个让在 PHP 中发送电子邮件变得轻而易举的类。

require("class.phpmailer.php");
$mail = new PHPMailer();

$mail->From     = $from;
$mail->AddAddress($to);
$mail->Subject  = $subject;
$mail->Body     = $body;
$mail->Send();

简单得多,我相信你会同意的。而且更安全、更易于使用且功能更强大。

【讨论】:

    【解决方案3】:

    应该是$message = $_POST['senderMessage'];

    【讨论】:

      【解决方案4】:

      我相信替换

       $message = $_POST['message'];
      

       $message = $_POST['senderMessage'];
      

      可能会解决您的问题。或者,您可以将 &lt;textarea name="senderMessage&gt;&lt;/textarea&gt; 更改为 &lt;textarea name="message"&gt;&lt;/textarea&gt;

      【讨论】:

      • 答案是正确的,请标记为正确,否则stackoverflow永远不会知道您的问题已经解决。考虑对您的问题有所帮助的投票问题,这样做可以帮助其他有类似问题的人更轻松地找到答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2014-07-05
      • 2018-01-21
      相关资源
      最近更新 更多