Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблемы с авторизацией
Форумы портала PHP.SU » PHP » Программирование на PHP » Проблемы с авторизацией

Страниц (1): [1]
 

1. Flashbag - 13 Февраля, 2010 - 00:13:40 - перейти к сообщению
Мне вот тут нада открить страницу с подарком для девушки
И чтоби открила только она я решил защитить страницу паролем
Написал простенький скрипт чтоби при правильном пароле показивало страницу
а при неправильном - надпись "Неправильний пароль!!!"
Протестировал сначала на локалхосте но при любом значении
виводит надпись "Правильно", тоесть видает страницу
Залил скрипт на хостинг - та же фигня
Подскажите плиз ошибку
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $pass=$_GET["pass"];
  4. $pass=htmlspecialchars($pass);
  5. if ($pass="hello")
  6.        {echo "Правильно";}
  7. ?>
  8.  
2. SAD - 13 Февраля, 2010 - 00:34:08 - перейти к сообщению
Ну вообще-то сравнение с двумя == делается ))
3. JustUserR - 13 Февраля, 2010 - 12:58:41 - перейти к сообщению
Flashbag пишет:
if ($pass="hello")
Данное выражение почти всегда позвращает true так как присвоение одной переменной значения другой происходит успешно - ведь данная конструкция проверяет именно это
4. valenok - 14 Февраля, 2010 - 10:28:14 - перейти к сообщению
А в каких случаях возвращает false ?
5. Мелкий - 14 Февраля, 2010 - 10:52:53 - перейти к сообщению
А разве = вообще хоть что-то возвращает? Я всегда думал, что в такой конструкции проверяется новое значение переменной. Ведь while ($row = mysql_fetch_assoc($a)) {} если бы проверял факт приравнивания - никогда бы не закончился.
6. JustUserR - 14 Февраля, 2010 - 11:20:08 - перейти к сообщению
valenok пишет:
А в каких случаях возвращает false ?
Вроде бы как в конструкциях типа if($my_var=null) потому что присвоение null это то же самое что unset переменной то есть ее как бы больше нет
7. valenok - 14 Февраля, 2010 - 11:37:53 - перейти к сообщению
Только ты проверяешь не знаечение переменной а результат выполнения выражения. А присовение пройдет успешно.
8. JustUserR - 14 Февраля, 2010 - 18:13:11 - перейти к сообщению
valenok пишет:
Только ты проверяешь не знаечение переменной а результат выполнения выражения. А присовение пройдет успешно.
Я прекрасно понимаю в чем суть данной операции а именно приведения операции присвоения к булевскому типу - но судт по тому что операция
Мелкий пишет:
while ($row = mysql_fetch_assoc($a)) {}
работает и причем достаточно успешно то учитывая то что данная функция при конце перебора возвращает null - то присвоение null трактуется как false
9. Мелкий - 14 Февраля, 2010 - 18:37:39 - перейти к сообщению
JustUserR пишет:
данная функция при конце перебора возвращает null

Ошибаетесь, возвращает false.

И проверяется, что записалось в переменную, а не результат функции присваивания. Т.к. если бы присваивание могло учавствовать как полноправный участник условия - оно бы вернуло true, т.к. переменной-то новое значение присвоено успешно.

Или, докажите обратное. Что проверяется именно результат действия, а не значение, которое было присвоено.
10. JustUserR - 14 Февраля, 2010 - 19:12:56 - перейти к сообщению
Мелкий пишет:
Или, докажите обратное. Что проверяется именно результат действия, а не значение, которое было присвоено.
Ну похоже что все-таки так - я проверил $tr=(bool)($abc=0); и $tr=(bool)($abc=10); - действительно в первом случае false а во втором true

 

Powered by ExBB FM 1.0 RC1