我是一个PHP新手,所以请耐心等待这个相当简单的问题。
我有一个像这样的PHP表单设置>>
<?php
if($_POST){
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$comments = $_POST['comments'];
if($comments)
$error = "There was an error, please give us a call at ### ###-####.";
else{
if($name=="Name" || $email=="Email" || $message=="Message"){
$error = "All fields are required, please fill them out and try again.";
}else
$header = "From: $name <$email>";
$message = "Name: $name\n\nEmail: $email\n\nMessage: $message";
if(mail("email@domain.com", 'Form Submission', $message, $header))
$success = "Thanks for sending us your message, we'll get back to you shortly.";
else
$error = "There was an error, please give us a call at ### ###-####.";
}
if($error)
echo '<div class="msg error">'.$error.'</div>';
elseif($success)
echo '<div class="msg success">'.$success.'</div>';
}
?>
基本思想是表单在每个字段中预先填充了描述性文本,但是当您单击它们时,它们将通过Javascript清除。我想阻止人们在没有填写表格的情况下按下发送,因此“if($ name ==”Name“|| $ email ==”Email“|| $ message ==”Message“){”bit 。但是,当该消息正在运行时,表单仍在提交。为什么是这样。另请注意,“评论”字段实际上是蜜罐。谢谢!
答案 0 :(得分:5)
因为php是服务器端的。您需要查看javascript验证以获得所需内容。要使用php验证,您必须提交表单。
一个tutorial,但我推荐Jquery validation
答案 1 :(得分:0)
“我想阻止人们在不填写表格的情况下按下发送,因此”if($ name ==“Name”|| $ email ==“Email”|| $ message ==“Message” ){“
您需要做的就是禁用提交按钮客户端,直到满足正确的验证,然后验证服务器端。正如@Iznogood所说,这就是你犯错误的原因
答案 2 :(得分:0)
就像lznogood所说,PHP验证服务器上的表单,因此您需要在PHP处理它之前将信息发送到服务器。
如果您希望在将表单发送到服务器之前在用户端进行检查,您应该使用JavaScript来执行此操作(jQuery是一个很好的工具),在用户端检查后,您可以决定是否将表单发送到服务器。
答案 3 :(得分:0)
虽然这不是您问题的答案,但您可能会对新的html5功能placeholder
感兴趣。阅读它here。您可以在here(愚蠢的Internet Explorer!)中查看它可以使用的浏览器。 5年前,我会把这些“提示”作为价值,这是一个痛苦的验证。 placeholder
使得它变得容易太多了。您的代码如下:
<input type="text" name="email" placeholder="Enter Your Email Here" value="">
请注意,值为空。你可以省略value属性,我把它留下来显示它在这里不需要。
至于你原来的问题的答案,其他人都是正确的,javascript是要走的路。