HTML Post action把我发送到php表格
问题描述:
我是一个PHP新手,我只是想要一个简单的电子邮件联系表单,如果没有输入必填字段将会显示一个错误,并会给出一个感谢信息,如果电子邮件已发送。HTML Post action把我发送到php表格
当我点击我的提交按钮时,电子邮件确实会发送,但网站会直接重定向到/send-email.php
页面,该页面是空白且无用的。所需的表单字段似乎也没有做任何事情来防止在表单未填写时发送电子邮件。
HTML表单代码:
<form class="contact-form" action="php/send-email.php" method="post" novalidate>
<div class="row">
<div class="column width-6 pad-1 contact-column">
<h5>Your Name*</h5>
<input type="text" name="name" class="form-box" tabindex="1" required>
</div>
<div class="column width-6 pad-1 contact-column">
<h5>Email*</h5>
<input type="text" name="email" class="form-box" tabindex="2" required>
</div>
</div>
<div class="row mt-2">
<div class="column width-6 pad-1 contact-column">
<h5>Your Website</h5>
<input type="text" name="website" class="form-box" tabindex="3">
</div>
<div class="column width-6 pad-1 contact-column">
<h5>Company</h5>
<input type="text" name="company" class="form-box" tabindex="4">
</div>
</div>
<div class="column width-12">
<input type="text" name="honeypot" class="form-honeypot">
</div>
<div class="row mt-2">
<div class="column width-12 pad-1">
<h5>Your Message*</h5>
<textarea name="message" class="form-text" tabindex="5" required></textarea>
</div>
</div>
<div class="row mt-2">
<input type="submit" value="Send Your Message!" class="btn btn-large bg-blue">
</div>
</form>
php文件
<?php
$recipient = "[email protected]";
$name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
$email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
$website = filter_var($_POST["website"], FILTER_SANITIZE_URL);
$company = filter_var($_POST["company"], FILTER_SANITIZE_STRING);
$message = filter_var($_POST["message"], FILTER_SANITIZE_STRING);
$headers = 'From: '.$name.' <'.$email.'>' . "\r\n";
$headers .= 'Reply-To: '.$email.'' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();
$subject = "New email from contact form";
$email_content = "Name: $name\n";
$email_content .= "Email: $email\n";
$email_content .= "Website: $website\n";
$email_content .= "Company: $company\n\n";
$email_content .= "Message:\n$message\n\n\n";
if(mail($recipient, $subject, $email_content, $headers)){
echo "Thanks for the email, we'll get back to as soon as possible!";
}
?>
在正确的方向任何帮助表示赞赏!
答
检查空输入。尝试使用if else语句。例如。
if($name == '')
{
echo "Please fill in name";
}
else if($var == '')
{
//error message
}
,或者你可以尝试
if($name == '' || $email == '' || $var == '')
{
echo "Please fill in all the blank";
}
我很新太PHP,所以这只是一个简单的检查。希望它会有所帮助!
+0
真棒!米全新,所以这当然有帮助,谢谢! – cheesecake28
+0
不客气:) – Wassup
好的,谢谢,我认为在html代码中的必填字段应该足够了。但是,我遇到的更大的问题是,它不会保留在我的主页上,它会将我带到send-email.php页面。这是否应该发生? 编辑:像,回声应该显示在哪里?我认为所回显的文本会在我的浏览器中弹出? – cheesecake28
你需要前面提到的if语句,如果你想显示错误/成功消息,你应该把它保存到这个页面上的会话中,然后使用header()来重定向到你想要结束的页面开启,然后从会话中回显那里的消息。 – Rasclatt
所以你会有'$ _SESSION ['email_success'] =“感谢您的电子邮件,我们会尽快回复!”; header('Location:link/to/final/page.php'); exit;'在目标页面上,你可以做类似'if(!empty($ _ SESSION ['email_success'])){echo $ _SESSION ['email_success']; $ _SESSION ['email_success'] = NULL; }' – Rasclatt