为什么网站联系表单不工作


Why website Contact form is not working?

我写了下面的联系方式。但它正在发挥作用。请帮帮我....

<?php
    if (isset($_POST['submit'])) {
        $ToEmail = 'mymail@gmail.com';
        $EmailSubject = 'Site contact form ';
        $mailheader = "From: " . $_POST["email"] . "'r'n";
        $mailheader .= "Reply-To: " . $_POST["email"] . "'r'n";
        $mailheader .= "Content-type: text/html; charset=iso-8859-1'r'n";
        $MESSAGE_BODY = "Name: " . $_POST["name"] . "<br>";
        $MESSAGE_BODY .= "Email: " . $_POST["email"] . "<br>";
        $MESSAGE_BODY .= "Comment: " . nl2br($_POST["comment"]) . "<br>";
        mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) 
        or die("Failure");
        echo "<p>Your message was sent.</p>"; 
    }         
?>
<form action="index.php?page=contacts" method="post">                
    <p>Your name:<br/>
        <input name="name" type="text"  size="32">
    </p>
    <p>Email address:<br/>
        <input name="email" type="text"  size="32">
    </p>
    <p>Message:<br/>
        <textarea name="comment" cols="55" rows="8"></textarea>
    </p>
    <p>
        <input type="submit" name="Submit" value="Send">
    </p>
</form>
如果你发现任何错误,请让我知道。

如果mail()返回false,那么您的PHP配置不正确。如果您在Windows主机上,您需要在php.ini中定义有效的SMTPsmtp_port设置,并且SMTP服务器必须启动并运行。

那,或者你传递了错误的"To:"或其他SMTP服务器直接拒绝的标头值。

您的提交按钮名称为"提交",但您正在检查"提交"。在处理Get/Post变量时,大小写是敏感的。

除此之外,它看起来是可行的。不过,在通过电子邮件发送之前清理数据是个好主意。这样会更好:

<?php
            if (isset($_POST['Submit'])) {
                $ToEmail = 'sustcorpus@gmail.com';
                $EmailSubject = 'Site contact form ';
                $mailheader = "From: " . htmlentities(strip_tags(trim($_POST["email"]))) . "'r'n";
                $mailheader .= "Reply-To: " . $_POST["email"] . "'r'n";
                $mailheader .= "Content-type: text/html; charset=iso-8859-1'r'n";
                $MESSAGE_BODY = "Name: " . htmlentities(strip_tags(trim($_POST["name"]))) . "<br>";
                $MESSAGE_BODY .= "Email: " . htmlentities(strip_tags(trim($_POST["email"]))) . "<br>";
                $MESSAGE_BODY .= "Comment: " . nl2br(htmlentities(strip_tags(trim($_POST["comment"])))) . "<br>";
                mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) 
                or die("Failure");
            echo "<p>Your message was sent.</p>"; 
        }
        ?>
            <form action="index.php?page=contacts" method="post">
                        <p>Your name:<br/>
                        <input name="name" type="text" value="<?php echo $_POST['name']?>"  size="32">
                        </p>
                        <p>Email address:<br/>
                        <input name="email" type="text" value="<?php echo $_POST['email']?>"  size="32">
                        </p>
                        <p>Message:<br/>
                        <textarea name="comment" cols="55" rows="8"><?php echo $_POST['comment']?></textarea>
                        </p>
                        <p>
                            <input type="submit" name="Submit" value="Send">
                        </p>
            </form>

Php是区分大小写的,更改

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

:

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

,因为在你的表单中你已经写了提交按钮的名字: submit