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

    +168

    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
    15. 15
    16. 16
    17. 17
    function check() {
       $pattern = '|^[-\d]*$|i';
       if ($this->is_required) {
         # Проверяем поле value на максимальное и минимальное значение
         if ($this->min_value != $this->max_value) {
           if ($this->value < $this->min_value || $this->value > $this->max_value) {
             return "Поле \"".$this->caption."\"  должно быть больше ".$this->min_value." и меньше ".$this->max_value."";
           }
         }
         $pattern = "|^[-\d]+$|i";
       }
       # Проверяем, является ли введённое значениe целым числом
       if(!preg_match($pattern, $this->value)) {
         return "Поле \"".$this->caption."\" должно содержать лишь цифры";
       }
       return "";
    }

    Целое число - это число, в котором может быть целая куча знаков минус, но самое главное - без учёта регистра! (Softtime.ru)

    Запостил: dwinner, 03 Декабря 2010

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

    • Целое число — это число, которое может быть пустой строкой!
      Либо такое:
      -3-23-23-3--23- номер телефона.
      Ответить
      • Номер телефона всё-таки подвержен определённому формату ввода и все web-приложения для подобного ввода так или иначе отражают этот факт. А здесь хотели проверить ввод целого числа со знаком, но вместо довольно тривиальной |^[-]?[\d]+$| сделали глупейшую ошибку.
        Ответить
        • А is_numeric не судьба?
          Ответить
          • Судьба-судьба... intval ещё, но я про регулярное выражение, ДЛЯ ТЕХ, КТО В ТАНКЕ!
            Ответить
          • а чего не (int) ?
            Ответить
            • База может поддерживать гораздо большие числа чем PHP.
              <?php
              $var = (int) 9999999999999;
              print $var;//1316134911
              ?>
              Ответить
            • Можно и (int), побыстрее будет... Сишник?! Уважаю! ;-)
              Ответить
              • Труъсишник
                Ответить
                • > Труъсишник
                  http://3.bp.blogspot.com/_4C1ZwEub0Po/Sri4VnBqqPI/AAAAAAAAAVI/GoPvTrDdNmE/s1600/benny_hill_clothesline.jpg
                  Ответить
                  • в чем смысл игры? воровать женское нижнее белье?
                    Ответить
                    • в 1ой главе белье, во второй у мужика из сада яблоки, что потом, не хватило терпения узнать = ) но главное не получить за это по чайнику = )
                      эх, спекки... классика бессмертна... = )
                      Ответить
                      • есть ссылка на более полное описание?
                        Ответить
                      • да у спекки все игры отличные
                        а сейчас мир пхп и говноигр, где кроме купленного 3Д движка ничего нету
                        Ответить
                        • поэтому играем в классику. Из писюшных еще могу отметить Gish
                          Ответить
                          • из писюшны: gobliins (1,2), the lost vikings (первые), prince of persia (первый, да и второй), another world, и еще парочка квестов от сиерры

                            это святое
                            Ответить
                            • ну я даже молчу про это, потому что это общеизвестное
                              из менее известного:
                              за игровую атмосферу мне понравились Bloodrayne 2, Aliens vs Predator 2 (до сих пор иногда врубаю, повышает настрой)
                              был бы шедевром Vampire: the Masquerade - bloodlines, отличная задумка. Но движок настолько похабен, что играть невозможно из-за глюков (((
                              Ответить
            • Причем тут (int) и intval() вообще? Как это применимо в контексте данной задачи? Это ведь не защита от sql-инъекции.
              Ответить
              • Да мы собственно не про оптимальное решение задачи, а про корявую PCRE в данной задаче, кстати is_numeric('any float number') = true! ;-)
                Ответить

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