2012-10-15 78 views
-2

我是一个PHP新手,所以请忍受我这个相当简单的问题。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 protected]", '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

为什么倒票? OP承认他是一个新手。他试图解决的问题非常普遍(简单的表单验证),他只是在想当PHP应该思考Javascript的时候。根据每个计算器,您应该在帖子“非常草率,不费力的帖子”时投票。所以懒惰的问题,而不是作为一个新手。 – Landon

回答

5

因为php是服务器端。你需要查看JavaScript验证你想要的。要使用php进行验证,您必须提交表单。

一个tutorial但我建议jQuery的validation

+0

好了解。感谢您的答复。 – Pieter

+0

建议使用PHP验证,因为它更安全。你必须检查字符串不仅是为了存在,还要检查空白和mysql注入或html/javascript,并确保你使用utf 8,所以你不会有这些问题:“'〜〜$ <>?#?äåéþþúúßðøμñ这也可以确保字符如下:''“”不会阻止你的PHP编码,当使用javascript进行验证时,黑客可以删除浏览器中的js,并发送表单,因此请务必使用此服务器侧!!! – botenvouwer

+0

@sirwilliam也可以禁用JavaScript,从而绕过所有js验证。这就是为什么你必须总是从php检查。 – Iznogood

0

“我想,以防止有人按下发送表格填写不出来,因此,‘如果($名称==’名称” || $电子邮件== “Email”|| $ message ==“Message”){“

所有你需要做的就是禁用提交按钮客户端,直到符合正确的验证,然后验证服务器端。@Iznogood说,这是为什么你的开始你的错误

0

像lznogood说,PHP验证服务器上的窗体,所以你需要发送的信息在PHP可以处理它之前将其提供给服务器。

如果你想在发送给服务器之前在用户端检查表单,你应该使用JavaScript来做到这一点(jQuery是一个很好的工具),在用户端检查后,你可以决定是否将表单发送到服务器。

0

虽然这不是您的问题的答案,但您可能会对新的html5功能placeholder感兴趣。阅读关于它here。您可以查看它在here(愚蠢的Internet Explorer!)中工作的浏览器。 5年前,我会把这些“暗示”作为价值,这是一个很难验证的问题。 placeholder使它更容易。您的代码看起来像:

<input type="text" name="email" placeholder="Enter Your Email Here" value="">

注意值为空。你可以省略value属性,我把它留在这里显示它不需要。

至于你原来的问题的答案,其他人都是正确的,JavaScript是要走的路。

相关问题