[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: if or
papa_serg
Здравствуйте, подскажите, почему при $REMOTE_ADDR = 127.0.0.1, if всё равно выполняется?

if (($REMOTE_ADDR !== "127.0.0.1") OR ($REMOTE_ADDR !== "81.240.211.179") OR ($REMOTE_ADDR !== "180.142.31.91")){
date_default_timezone_set('Europe/Moscow');
$handle = fopen('log.txt', 'a');
fwrite($handle, $REMOTE_ADDR." | ".date("d.m.y - H:i:s")." [ ".$txt." ]\n");
fclose($handle);
}




Спустя 1 минута, 30 секунд (28.12.2010 - 10:18) kovaldm написал(а):
А у тебя сравнение какое выполняется?

Спустя 15 минут, 43 секунды (28.12.2010 - 10:34) papa_serg написал(а):
!==?
if ($REMOTE_ADDR !== "127.0.0.1")

так же работает.

Спустя 6 минут, 55 секунд (28.12.2010 - 10:41) kovaldm написал(а):
А чем отличается != от !== ?

Спустя 10 минут, 40 секунд (28.12.2010 - 10:52) papa_serg написал(а):
if (($REMOTE_ADDR != "127.0.0.1") OR ($REMOTE_ADDR != "81.240.211.179") OR ($REMOTE_ADDR != "180.142.31.91"))

Так-то тоже не работает.

Спустя 9 минут, 9 секунд (28.12.2010 - 11:01) linker написал(а):
Не OR а ||, но в твоем случае надо использовать AND, только писать надо &&

Спустя 1 минута, 10 секунд (28.12.2010 - 11:02) papa_serg написал(а):
linker, спасибо.
Правдо немного не понятно, почему "И", вместо "ИЛИ".

Спустя 5 минут, 27 секунд (28.12.2010 - 11:08) hellmin написал(а):
papa_serg, тут надо думать логически.
if (($REMOTE_ADDR != "127.0.0.1") OR ($REMOTE_ADDR != "81.240.211.179") OR ($REMOTE_ADDR != "180.142.31.91"))

тут написано примерно так "если что-то одно выполняется"

Спустя 2 минуты, 44 секунды (28.12.2010 - 11:10) papa_serg написал(а):
hellmin, ну так да) если выполняется любое из усвовий. А с AND, если выполняются сразу все условия.

Спустя 18 минут, 2 секунды (28.12.2010 - 11:28) linker написал(а):
Вы не понимаете логики, ИЛИ подойдет в данном случае на проверку равенства: (А равно А) ИЛИ (А равно Т) ИЛИ (А равно З), в твоем случае логика будет следующая:
$REMOTE_ADDR = "81.240.211.179" // Допустим это так
далее условие
if (($REMOTE_ADDR != "127.0.0.1") OR ($REMOTE_ADDR != "81.240.211.179") OR ($REMOTE_ADDR != "180.142.31.91"))

PHP берет первое неравенство $REMOTE_ADDR != "127.0.0.1"и оно выполняется, т.е. результат TRUE, а значит PHP больше ничего проверять не будет, т.к. далее идет OR и сразу перейдет к телу условия. Это логическая ошибка.

Спустя 23 минуты, 26 секунд (28.12.2010 - 11:52) papa_serg написал(а):
linker, разобрался. Ещё раз спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.