-2

我是 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"){" 位. 但是,虽然该消息正在工作,但表单仍在提交。为什么是这样。另请注意,“评论”字段实际上是一个蜜罐。谢谢!

4

4 回答 4

5

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

一个教程,但我推荐 Jquery验证

于 2012-10-15T15:22:38.283 回答
0

就像 lznogood 说的,PHP 在服务器上验证表单,所以你需要先将信息发送到服务器,然后 PHP 才能处理它。

如果您希望在将表单发送到服务器之前在用户端检查表单,您应该使用 JavaScript 来执行此操作(jQuery 是一个很好的工具),在用户端检查后,您可以决定是否发送表单到服务器与否。

于 2012-10-15T15:37:15.247 回答
0

虽然这不是您问题的答案,但您可能对新的 html5 功能感兴趣placeholder在这里阅读。您可以在这里查看它适用于哪些浏览器(愚蠢的 Internet Explorer!)。5 年前,我会将那些“提示”作为值,这很难验证。 placeholder让它更容易。您的标签将如下所示:

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

请注意,该值为空。您可以省略 value 属性,我将其保留以表明此处不需要它。

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

于 2012-10-15T23:16:36.523 回答
0

“我想防止人们在不填写表格的情况下按发送,因此“if($name=="Name" || $email=="Email" || $message=="Message"){"

您需要做的就是禁用提交按钮客户端,直到满足正确的验证,然后还要验证服务器端。正如@Iznogood 所说,这就是你犯错误的原因

于 2012-10-15T15:26:52.307 回答