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

    +179

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if (empty($_GET["page"])) {
            $page_get = 1;
        } else {
            $page_get = "$_GET[page]";
            $page_get = trim($page_get);
            $page_get = stripslashes($page_get);
            $page_get = htmlspecialchars($page_get);
            $page_get = intval($page_get);
            $page_get = "$page_get";
        }

    WAP-ENGINE
    хакеры не пройдут )

    Запостил: lugaro, 22 Апреля 2010

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

    • intval() в конце -- это контрольный в голову.
      Ответить
    • СУПЕР!!!
      Это просто классический пример говнокода!

      Для администрации сайта: предлагаю открыть раздел эталонного говнокода.
      Ответить
      • Палата мер и весов для особо одаренных.
        Ответить
    • $page_get = "$page_get";

      КЭП негодуэ.
      Ответить
      • КЭП2 подсказывает, что это преобразование числа, только что преобразованного из строки функцией intval, обратно в строку :)
        Ответить
    • $page_get = intval($_GET[page]);
      Но решение автора - это 100% шедевр говнокода, в избранное
      Ответить
      • если уже о правильности, то как-нибудь так: $page_get = isset($_GET['page']) ? intval($_GET['page']) : null;
        Ответить
        • та нахер эти isset >> $page_get = (int)$_GET[page] >> и ниибёт!
          Ответить
          • Если в массиве GET отсутствует элемент page, то будут Варнинги.
            Поэтому нужен иссет.
            Ответить
            • Нотис
              Ответить
              • показать все, что скрыто)) в топку все нотисы... отключить их нафик и меньше проблем будет...
                error_reporting = E_ALL & ~E_NOTICE
                Ответить
                • Принцип страуса?
                  Отключить вывод ошибок != избавиться от ошибок. Просто надо правильно писать код, чтобы не было никаких нотисов. paranoid прав
                  Ответить
                  • Принцип страуструпа. Страус прячет голову, но умирает не решив проблему.
                    Ответить
                  • А какой вред от нотиса? Они никак критично не влияют на выполнение скрипта. Только проблем меньше. Варнинги нужны
                    Ответить
                    • А какой вред от расстегнутой ширинки? Она никак критично не влияет на теплоизоляцию тела. Трусы нужны
                      Ответить
                      • Вы не ответили на вопрос. Хотелось аргументировано. Например, варнинг обработать нужно, так как может быть дальнейший сбой в выполнении.
                        Какая разница, если я сделаю $a = intval($_GET['id']); с отключенным нотисом и $a= isset($_GET['id']) ? intval($_GET['id']) : 0; с включенным. На выполнение это никак не повлияет.

                        И пример Ваш не уместен, нотисы пользователь не видит, т.е. ширинка всегда застегнута, а если Вы какую переменную забыли проверить сразу будет вывод (при соответствующих настройках). Нотисы это ширинка, а варниги - вообще без штанов ходить
                        Ответить
                        • $a= isset($_GET['id']) ? intval($_GET['id']) : 0;
                          вопрос только нафик такое писать всё время???
                          если можно короче и красивше.
                          Ответить
                          • 1. если руки и голова из жопы растут, то делай так, как предлагаешь,
                            2. если хотя бы в жопе мозги есть то поверяй как я предложил
                            3. ну а если головной мозг хоть немного работает - напишешь класс (ну или хотя бы ф-ю), которая это всё будет каждый раз делать за тебя. и будет тебе убогому радость Request::get('olololol')
                            Ответить
                    • см. http://www.govnokod.ru/3072#comment22384
                      Ответить
                  • NOTICE - это не ошибки, а мелкие бредовые предутреждения.
                    тем более ни разу не встречал хостинга, в котором бы вообще вывод ошыбок был включён. А локально они не мешают.
                    WARNING конечно нужен, но не NOTICE...
                    Ответить
                    • NOTICE - это потенциальные ошибки. Например, забудешь где-нибудь объявить переменную, вывод нотисов отключен, а потом будешь весь день думать почему же скрипт работает не так как надо.

                      P.S. Вопрос для размышления: если нотисы бесполезны - зачем разработчики PHP их ввели?
                      Ответить
                      • >> забудешь где-нибудь объявить переменную

                        а нехер забывать...
                        Ответить
                      • Раньше был register_globals=on, в этом случае проверки были необходимы, ну и начинающим полезен. А если я все инициализирую сам и знаю откуда у меня берутся значения, то это только лишняя писанина.

                        P.S. Сам я в подавляющем большинстве случаев проверяю существование POST и GET параметров, но не понимаю тех, кто пытается доказать, что отключение NOTICE это зло.
                        Ответить
                    • > мелкие бредовые предутреждения??
                      Вообще-то в приличном обществе за большую часть нотисов дают по морде exception'ом, segfault'ом или вообще не компилируют.

                      Раз. $items[i] = something($other, $i);
                      Два. something_other(SOME_CONSTANTT);
                      Три. $countr++;
                      Все три без мелких бредовых предупреждений тихо проглатываются.
                      Ответить
                  • по другому и быть не может ))
                    Ответить
                • фтопку тебя с твоими говноконфигами..
                  а потом мля а чтож оно всё не работает... а через пол дня оказывается, что где-то в массиве нет какого-то элемента.
                  Ответить
                  • Всю жизнь так писал и никогда ничего не забывал.
                    Ответить
            • ... промахнулся ...
              Ответить
          • Вы забыли про заключения ключа в кавычки. А вот это уже плохая практика программирования.
            Ответить
            • ладно, давайте так: $page_get = (int)$_GET['page'];
              хотя по поводу "практики" -- это скорее дело вкуса, а не практики.

              лично я спокойно использую хрени типа:
              $query = "SELECT id,text_name FROM {$prefix}_{$table} WHERE id='$id' AND active=1 ORDER BY $order LIMIT $limit";
              при этом естественно $id приведён к int, $ord и $limit -- имеют корректную структуру. $prefix и $table задаются программно...
              Вариант №2
              $query = 'SELECT id,text_name FROM '.$prefix.'_'.$table.' WHERE id="'.$id."' AND active=1 ORDER BY '.$order.' LIMIT '.$limit; мне просто не нравится (и пофик на потери милисекунд в скорости)
              Ответить
    • Там всю cms в говно код записать можно =)
      Ответить
    • wap-engine 4.2
      Полноценный движок для wap-сайта.
      Вот некоторые его особенности:
      -> Движок построен целиком на файлах
      -> Имеется мощная админпанель.
      -> Сайт, созданный на движке будет доступен не только с мобильного телефона, но и с компьютера.
      -> У админа есть возможность менять цветовую схему сайта и его разметку. Есть поддержка скинов.
      -> Управлять сайтом сможет любой человек, даже не знающий языка программирования PHP, тем не менее знания html понадобятся.

      Эта система - лучший выбор для того, кто решил создать wap-сайт.
      Ответить
      • А вообще интересно, кто-то еще пользуется вапом???
        Ответить
        • А что уже все мобильники куда-то исчезли?
          Ответить
        • Глупый вопрос, аудитория вапа растет с большими темпами, не стоит судить о низкой популярности только потому что сам не пользуешься
          Ответить
          • >> аудитория вапа растет с большими темпами
            Это деградация называется. Сам не пользуюсь и не знаю ни одного человека, который пользуется. Во время 3Г, вай-фай, Ваймакс пользоваться вапом - это ужас.
            ПС Может вы путаете просто мобильную версию сайта с wap-сайтом?(который кстати использует WML)
            ППС А вообще давай еще ГК по этому движку, веселые там разрабы
            Ответить
            • о WML и речи не идет, это уже прошлое, ну а мобильная версия это по твоему не wap ? ))
              ЗЫ http://ru.wikipedia.org/wiki/WAP
              Ответить
      • >Движок построен целиком на файлах

        С ума сойти. Это как?
        Ответить
        • Видимо, без использования базы данных
          Ответить
        • И без единого фолдера!

          Как говорится, при разработке ни одна папка не пострадала
          Ответить
        • гугл так же работает, там баз данных нет, прямиком файловая система.

          ещё встречал вики-движок, который тоже чисто на файлах.

          ну а вообще в 95% случаев авторы просто не осилили БД :)
          Ответить
          • авторы wap-engine и похапе не осилили :p
            Ответить
          • Хмм-м. Пруфлинк можно? Все документы, которые я встречал, говорили о противоположном. Правда, они датировались 2003 годом, но я сомневаюсь, что архитектура могла измениться столь кардинально.
            Ответить
            • http://ru.wikipedia.org/wiki/BigTable

              BigTable — высокопроизводительная проприетарная поддерживающая сжатие база данных построенная на основе Google File System (GFS), Chubby Lock Service и некоторых других продуктах Google.

              Работа над BigTable была начата в 2004 году

              :)
              Ответить

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