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>

検証に問題があります。送信後にユーザー名を表示したいです。問題は、他の場合はユーザー名が正常に動作しているが、パスワード部分がスキップされることです。パスフィールドも検証して、ユーザー名のみを表示することを望みます! 助けてください!

4

1 に答える 1

1

$user = test_input($_POST['pas']);する必要があります$pass = test_input($_POST['pas']);

現在のコードでは、最初のif..elseブロックで $user が設定されています。PHP が 2 番目のブロックをスキップするわけでは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 がまだ null かどうかを確認します。両方が null の場合は、エラーが検出されていないため、$user を設定できます。

于 2013-10-21T10:51:36.953 に答える