【问题标题】:Can't get my contact form to work无法让我的联系表正常工作
【发布时间】:2014-02-13 10:05:57
【问题描述】:

我有一个关于创建联系表单的问题。目前我有一个表格和一些php代码。但是每次点击提交按钮时,我都会被重定向到 php 站点本身,而不是发送实际的邮件。

这是我的代码:

HTML 表单:

<form action="send.php" method="post" target="_new">
  <h1>Name:</h1> <br><input type="text" name="name" class="name"><br>
  <h1>E-mail:</h1> <br><input type="text" name="email" class="email"><br>
  <h1>Message:</h1> <br><textarea rows="20" cols="60" width="450px" height="210px" name="message"></textarea><br>
  <input type="submit" name="submit" value="submit" class="submit">
</form>

php页面:

<?php

$recipient = "myemail@mail.com";
if (isset($_POST['email'])){
    $mail = $_POST['email'];
    $name = $_POST['name'];
    $message = $_POST['message'];
    mail("$recipient", $name, $message);
}
header('Location: send.php');
?>

我在互联网上了解到 Ajax 和 javascript 有可能吗?但我对 AJAX 不是很熟悉。因此,我们将不胜感激! :D

此表单唯一要做的就是在单击提交按钮时向我的电子邮件帐户发送一封电子邮件,而无需打开邮件程序。

谢谢!

【问题讨论】:

  • 是表单在页面send.php
  • 是的,检查了无数次。 :)
  • 我宁愿检查$_POST['submit'] 而不是查看电子邮件是否已设置,但这是个人喜好。
  • 无论发送电子邮件有什么问题,添加 Ajax 都无济于事。
  • 如果表单和php都在send.php上,我不明白你的代码为什么会有标题('Location:send.php');???如果 php 代码不在 send.php 上,那么将 action="send.php" 更改为 action="wherever_the_php_code_is" 很可能会解决您的问题。

标签: javascript php ajax forms


【解决方案1】:
<form  method="post">
                            <h1>Name:</h1> <br><input type="text" id="name" name="name" class="name"><br>
                            <h1>E-mail:</h1> <br><input type="text" id="email" name="email" class="email"><br>
                            <h1>Message:</h1> <br><textarea id="msg" rows="20" cols="60" width="450px" height="210px" name="message"></textarea><br>
                            <input type="submit" name="submit" value="submit" class="submit">
                        </form>
<script>
$.ajax({
    type: "post",
    url: "send.php",
    data: {name: $('#name').val(), email: $('#email').val(), message: $('#msg').val()},
    success: function(result){
        alert("Mail send!");
    }
});
</script>

您的 php 代码是相同的,但您不需要标头。

【讨论】:

    【解决方案2】:

    当您单击提交按钮时,在邮件功能 irt 被重定向到 send.php 本身之后,操作将转到 send.php。于是开始了一个自循环。你需要改变它 将页面重定向到您的表单页面。即,

    header('Location: send.php'); //change it !!
    

    您还需要mail server 从本地计算机发送邮件,否则您需要托管项目。

    如果您想使用AJAX 发送邮件,请执行以下代码:

    <script>
    $('form').submit(function(){
        $.ajax({
            url:'send.php',
            data:$('form').serialize(),
            success:function(response){
                alert(response);
            }
        });
        return false;
    });
    </script>
    

    那么send.php会像

    $recipient = "myemail@mail.com";
    if (isset($_POST['email'])){
        $mail = $_POST['email'];
        $name = $_POST['name'];
        $message = $_POST['message'];
        if(mail($recipient, $name, $message)){
            echo 'Mail sent';
        }
        else{
             echo 'Mail cant sent';
        }
    }
    

    【讨论】:

    • 邮件服务器到底是什么意思?你的意思是一个真正的电子邮件?因为在我的代码中,我使用自己的电子邮件,但不想把它放在这里;)但是我将位置更改为索引,现在它不再进入 php 页面。接下来就是接收邮件了。没有收到一架飞机:/
    • 目前是的。但如果需要,我可以将其上传到我的主机。
    • OKay..mail() 功能只有在您在本地机器上安装了邮件服务器时才有效。日期你没有收到邮件....在你的远程服务器上测试它
    • 是的!我收到了一封邮件!伟大的! :D 最后一个问题。当我点击提交时,我将被重定向到 php 页面。要留在我自己的 index.html 上,我必须使用 header() 吗?
    【解决方案3】:

    请去掉$recipient中的双引号""

    mail($recipient, $name, $message);
    

    【讨论】:

      猜你喜欢
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多