2013-09-23 3 views
0

Вот мой код, кажется, работает нормально, как бы он выглядел неправильно. Я знаю, что я уязвим для инъекций. Просто хотите узнать, является ли этот лучшим способом сравнения двух паролей?Сравнение двух паролей PHP

if (empty($_POST['password'])) { 
    $errors[] = "Please enter a password"; 
} else { 
    if ($_POST['password'] != $_POST['password1']) { 
     $errors[] = "Your password did not match the confirmed password"; 
    } else { 
     $p = $_POST['password']; 
    } 
} 
+0

В чем проблема? – Neal

+4

Вышеприведенный код не подвержен никаким инъекциям, так как он не взаимодействует с базой данных или не печатает вход пользователя на экран. (код, который мы не видим, может быть другой историей) –

+1

Вы также можете попробовать '! =='. – hjpotter92

ответ

5

Ваш код хорошо, я бы просто написать его немного по-другому:

if (empty($_POST['password'])) { 
    $errors[] = "Please enter a password"; 
} elseif($_POST['password'] !== $_POST['password1']) { 
    $errors[] = "Your password did not match the confirmed password"; 
} else { 
    $p = $_POST['password']; 
} 
+0

Это ответ, который я ищу. У меня было два закрывающих скобки в конце скрипта, которые выглядели не так. – user1829823

+0

@ user1829823 ваш код был в порядке, только отступы сделали его странным. Я подтолкнул его для вас. – Sammitch

+0

@Sammitch он по-прежнему читает несколько иначе. – Neal

0

Я предлагаю Вам необходимо проверить как $_POST['password'] и $_POST['password1'] в самом начале.

if (!empty($_POST['password']) && !empty($_POST['password1'])) { 
     if (strcmp($_POST['password'], $_POST['password1']) === 0) { 
      $p = $_POST['password']; 
     } else { 
      $errors[] = "Your password did not match the confirmed password"; 
     } 
    } else { 
     $errors[] = "Please enter a password"; 
    } 
Смежные вопросы