使用PHP进行表单验证并放置错误消息?

时间:2014-03-13 05:08:07

标签: php forms validation

我制作了一个注册表单,在提交检查表时,用户是否填写了所有字段,用户名是否已被删除,或者电子邮件是否已被使用。所有这些验证都运行良好。但是当提交表单时,让我们说用户提交的内容无效时,错误消息当然会在不同的页面上一次显示一个。我想让这些消息一次出现在与表单相同的页面上,因此它更加用户友好。我试图将错误消息变为变量,然后在表数据单元格中回显该变量,但变量是" undefined"。我试图将变量设为全局变量,但我在执行此操作时遇到了麻烦。谁能给我一些见解?谢谢...以下是我的代码示例以及我想要做的事情。

PHP脚本......

    if($numrowsusername != 0)
    {

        $username_errormsg ='This user name is taken';
    }

索引页面,其中包含我希望消息显示的表单...

    <td align ='left'><input type ='text' name = 'usernamereg' placeholder = 'Username' class = 'username2' /></td>
    </tr>
    <tr>
        <td><?php echo $username_errormsg; ?></td>
    </tr>

3 个答案:

答案 0 :(得分:0)

由于您仅在错误发生时将错误分配给变量$username_errormsg,因此只要该错误不存在,您的变量就不会被确定。因此,当您收到错误时,echo $username_errormsg就可以了,但在此之前通知将保留。您可以做的是检查变量是否由函数isset()定义。它看起来像这样:

<?php if(isset($username_errormsg)) echo $username_errormsg; ?>

答案 1 :(得分:0)

您正在回显错误,而不检查是否确实发生了错误。您可以使用!empty($username_errormsg)函数来解决此问题,该函数将检查变量是否已设置并且还将检查其是否为空。

    <td align ='left'><input type ='text' name = 'usernamereg' placeholder = 'Username' class = 'username2' /></td>
    </tr>
    <tr>
        <td>
            <?php 
                if(!empty($username_errormsg)){
                    echo $username_errormsg;
                }
            ?>
        </td>
    </tr>

要在同一页面上回显错误,您必须使用表单中的空action=""字段在同一页上发布值,或使用 JavaScript 在将数据发布到下一页之前为您进行验证。 JavaScript验证只是为了方便用户,您可以使用PHP在下一页内部检查数据是否是您需要的数据

如果卡片中有JavaScript,您可以查看jQuery Forms PluginjQuery Validation Plugin以便轻松进行验证。

答案 2 :(得分:0)

制作像这样的

if($numrowsusername != 0)
{

    $error_message['username'] ='This user name is taken';
}

$error_message['username']="This user name is taken"; $error_message['email']="email alreasy exists";

然后循环它。

foreach($error_message as $key=>$value){
echo $error_message[$key'];
echo '<br />';
}