За последние 24 часа нас посетили 18933 программиста и 1607 роботов. Сейчас ищут 1013 программистов ...

Проверка на неравенство

Тема в разделе "PHP для новичков", создана пользователем allowance, 8 мар 2010.

  1. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    if($pol !== 'F' or $pol !== 'M') - как корректно это должно выглядеть
    {
    echo "Error!";
    }
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    понял ничего ©
     
  3. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    PHP:
    1. if(($pol != 'F') && ($pol != 'M')) {
    2. echo "Error!";
    3. }
    != неравно
    == равно
    ||или
    && и
    т.е выдаст "Error!" если $pol не F и не M
    ps:
    Код (Text):
    1. telepatmode:on
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    == так же как и === обозначает равенство, только === дополнительно требует одинаковых типов у сравниваемых переменных. Аналогично с != и !==.
    т.е. 1 == '1', но 1 !== '1'

    опять же or и || оба jобозначают «или»

    вот я и не понимаю что именно хочет ТС
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Luge
    он хочет чтобы, если пол не задан выдавало ошибку)
     
  7. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Padaboo
    !== это тоже не равно. =))

    UPD: Опоздал.
     
  8. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    а у меня кстати частенько строка с цифрой сравнивается по моему )))
     
  9. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Luge

    Это для того чтобы хакер не смог сделать SQL инъекцию. :)
     
  10. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Угу, а если "==", то хакер порвет твой сервер как целку?
    Мда.
     
  11. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    гениально. а мы-то думали, что это другими средствами предусматривается.

    меня вот только одно интересует, везде используется M и F или для пользователя преобразовывается в Male и Female?
     
  12. PHP:
    1. <? if (in_array($gender, array('m','f','M','F','male','female'))) ...
    =)
     
  13. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    флоппик
    телепат?
     
  14. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    MALE FEMALE, mALE fEMALE,MaLE FeMALE..... забыл :D
    Это что бы хакер не смог себе средний род поставить УХахаххахаха
     
  15. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Apple
    Как так?
     
  16. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Какими?

    Пока ещё только M и F :)
     
  17. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    а мож типа сделать эту переменную true false? тада и "левый" пол поставить нельзя будет ?^^
    если конечно автор не захочет потом добавить туда поле "трансвестит" или еше чё :DDD
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    http://phpfaq.ru/slashes

    вообще-то и ассоциативного массива вида 'm' => 'Male' было бы достаточно; и проверять через array_key_exists(). Вот тогда расширяй по самое немогу
     
  19. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Luge
    Ну а почему бы не использовать проверку на M или F перед mysql_real_escape_string? Если не проходит прверку, делаем exit()
     
  20. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    валидация данных и подготовка запроса. разницу видишь?

    давай рассмотрим отвлечённый пример:
    строка приходит от пользователя. Перененная содержит текст, длина строки не превышает максимального размера для поля в БД, в строке не содержится ненормативная лексика. Если эти условия выполняются, то принимаем данные от пользоателя. Если нет — то показываем ошибку. Вот тут у нас прошла валидация. Данные соответствуют нашим критериям.

    Перед вставкой в бд нам надо проэкранировать все служебные символы (некоторые любят их незаслужанно называть «опасными»). Вот тут мы защищаемся от инъекций.

    Наличие/отсутствие тех же самых кавычек вовсе не являлось обязательным условием для валидации, так же как ожидаемый ответ от пользователя никак не связан с инъекциями.

    К чему это я? А просто не надо путать совершенно разные процессы.
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    При чем приходит всегда строка. Сравнивать тип здесь бесмысленно.