PHP表单未成功提交获取自定义错误

时间:2018-02-19 15:10:19

标签: php html5

我的PHP表单未成功提交。我一直收到我写的自定义错误('哎呀有问题。请再试一次")。

任何帮助将不胜感激。我对PHP完全不熟悉,所以我想我的某些php变量链接错了并且没有连接我的mailer-new.php文件?

提前致谢,

   <section class="form-body">
    <form method="post" action="mailer-new.php" class="contact-form" >
        <div class="row">
            <?php
                if ($_GET['success']== 1){
                    echo " <div class=\"form-messages success\"> Thank you! 
                your message has been sent. </div>";
                }
                if ($_GET['success']== -1){
                    echo " <div class=\"form-messages error\"> Opps there was a 
                  problem. Please try again </div>";
                };
                ?>
            <div class="field name-box">
                <input type="text" name="name" id="name" placeholder="Who 
                    Are You?" required/>
                <label for="name">Name</label>
                <span class="ss-icon">check</span>
            </div>
            <div class="field email-box">
                <input type="text"  name="email" id="email" 
                    placeholder="name@email.com" required/>
                <label for="email">Email</label>
                <span class="ss-icon">check</span>
            </div>
            <div class="field msg-box">
                <textarea name="message" id="msg" rows="4" 
                    placeholder="Your message goes here..."/></textarea>
                <label for="message">Msg</label>
                <span class="ss-icon">check</span>
            </div>
            <input class="button" type="submit" value="Send"/>
        </div>
    </form>
</section>

MAILER.PHP

<?php

// Get the form fields, removes html tags and whitespace.
$name    = strip_tags(trim($_POST["name"]));
$name    = str_replace(array("\r","\n"), array(" ", " " ), $name);
$email   = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$message = trim($_POST["message"]);

// Check the data.
if (empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
    header("Location: http://www.conallen.ie/index.php?
 success=-1#form");
    exit;
}

// Set the recipient email address. Update this to YOUR desired email address.
$recipient = "allenconallen46@gmail.com";

// Set the email subject.
$subject = "New contact from $name";

// Build the email content.
$email_content = "Name: $name\n";
$email_content .= "Email: $email\n\n";
$email_content .= "Message:\n$message\n";

// Build the email headers.
$email_headers = "From: $name <$email>";

// Send the email.
mail($recipient, $subject, $email_content, $email_headers);

// Redirect to the index.html page with success code
header("Location: http://www.conallen.ie/index.php?success=1#form");

?>    

1 个答案:

答案 0 :(得分:0)

此代码在我的本地计算机上正常运行,即使未发送电子邮件,响应消息也正确显示。我所做的更改是更改了主机名,并使两行标题重定向到失败响应中的一行。您还在HTML中提到文件名为action="mailer-new.php",文件名称为MAILER.PHP。它们在代码中是否相同?

要检查邮件是否已发送,请删除标题重定向并按此更新。如果您收到失败的响应,则表示您的服务器中未配置邮件。

if(mail($recipient, $subject, $email_content, $email_headers)) {
echo "mail sent";
} else {
 echo "mail sent failed";
}

或者,您可以使用SMTP发送电子邮件。您可以使用名为PHP Mailer的库,并可以使用任何有效的电子邮件地址,如Gmail帐户。如果是这样的话,请查看这个问题

Sending email with PHP from an SMTP server