提交后,php表单不会发送或转到标题位置

时间:2013-02-19 10:35:12

标签: php forms submit form-submit

我有一个简单的PHP表单用于联系目的。但是,它不会在提交后发送电子邮件或转到正确的页面。它改为重定向到mail.php。

我名为contact.php的联系表格如下:

 <form id="contact-form" action="mail.php" method="POST">
    <fieldset>

        <label><span class="text-form">Your Name:</span> <input type="text" name="name"></label>
        <label><span class="text-form">Your Email:</span><input type="text" name="email"></label>
        <label><span class="text-form">Your Contact No:</span><input type="text" name="contact"></label>
        <div class="wrapper">
            <div class="text-form">Your Message:</div>
            <textarea name="message" rows="6" cols="25"></textarea><br />
            <div class="clear">
        </div>
        <div class="buttons">
        <a class="button" href="#"><input class="button" type="submit" value="Send"></a>
        <a class="button" href="#"><input class="button" type="reset" value="Clear"></a>
        </div>

    </fieldset>
</form>

名为mail.php的php代码如下:

    <?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    &contact = $_POST['contact'];
    $formcontent="From: $name \n Message: $message";
    $recipient = "info@whatever.co.za";
    $subject = "Contact form message";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    header("Location:contact.php");
    ?>

我做错了什么。它只是不会将消息发送到电子邮件或重定向到正确的页面??

6 个答案:

答案 0 :(得分:3)

你的语法有点错误。第5行的&contact应为$contact。我假设您在生产服务器上,因此错误报告将被禁用,您将不会收到任何警告。

答案 1 :(得分:2)

尝试使用@之前的邮件功能

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$contact = $_POST['contact'];
$formcontent="From: $name \n Message: $message";
$recipient = "info@whatever.co.za";
$subject = "Contact form message";
$mailheader = "From: $email \r\n";
@mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("location: contact.php");
?>
即使邮件功能产生任何问题,这也会让你通过。另外,请检查是否有任何其他标头未使用http://php.net/manual/en/function.headers-sent.php功能发送。

我强烈建议使用PHPMailer或其他类发送任何类型的电子邮件。

答案 2 :(得分:0)

请检查contact.php文件是否发生了从contact.php到mail.php的重定向

答案 3 :(得分:0)

我认为从您的服务器发送邮件可能会出现问题。 mail.php文件可能会绊倒邮件功能而不进行重定向。

在那里创建一个只包含php邮件功能的新文件(包含您的电子邮件地址和测试邮件)并从您的网络浏览器中浏览它,它会发送吗?

答案 4 :(得分:0)

尝试在脚本开头使用ob_start(),然后退出();标题之后(“位置:contact.php”);

像这样......

<?php
    ob_start();
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    &contact = $_POST['contact'];
    $formcontent="From: $name \n Message: $message";
    $recipient = "info@whatever.co.za";
    $subject = "Contact form message";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    header("Location: contact.php");
    exit();
?>

答案 5 :(得分:0)

将mail.php更改为以下内容:

<?php
mail("info@whatever.co.za", "Contact form message", $_POST['message'], "From: ".$_POST['name']." <".$_POST['email'].">");
header("Location: contact.php");
?>