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

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

1. Andrylik - 28 Марта, 2013 - 12:37:41 - перейти к сообщению
этот кусок кода всегда возвращает false , сую картинку в формате PNG

$infoFoto1 = @getimagesize($_FILES['foto1']['tmp_name']);
if ($infoFoto1[2] !== 1 OR $infoFoto1[2] !== 2 OR $infoFoto1[2] !== 3){
$this->errMsg = "Фото1 - данный формат файла не поддерживается!";return false;
}

а так все хорошо...
$infoFoto1 = @getimagesize($_FILES['foto1']['tmp_name']);
if ( $infoFoto1[2] !== 3){
$this->errMsg = "Фото1 - данный формат файла не поддерживается!";return false;
}

первый раз натыкаюсь на то что if () не отрабатывает....
в чем может быть дело ?
2. avtor.fox - 28 Марта, 2013 - 12:50:55 - перейти к сообщению
Andrylik, сдаётся мне что в руках дело.
PHP:
скопировать код в буфер обмена
  1. $i = getimagesize('img.jpg');
  2. var_dump($i[0]); //int
  3. var_dump($i[0] == 1); //bool false
  4. var_dump($i[0] === 1); //bool false
  5. var_dump($i[0] !== 1 && $i[0] !== 2 && $i[0] !== 3); //bool true
  6. var_dump($e[0] !== 1 or $e[0] !== 2 or $e[0] !== 3); //bool true
  7. var_dump($e[0] !== 1 || $e[0] !== 2 || $e[0] !== 3); //bool true
3. imya - 28 Марта, 2013 - 12:52:19 - перейти к сообщению
1) Оформите код нормально, используйте тег


2) Вместо OR напишите ||
4. Мелкий - 28 Марта, 2013 - 13:00:08 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $infoFoto1 = null;
  2.  if ($infoFoto1[2] !== 1 OR $infoFoto1[2] !== 2 OR $infoFoto1[2] !== 3){
  3.  var_dump('мы тут');
  4.  }

Вот такой ещё вариант есть.

Добавление
if ($n!==2 OR $n!==3 OR $n!==4)
ну да, конечно.
Условие истинно всегда, ведь с проверкой типа данных одно число не может одновременно равняться 2, 3 и 4. В условии - число НЕ является 2 ИЛИ число НЕ равняется 3 - т.е. истина на всей области значений.

if ($n===2 OR $n===3 OR $n===4) одно из значений
if ($n!==2 AND $n!==3 AND $n!==4) значение одновременно не является 2, 3, 4
5. avtor.fox - 28 Марта, 2013 - 13:05:02 - перейти к сообщению
Файл то, тю-тю.
6. Andrylik - 28 Марта, 2013 - 13:36:57 - перейти к сообщению
Мелкий
я наверно чето не понял или уже запутался,
при отправке картинки gif $infoFoto1[2] =3 (проверил)

PHP:
скопировать код в буфер обмена
  1. if ($infoFoto1[2] !== 1 OR $infoFoto1[2] !== 2 OR $infoFoto1[2] !== 3){}
  2. else{}


тоесть я должен попасть в else, а насамом деле нет
7. armancho7777777 - 28 Марта, 2013 - 13:45:33 - перейти к сообщению

Что выводит ?
8. Мелкий - 28 Марта, 2013 - 13:55:57 - перейти к сообщению
Andrylik пишет:
тоесть я должен попасть в else

Не должны вы туда попасть, при любом содержимом переменной. Смотрите добавление к моему ответу, ваше условие для любого значения истинно.
9. Andrylik - 28 Марта, 2013 - 16:11:16 - перейти к сообщению
Цитата:
В условии - число НЕ является 2 ИЛИ число НЕ равняется 3 - т.е. истина на всей области значений.


я думал что в условии - 3 НЕ равняется 2 ИЛИ 3 НЕ равняется 3...

и как проверить что 3 НЕ равняется 2 ИЛИ 3 НЕ равняется 3 ??
10. Мелкий - 28 Марта, 2013 - 16:19:38 - перейти к сообщению
Andrylik пишет:
3 НЕ является 2 ИЛИ 3 НЕ равняется 3

3 !=2 ИЛИ 3!=3
true ИЛИ false
true

2 НЕ является 2 ИЛИ 2 НЕ равняется 3
2!=2 ИЛИ 2!=3
false ИЛИ true
true

42 НЕ является 2 ИЛИ 42 НЕ равняется 3
42 !=2 ИЛИ 42!=3
true ИЛИ true
true
11. Andrylik - 28 Марта, 2013 - 16:25:27 - перейти к сообщению
все , дошло , туплю на ровном месте... сорри

 

Powered by ExBB FM 1.0 RC1