Проверка правильности ввода пароля с помощью PHP

1

Привет, я создаю регистрационную форму и с PHP хочу проверить, действительно ли введены пользовательские входы. Я могу проверить электронную почту, имя пользователя, но я не могу проверить поля пароля.

Мой PHP-код:

<?php 

if(isset($_POST['registerButton'])){



if(isset($_POST['regEmail'])){
        $regEmail = $_POST['regEmail'];
    }
    else{
        $regEmailError = 'Please Fill in Email field';
    }

    if(isset($_POST['regUsername'])){
        $regUsername = $_POST['regUsername'];
    }
    else{
        $regUsernameError = 'Please Fill in Username field';
    }

    if(($_POST['regPassword']) and ($_POST['regPassword2'])){


        if( isset($_POST['regPassword']) == isset($_POST['regPassword2']) ){
            $regPassword = $_POST['regPassword'];
        }
        else{
            $regPasswordError = 'Passwords does not match!';
        }
    }
    else{
        $regPasswordError = 'Please Fill in Password fields';
    }
}

?>

Мой HTML-код:

<input class="form-control " name="regEmail" type="email" placeholder="Email" required autofocus>

<input class="form-control " name="regUsername" type="text" placeholder="Username" required >

<input class="form-control " name"regPassword" type="password" placeholder="Password" required >

<input class="form-control " name="regPassword2" type="password" placeholder="Confirm Password" required>

Я понял, что если я echo "Success"; перед следующей строкой я вижу распечатку, но если я echo "Success; после следующей строки я не могу видеть результат, поэтому я делаю что-то неправильно здесь и не могу понять, все кажется мне прекрасным. Любая помощь очень ценится.

if(($_POST['regPassword']) and ($_POST['regPassword2'])){

EDIT: ЕСЛИ я заменяю полный оператор if, который проверяет поля пароля:

if(isset($_POST['regPassword'])){
echo "Hello World";
}

он все еще ничего не отображает.

EDIT 2: Я только что решил проблему, проблема в том, что я пропускаю "=" в HTML-коде после значения имени

  • 0
    Вы уверены, что используете <form method="POST"..> и действительно нажимаете кнопку отправки? нажатие Enter не устанавливает значение registerButton . Я скорее добавляю скрытое поле ввода, которое указывает на отправленную форму
Теги:

2 ответа

1

Изменить на:

if (isset($_POST['regPassword']) && isset($_POST['regPassword2'])) {
    if ($_POST['regPassword'] == $_POST['regPassword2'] ){
        $regPassword = $_POST['regPassword'];
    } else {
        $regPasswordError = 'Passwords does not match!';
    }
}
  • 0
    Тоже не работает, может сталкиваюсь с ошибкой?
  • 0
    Я обновил ответ.
0

В настоящее время вы сравниваете два значения isset, которые всегда верны, поскольку они были истинными в состоянии раньше. Просто удалите инструкцию isset чтобы сравнить фактические значения

if(($_POST['regPassword']) and ($_POST['regPassword2'])){
    if($_POST['regPassword'] == $_POST['regPassword2']){
        $regPassword = $_POST['regPassword'];
    }
    else{
        $regPasswordError = 'Passwords does not match!';
    }
}
else{
    $regPasswordError = 'Please Fill in Password fields';
}

вы должны также подумать о вспомогательной функции, которая устраняет сложность

function httppost($name) {
   return isset($_POST[$name]) ? trim($_POST[$name]) : false;
}

таким образом вы могли бы просто использовать

$regPassword = httppost('regPassword');
$regPassword2 = httppost('regPassword2');
if($regPassword && $regPassword2){
    if($regPassword != $regPassword2){
        $regPasswordError = 'Passwords does not match!';
        $regPassword = false;
    }
} else {
    $regPasswordError = 'Please Fill in Password fields';
}

Ещё вопросы

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