0
使用下面的脚本(取自模板),我添加了一个简单的验证问题来防止垃圾邮件(什么是2 + 2?)。截至目前,填写提交按钮时,error.php页面出现,但表单被提交为空白。PHP联系表格验证字段
如何确保表单在验证安全性问题后才能提交?
<?php
$EmailTo = "[email protected]";
$Subject = "website";
$name = Trim(stripslashes($_POST['name']));
$email = Trim(stripslashes($_POST['email']));
$number = Trim(stripslashes($_POST['number']));
$message = Trim(stripslashes($_POST['message']));
// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.php\">";
exit;
}
// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $name;
$Body .= "\n";
$Body .= "Tel: ";
$Body .= $number;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $message;
$Body .= "\n";
// send email
$submit = mail($EmailTo, $Subject, $Body, "From: <$email>");
// redirect to success page
if(isset($_POST['submit'])){
if(isset($_POST['answer']) && $_POST['answer'] == 4){
print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.php\">";
}
}
?>
形式的代码如下:
<div id="form-holder" class="cont">
<h2>Contact form</h2>
<form method="post" action="send.php" class="uniform get-in-touch">
<div class="i-h">
<input type="text" name="name" id="name"/>
<div class="i-l"><span>Name</span></div></div>
<div class="i-h">
<input type="email" name="email" id="email"/>
<div class="i-l"><span>E-mail</span></div></div>
<div class="i-h">
<input type="text" name="number" id="number"/>
<div class="i-l"><span>Number</span></div></div>
<div class="t-h">
<textarea name="message" rows="32" cols="8" id="message" placeholder="Please leave us a message."></textarea>
</div>
<br><p>What is 2+2?</p><input type="text" name="answer" id="answer" />
<input type="submit" name="submit" value="Submit" class="submit-button">
<a href="#" class="do-clear">Clear</a>
</form>
</div>
你好,感谢您对本 - 我有一种感觉,“答案”部分应该已经控制了“提交”进程。 if(!empty($ _POST ['answer'])&& $ _POST ['answer'] == 4){ //发送电子邮件 $ submit = mail($ EmailTo,$ Subject,$ Body,“From :<$email>“); \t print“”; } else { //设置错误 print“”; } ?> – Stanley