我无法发送联系表单

时间:2014-04-05 14:09:08

标签: php forms

此表单代码不会发送电子邮件...

这是HTML表单:

<form method="post" action="index.php">
        <table class="form">
            <tr>
                <th class="label">
                    <label for="name">Name</label>
                </th>

                <td class="input">
                    <input type="text" name="name" id="name">
                </td>
            </tr>

            <tr>
                <th class="label">
                    <label for="email">Email</label>
                </th>

                <td class="input">
                    <input type="text" name="email" id="email">
                </td>
            </tr>

            <tr>
                <th class="label">
                    <label for="message">Message</label>
                </th>

                <td class="input">
                    <textarea type="text" name="message" id="message"></textarea>
                </td>
            </tr>
        </table>

        <input type="submit" value="Send">
    </form>

这是发送代码:

<?php 

if ($_SERVER["REQUEST_METHOD"] == "POST") {

$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$email_body = "";

$email_body = $email_body . "Name: " . $name;
$email_body = $email_body . "Email: " . $email;
$email_body = $email_body . "Message: " . $message;

mail("myemail@email.com" , "Contact Form" ,  $message , "From: $name");

header("Location: index.php?formsubmit=1");

exit;
}

?>

我完全不确定出了什么问题,之前有效,但是在我尝试在我的代码中添加一些内容之后,就像是表示提交表单提交等于一个显示感谢联系我们而不是解释形成。那不应该与它有任何关系,我不会想......

可能是因为我添加了整个?formsubmit = 1的东西吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果您没有在前面放置任何可输出任何可见信息的代码,请确保您只在Location中设置header({。echo,{{1} }})。理想情况下,print_r...应位于页面的开头,然后才会打印出任何内容。

如PHP手册中所述:PHP: header - Manual

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。使用include或require,函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()之前输出空格或空行。

但是,通常的做法是验证表单是否已经提交,这就是命名你提交这样的按钮......

header

并按照这样的方式进行检查(在您发送的代码中,就像您所说的那样)......

<input name="submit" type="submit" value="Send" />
<!-- I added the 'name' attribute here -->

答案 1 :(得分:0)

我自己想出来了,

<form method="post" action="index.php?formsubmit=1">

是我需要的,摆脱了

header("Location: index.php?formsubmit=1");

并且卡住了

<?php 

if ($_SERVER["REQUEST_METHOD"] == "POST") {

$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$email_body = "";

$email_body = $email_body . "Name: " . $name;
$email_body = $email_body . "Email: " . $email;
$email_body = $email_body . "Message: " . $message;

mail("jiggaboojones@gmail.com" , "Contact Form" ,  $message , "From: $name");

exit;
}

?>

在底部。

由于