проверка имени пользователя и пароля

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>

Ям, имеющий problm в проверке, хочу показать имя пользователя после отправки. проблема в том, что мое имя пользователя, если оно работает, работает нормально, но оно пропускает часть пароля. iwant что он shud также проверяет поле пропуска тогда только показывает имя пользователя! пожалуйста помоги!

  • 0
    Добавьте var_dump($_POST); в начале проверок, чтобы увидеть, что отправлено. Просто подсказка, имя функции для того, что они делают, потому что test_input не тестирует;)
  • 3
    Вы смешиваете post и определенные переменные, например, запрашивает пустое значение ($ _ POST ['pas']), а затем определяете это с помощью $ user = test_input ($ _ POST ['pas']); но проверка $ pass в preg_match, а $ pass определяется как не значение "" сверху.
Показать ещё 2 комментария
Теги:

1 ответ

1

$user = test_input($_POST['pas']); должен быть $pass = test_input($_POST['pas']);

Ваш текущий код набора $ пользователю в вас первый if..else блок, он не то, что PHP пропускает свой второй, if...else блок, это просто, что независимо от того, что этот блок будет делать, пока пользователь не уже установлен. Если вы не хотите отображать $ 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, так как ошибка не обнаружена.

  • 0
    хорошо, спасибо за помощь и предложение! :)
  • 0
    @evuez: Если вы отредактируете некоторые другие вопросы, просмотрите весь пост, а не просто разделяйте блоки кода. Несколько других ревизий все еще оставались открытыми. Я уже исправил их сейчас. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню