<?php
if ( $_GET[pass] == '00' ) echo "В первом случае пароль верный. ";
if ( $_GET[pass] === '00' ) echo "И во втором случае тоже верный!";
?>
Если передать скрипту в параметре 'pass' любое колличество нулей, то пароль в первом if'e всегда будет верный. Во втором - только при двух нулях.
Т.е. в том скрипте некорректно реализована проверка верности пароля. А о разнице между '==' и '===' стоит почитать в док-ии по PHP. (:
Да, один ноль не прокатыват, токое ощущение, что просто его скрипт не замечает, просит ввести пароль.
Код:
PHP не проверяет равенство типов при двойном равно (==), автоматически приводя их к строковому.
Для верного сравнения данных разных типов применяется тройное равно (===).
Неправильное использование двойного равно, например, в авторизации, == может обернуться уязвимостью.
PHP код:
$aaa = 123456;
if( '123456' == $aaa ){echo '<br>ok!';}else{echo '<br>no.';}
if( '123456' === $aaa ){echo '<br>ok!';}else{echo '<br>no.';}
ok!
no.
(C)Alekt
Что то я вообще запутался
Последний раз редактировалось SeNaP; 31.07.2009 в 11:13..