функция php strcmp - PullRequest
       3

функция php strcmp

2 голосов
/ 02 августа 2011

У меня есть следующий код:

if(strcmp($_POST['password'], $_POST['password-rpt']) == 0) {  
    $password_field = $_POST['password'];  
    echo "Password created" . "<br />";  
} else {  
    echo "blarg! Password mismatch!!!";  
}

Я знаю, что подобно C / C ++ strcmp должен возвращать 0, когда две строки одинаковы, но когда я проверяю его с помощью файла html, вводя две одинаковые строки или две разные, оба случая переходят к случаю ошибки и мой вывод "blarg! Несоответствие пароля !!!"

Вот форма, которую я использовал:

<form method="post" action="register.php">
        Name: <input type="text" name = "name" id="name" /><br />
        Password: <input type="password" name ="password" id = "password" /> <br />
        Confirm Password: <input type="password" name="password_rpt" id="password_rpt" /> <br />
        email:    <input type="text" name = "remail" id = "remail" /><br />

        <input type = "submit" name="register" id="register"  value = "Sign Up" />
    </form>

Чего мне не хватает?


Обновление: Я изменил условие на if($_POST['password'] == $_POST['password-rpt']). Не помогло.

Ответы [ 4 ]

4 голосов
/ 02 августа 2011

Вы можете просто использовать:

$_POST['password'] === $_POST['password-rpt']

Кроме того, в своей форме вы использовали имя password_rpt, а в своем коде вы ссылаетесь на password-rpt.Вам нужно изменить одно из них так, чтобы имена совпадали.

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

Имейте в виду, что PHP является высокоуровневым языком сценариев и очень отличаетсяC ++, даже если они могут выглядеть одинаково.Есть вещи, которые очень осуществимы в C ++, но не в PHP, и наоборот.

2 голосов
/ 02 августа 2011

Для паролей, которые вы действительно хотите использовать === (идентично), так как == (равно) вернет true, даже если регистр не совпадает ...

if( $_POST['password'] === $_POST['password-rpt'] ) {  
    $password_field = $_POST['password'];  
    echo "Password created" . "<br />";  
} else {  
    echo "blarg! Password mismatch!!!";  
}
0 голосов
/ 11 мая 2016

Имейте в виду, что strcmp() возвращает:

  • -1, если str1 меньше str2;
  • 1, если str1 больше str2;
  • 0, если they равны;

Аналогично == (оператор равенства), как в strcmp('1e3', '1000') (возвращаемое значение 0), или '1e3'=='1000' (истина).

Обратите внимание, PHP 7 имеют оператор, аналогичный , оператор космического корабля (<=>) и имеют то же поведение, что и strcmp().

В вашем случае вы должны использовать:

if ($_POST['password'] === $_POST['password-rpt'])

0 голосов
/ 02 августа 2011

Почему вы используете strcmp()?Вы бы получили желаемый результат, если бы вы сделали

if ($_POST['password'] == $_POST['password-rpt'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...