1. PHP / Говнокод #5816

    +169

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    if (($_GET['var'])==0 and ($_GET['email'])==1 and ($_GET['numbers'])==1)
    $label='Вы неправильно указали логин';
    elseif (($_GET['var'])==0 and ($_GET['email'])==0 and ($_GET['numbers'])==1)
    $label='Вы неправильно указали логин и е-мейл';
    elseif (($_GET['var'])==1 and ($_GET['email'])==0 and ($_GET['numbers'])==1)
    $label='Вы неправильно указали е-мейл';
    elseif (($_GET['var'])==0 and ($_GET['email'])==0 and ($_GET['numbers'])==0)
    $label='Вы неправильно указали логин, е-мейл и числовой набор';
    elseif (($_GET['var'])==1 and ($_GET['email'])==1 and ($_GET['numbers'])==0)
    $label='Вы неправильно указали числовой набор';
    elseif (($_GET['var'])==0 and ($_GET['email'])==1 and ($_GET['numbers'])==0)
    $label='Вы неправильно указали логин и числовой набор';
    else
    $label='';

    Вывод ошибки

    Запостил: Dedan, 28 Февраля 2011

    Комментарии (19) RSS

    • а это от куда?
      Ответить
    • И суповой набор.
      Я всегда думал, что лень - двигатель прогресса. Видимо, такие кодоавторы не понимают, что копипаста отнюдь не "ленивое действие", а только кажется таким.
      Ответить
    • А в ПХП можно так?
      label = switch ($_GET['var'], $_GET['email'], $_GET['numbers']) {
        (0, 1, 1): 'Вы неправильно указали логин'; break;
        (0, 0, 1): 'Вы неправильно указали логин и е-мейл'; break;
        (1, 0, 1): 'Вы неправильно указали е-мейл'; break;
        (0, 0, 0): 'Вы неправильно указали логин, е-мейл и числовой набор'; break;
        (1, 1, 0): 'Вы неправильно указали числовой набор'; break;
        (0, 1, 1): 'Вы неправильно указали логин и числовой набор'; break;
      };
      Ответить
      • Очень, кстати, наглядно. Такой код даже выглядит красиво.
        Ответить
        • только красивее бы тогда уже было
          $label = 'Вы неправильно указали ';
          $label .= switch ($_GET['var'], $_GET['email'], $_GET['numbers']) {
          (0, 1, 1): 'логин'; break;
          (0, 0, 1): 'логин и е-мейл'; break;
          .........
          }
          Ответить
          • Но сработает только
            $label = 'Вы неправильно указали ';
            switch ( array($_GET['var'], $_GET['email'], $_GET['numbers']) ) 
            {
            	case array(0, 1, 1): $label .= 'логин'; break;
            	case array(0, 0, 1): $label .= 'логин и е-мейл'; break;
            	case array(1, 0, 1): $label .= 'е-мейл'; break;
            	case array(0, 0, 0): $label .= 'логин, е-мейл и числовой набор'; break;
            	case array(1, 1, 0): $label .= 'числовой набор'; break;
            	case array(0, 1, 1): $label .= 'логин и числовой набор'; break;
            };
            echo $label;
            Ответить
          • $label = 'Вы неправильно указали:';
            if ($_GET['var'] == 0) $label.= ' логин,';
            if ($_GET['email'] == 0) $label.= ' пароль,';
            if ($_GET['numbers'] == 0) $label.= ' суповой набор,';
            if ($label[$label'last] == ':') then $label = '' else $label[$label'last] = '.';
            Ответить
      • расмусик не знает, что такое pattern-matching
        Ответить
      • это двоичная проверка:
        3
        1
        5
        0
        6
        Ответить
      • А теперь вообразим на минутку, что в форме 10 или даже 20 полей, требующих валидации...
        Ответить
        • всего-то:
          10 полей - 1023 проверки
          20 полей - 1048575 проверок
          Ответить
    • Почему только 7 вариантов? Должно быть 8.
      Ответить
    • И никого не смутили названия переменных, и что так сравнивать строковые переменные на пустоту - нельзя в принципе?
      Ответить
      • Нет. Потому что - это "похапе", а это мало кого ибёт (кроме тов. Расмуса, возможно).
        Ответить
      • а вот меня смущает наличие скобочек:
        ($_GET['email'])==...
        Ответить

    Добавить комментарий