如何正确提交javascript联系表单

时间:2013-12-03 16:01:49

标签: javascript php email

html代码:                           联络我                 

                <label for="Name">Name:</label>
                <input type="text" name="name" id="Name" accesskey="N" tabindex="1">

                <label for="Email">E-mail:</label>
                <input type="text" name="email" id="Email" accesskey="E" tabindex="1">

                <label for="Phone">Phone Number:</label>
                <input type="text" name="number" id="Number" tabindex="1">

                <label for="Comment">Comments</label>
                <textarea type="text" name="comment" id="Comment" rows="27" cols="70" tabindex="1"></textarea>

                <input id="mySubmit" type="submit" value="Submit">
            </form>
    </fieldset>
</div>

email.php

<?php

if (isset($_POST['submit'])) {

  $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

  if (!$email)
    echo "<script type='text/javascript'>alert('Please enter a valid email address...');history.back();</script>";

  else {
    $to = "randomemail@gmail.com"; //change this to YOUR email address

    $name = (isset($_POST['name'])) ? $_POST['name'] : "anonymous";
    $number = (isset($_POST['number'])) ? $_POST['number'] : "none";
    $comment = (isset($_POST['comment'])) ? $_POST['comment'] : "none";

    $subject = "Message from $name via contact form";

    $message = "Name: $name\nNumber: $number\nEmail: $email\nMessage: $comment";

    $from = "From: " . $name . "<" . $email .">\r\n" .
            "Reply-To: " . $email ."\r\n" .
            "X-Mailer: PHP/" . phpversion();

    if (mail($to, $subject, $message, $from))
      header("Location: thanks.html");

    else
      echo "<script type='text/javascript'>alert('An unknown system error has occurred!');history.back();</script>";
  }
}

?>

当你提交时,它会加载email.php,但只加载一个白页,而不是它应该的thanks.html。

2 个答案:

答案 0 :(得分:0)

您忘记为提交字段命名:

            <input id="mySubmit" type="submit" value="Submit" name="submit">
                                                              ^^^^^^^^^^^^^

请勿使用表单字段来检测帖子。使用100%可靠:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { ... }

代替。如果执行POST,这将始终为真。正如您在版本中看到的那样,简单的拼写错误或疏忽将完全扼杀您的逻辑。

答案 1 :(得分:0)

首先清空您的文件,然后将header("Location: thanks.html");放入您的php标记中。如果它工作,然后逐步添加其他行。你会看到烦人的路线。阅读PHP参考网站上的标题。应该小心使用