PHP邮件表单 - 不发布变量

时间:2012-10-29 21:17:04

标签: html forms html-email php

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

对于这些基于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");
?>

4 个答案:

答案 0 :(得分:4)

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

将$ _POST ['message']更改为$ _POST ['senderMessage']并且可以正常工作

<强>现有

$message = $_POST['message'];

更改为

$message = $_POST['senderMessage'];

答案 1 :(得分:3)

我强烈建议不要使用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();

更简单,我相信你会同意的。而且更安全,更易于使用,更实用。

答案 2 :(得分:2)

我相信更换

 $message = $_POST['message'];

 $message = $_POST['senderMessage'];

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

答案 3 :(得分:2)

应为$message = $_POST['senderMessage'];