0

这是我的 php 验证码!

   <?php        //------------------------------------------------------------------------------>PHP VALIDATION
                $user="";
                $pass="";
                $nameErr="";
                $passErr="";
                //$pattern='/^[a-zA-Z0-9@_ ]*$/';
                if($_SERVER['REQUEST_METHOD']=='POST')
                {
                    if(empty($_POST['uname']))
                    {
                        $nameErr='Enter Your Name!';
                    }
                    else 
                    {
                        $user = test_input($_POST['uname']);
                        if(!preg_match('/^[a-zA-Z0-9@_]*$/',$user))
                            {
                                $nameErr=' Re-Enter Your Name! Format Inccorrect!( only alpha, numbers,@_ are allowed)';
                            }
                    }
                    if(empty($_POST['pas']))
                    {
                        $passErr='Enter Your Password!';
                    }
                    else
                    {
                        $user = test_input($_POST['pas']);
                        if(!preg_match('/^[a-zA-Z0-9@_]*$/',$pass))
                        {
                            $passErr='Invalid Format! Re-Enter Password!';
                        }
                    }   
                }



            function test_input($data)
            {
                 $data = trim($data);
                 $data = stripslashes($data);
                 $data = htmlspecialchars($data);
                 return $data;
            }
                ?>

HTML:
<html>
<body>
<div id='shw'><?php echo $user;?></div>
                <fieldset id='fld'>
                    <form method='post' name='f1' action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>'>
                        <table>
                            <tr>
                                <td>
                                    User Name:<input type='text' id='uname' name='uname' class='uname' placeholder='USERNAME' autocomplete='off' autofocus maxlength='25'><span class='error'>*</span>
                                    Password:<input type='password' id='pass' class='pass' name='pas' placeholder='PASSWORD' autocomplete='off'>
                                            <input type='submit' name='submit' id='loggin' value='LOGIN' class='login' onclick='val()'>
                                </td>
                            </tr>
                        </table>
                    </form>
                </fieldset>
            <div class='errormsg' id='errmsg'><?php echo $nameErr;?></div>
            </div>
</body>
</html>

我在验证中遇到问题我想在提交后显示用户名。问题是我的用户名 if else 运行良好但它跳过了密码部分。我希望它也验证 pass 字段然后只显示用户名!请帮忙!

4

1 回答 1

1

$user = test_input($_POST['pas']);应该$pass = test_input($_POST['pas']);

您当前的代码在您的第一个if..else块中设置了 $user,并不是 PHP 跳过了您的第二个if...else块,只是无论这个块做什么,ûser 已经设置。如果您不想在密码无效时显示 $user,只需稍后在代码中设置 $user: $nameErr = null; $passErr = null;

if (empty($_POST['uname'])) {
    $nameErr = 'Enter Your Name!';
} else {
    $userTest = test_input($_POST['uname']);

    if (!preg_match('/^[a-zA-Z0-9@_]*$/', $userTest)) {
        $nameErr = ' Re-Enter Your Name! Format Inccorrect! (only alpha, numbers, @_ are allowed)';
    } else {
        $valid++;
    }
}
if (empty($_POST['pas'])) {
    $passErr = 'Enter Your Password!';
} else {
    $pass = test_input($_POST['pas']);

    if (!preg_match('/^[a-zA-Z0-9@_]*$/', $pass)) {
        $passErr = 'Invalid Format! Re-Enter Password!';
    } else {
        $valid++;
    }
}

if (is_null($nameErr) && is_null($passErr)) {
    $user = $_POST['uname']
}

在这里,我只是检查 $nameErr 和 $passErr 在您的测试结束时是否仍然为空。如果两者都为空,那么您可以设置 $user,因为没有检测到错误。

于 2013-10-21T10:51:36.953 回答