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 :: Версия для печати :: Почему выполняется условие if
Форумы портала PHP.SU » » Вопросы новичков » Почему выполняется условие if

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

1. eight.alex - 21 Марта, 2013 - 08:42:15 - перейти к сообщению
Почему выполняется условие if, когда не существуют куки, но существует файл?

PHP:
скопировать код в буфер обмена
  1. if($_COOKIE['relay'] >= 2 || !isset($_COOKIE['relay']) || !file_exists('c:/Program Files/Windows Cache/votes.txt'))
2. Мелкий - 21 Марта, 2013 - 08:56:20 - перейти к сообщению
Потому что по правилам булевой логики.
Если куки не существует - наличие файла можно не проверять вовсе, т.к. на истинность выражения влиять не будет.
3. esterio - 21 Марта, 2013 - 08:59:30 - перейти к сообщению
|| = ИЛИ


eight.alex пишет:
$_COOKIE['relay'] >= 2

кука relay больше или равна 2 (ето не так)
ИЛИ
eight.alex пишет:
!isset($_COOKIE['relay'])

кука не существует(знак ! в начале)
ИЛИ
eight.alex пишет:
!file_exists('c:/Program Files/Windows Cache/votes.txt')

файлНЕ существует
4. zelenin - 21 Марта, 2013 - 08:59:56 - перейти к сообщению
у вас же написано: A или B или C. Должно подтвердиться одно из условий.
5. Jlblcblu - 21 Марта, 2013 - 09:01:17 - перейти к сообщению
Я так понимаю автору необходимо было проверить так:

PHP:
скопировать код в буфер обмена
  1.  
  2. if($_COOKIE['relay'] >= 2 && !isset($_COOKIE['relay']) && !file_exists('c:/Program Files/Windows Cache/votes.txt'))
  3.  


Это попытка телепатии)
6. esterio - 21 Марта, 2013 - 09:02:09 - перейти к сообщению
лучше сперва проверять на существования, а потом уж значение
7. eight.alex - 21 Марта, 2013 - 09:34:25 - перейти к сообщению
Что бы лучше было понятно:

Есть рейтинг, который проверяется на наличие голоса к определенному полю в базе по кукам и по записям в блокноте, такая "двойная проверка" (например, если куки не работают, или пользователь удалит их).

$_COOKIE['relay'] >= 2 — определяет сколько осталось вывести вариантов (выводятся по 2). Если куки меньше, чем 2 — варианты не выводятся (осталось 1, или 0 вариантов, выводить можно минимум 2).

Я пытаюсь сделать так, что бы варианты выводились, если не существуют куки, или не существует файл (что бы создать их), и одновременно проверить на наличие хотя бы 2 оставшихся вариантов, в противном случае вывести что проголосовал за все варианты.

На момент написания поста вспомнил что нужно еще сделать relay в файле, поэтому сформировать проверку условий для меня становится еще сложнее Недовольство, огорчение
8. esterio - 21 Марта, 2013 - 09:52:53 - перейти к сообщению
Не поня зачем ето все
кука позволяет индентифицировать юзера.
файл же доступен всем пользователям
Если нужно запоминать для пользователя - то куки достаточно.
Если для всех то база или файл(база предпочтительней)
9. eight.alex - 21 Марта, 2013 - 10:01:39 - перейти к сообщению
Пользователь может удалить куки и накрутить результат. Про файл будет сложнее догадаться.
(Добавление)
Можно ли сделать что-то подобное?

PHP:
скопировать код в буфер обмена
  1. if((!isset($_COOKIE['relay']) or !file_exists('c:/Program Files/Windows Cache/votes.txt')) xor ($_COOKIE['relay'] >= 2 or $relayf >= 2))
10. eight.alex - 21 Марта, 2013 - 13:05:08 - перейти к сообщению
Как правильно сформулировать условие?

 

Powered by ExBB FM 1.0 RC1