"PHP" / Говнокод #4564 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
Мой скромный говнокод для любителей фильтрации и xss
При записи в базу 
$msg = stripslashes(htmlspecialchars(trim($_POST['msg']))); // Очищаем от мусора
Вывод из базы 
 
function post($text, $html=true, $nl2br = true, $smiles = true, $bbcode = true) 
{
 if ($html)
 {
 $text=html_entity_decode($text, ENT_QUOTES, 'UTF-8'); // в базе в htmllenties обратная перекодировка
 }
 if($smiles)
 { 
 $text = smiles($text);
 }
 if($bbcode)
 {
 $text = bbcode($text);
 }              
 if($nl2br)
 {
 $text = nl2br($text);
 } 
 
 return $text;
}

Недавно нашел в своем скрипте блога )

Запостил: Danis92 Danis92, (Updated )

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

  • ну без кода вызываемых функций даже не смешно.
    а вот это $msg = stripslashes(htmlspecialchars(trim($_POS T['msg']))); классика ГК. что уже тоже не смешно.
    Ответить
      • да, реализация обьектной модели оставляет желать лучшего, может быть, все таки пхп 10 сделают нормальным языком?
        но все же ооп-стиль лучше тем, что не перекроем такие очевидные => часто используемые имена функций + логически упорядочим
        Ответить
        • в принципе найм спейсы бы облегчили жизнь. Но разработчики только реализовали их сразу грозятся убрать. Бида бида с этим похапе.
          Ответить
          • вот вот. с такой обратной несовместимостью, лучше бы язык пригладили да баги пофиксили, и костыли бы поубирали.
            Ответить
            • А чем статик-методы не замена неймспейсу? Или в ПХП неймспейсы позволяют без "префикс::" писать (сорри, не знаю про неймспейсы в ПХП)?
              Ответить
              • > А чем статик-методы не замена неймспейсу?
                вот ведь сравнили несравниваемое. В неймспейсе ведь классы, а не методы.

                в общем, пока эта чехарда с неймспейсами, остаемся с Zend Conventions типа класс в пакет/подпакет/класс.пхп называется пакет_подпакет_класс
                Ответить
                • Я относительно исходного поста. В данном случае без разницы - тут все равно не ООП.

                  //Я не знаю как сделаны неймспейсы в ПХП, потому рассуждаю считая что они реализованы аналогично С++.

                  Итак, если начальному автору надо будет инкапсулировать свои функции (напрмер, внезапно окажется что они пересекаются с функциями другого автора), то он может это сделать либо обернув их как статические методы в некий "псевдо"класс
                  class CC{ static function f()...}
                  либо как неймспейс
                  namespace СС; function f()...

                  и в любом случае обращаться к ф-ции как CC::f().

                  Повторю, тут я могу ошибаться (напрмер, может в ПХП нельзя засовывать в неймспейс функции?), но в данном случае у неймспейса преимущество только в том, что его можно раскидать по разным файлам, и (возможно) если в ПХП есть такая штука типа using namespace CC; - и дальше писать без префикса CC:: - тогда автору свой код вообще почти переделывать не придется.

                  Если же префикс все равно надо писать - тогда использование неймспейса (равно и класса) практически ничем не отличается от обычного ("буквенного") префикса.

                  Ну и разумеется, если писать изначально в ООП-стиле, да с соглашениями об именах - тогда никакого вышеуказанного бреда делать не придется.
                  Ответить
                  • в похапе просто указываешь
                    namespace cc;
                    и всё что ниже относится к "сс"
                    при обращении к функциям/методам, пишешь:
                    $foo = сс\bar();
                    там где планируется использовать "сс" по умолчанию, пишешь:
                    use cc;
                    и далее:
                    $foo = bar();
                    --
                    но это только с 5.3 версии...
                    Ответить
                • >>пакет/подпакет/класс.пхп называется пакет_подпакет_класс
                  прикольно наверное перенести пару пакетов в другие пакеты

                  или например класс в пакете com.example.model.users
                  Ответить
                    • в условиях отсутствия статической типизации с ним вообще плохо.))
                      Правда, phpstorm например умеет цеплятся за phpdoc и имена переменных, и у него иногда получается сделать rename method.
                      Ответить
  • Я еще не на том уровне чтобы делать свои проекты на ООП. Да и проекты у меня небольшие так что смысла внедрения ООП не вижу ,
    $msg = stripslashes(htmlspecialchars(trim($_POS T['msg']))); // Очищаем от мусора
    Это перед записью в базу ,при записи в базу еще использую mysql_real_...
    При выводе обрабатываю строки функцией описанной выше post($post['msg']);
    Вообще подумываю на другие веб языки переходить ,какие можете посоветовать?
    Ответить
    • stripslashes - а зачем это?

      > Вообще подумываю на другие веб языки переходить ,какие можете посоветовать?
      Перл вам в помощь, не трудно будет перейти, основы вы уже освоили.
      Ответить
    • > Вообще подумываю на другие веб языки переходить ,какие можете посоветовать?
      --
      Есть такой замечательный язык - HTML
      Ответить
      • Вообще то я имею ввиду веб языки программирования ,а не язык разметки ,который я уже хорошо знаю. Родину защищать дело конечно благое если призовут пойдем .Веб-программирование для меня как хобби .
        Ответить
    • Зачем тебе другие веб-языки? Есть такая профессия родину защищать. Судя по нику, скоро придется 😉
      Ответить
        • А что будет, если всё будет полностью компьютеризованным, а обезьянки начнут писать для этого встраиваемый код? Можно подумать, в секретных НИИ будут сидеть сплошь гении. А, учитывая тягу к халяве, будут передавать на аутсорсинг в Индию.
          В итоге, если на экране более пяти объектов - работать не будет, потому что больше фантазии у разработчика не хватило. У ракеты жёстко прописанная в коде координата - дача тёщи.
          Достаточно вспомнить байку с полётом над Мёртвым морем. Программные ошибки такого рода могут стоить очень дорого.
          Ответить
          • > У ракеты жёстко
            как говорят в пентагоне - это не ракета, а самолет, просто кажется, что ракета 🙂
            Ответить
              • опаньки, это я не специально 🙂
                я про сегодняшний пуск, про который решили, что показалось 🙂
                хотя к прошлому разу подходит идеально
                Ответить
            • Да, да...
              "Это не говнокод - это продакшн, просто кажется что говнокод", - каждый раз говорят исполнители заказчику...
              Ответить
    • Вообще-то в 18 лет уже можно постигать азы ООП. ))

      переходить лучше на питон. Или джаву например
      Ответить
      • рекомендовал бы джаву как первый язык вместо бейсиков и паскалей. Язык простой, а плохому не учит
        Ответить
        • джава не простой язык, научить может всякому (хотя скорее хорошему), но учица все таки лучше на барсиках.

          пока ребенок не знает, что такое переменная -- нафига его грузить понятиями кучи, стека, сборки мусора, примитивов и врапперов?
          Ответить
          • пока ребенок не знает, что такое переменная, не надо его грузить понятиями кучи, стека, сборки мусора, примитивов и врапперов. Начать кодить можно спокойно и без этих понятий. А потом дойдем и до этого, и расскажем, что за собой надо убирать мусор, а сложные понятия составлять из простых.
            Зато не придется засорять совершенно ненужными знаниями, например, чем в паскакале процедура отличается от функции, какого хрена в васике параметры функции пишем в скобках, а параметры процедуры - без, и какими ключевыми словами заканчивать циклы for, а какими while, где глобальные переменные видны и где нет, и почему все переменные делать глобальными - плохо... ну итыды итыпы
            Ответить
            • да ну)
              сравните
              print "hello world"


              и
              package com.example;
              
              public class Hello {
                public static void main(String[] args) {
                  System.out.print("Hello world");
                }
              }


              что проще?
              Ответить
              • ой, не ворошите тухлые холивары. две лишние строчки не значит, что на 1000 строчек бейсика придется 2000 джавы. Кроме того, пример можно поместить в дефолтный пакет и первую строчку не писать.
                Зато в жабке даже с этим хелловорлдом, отпадают неясности типа: где виден код, куда напечатает, что придет на вход.
                Основы основ лучше обьяснить ребенку сразу -- мы же не хотим вырастить очередного кодобабуина, пусть попыхтит, посоображает, поусваивает побольше
                Ответить
                • да ну перестаньте. ему надо с самого начала понимать, какого типа переменная, какие операторы для нее определены и на каком уровне вложенности она находится. это закаляет дух. потом - ассемблер, чтобы не расслаблялся. дальше - внезапный ООП во все поля. потом - курс ФЯП и ЛСД. одновременно.

                  после этого человек обретет просветление и отправится доживать свой век в бутане.

                  вобщем не надо ему больше пехапить.
                  Ответить
            • аналогично не надо ребенку срать в мозг мутабельностью и оопщиной
              Ответить
              • а я как раз считаю, пусть привыкает к ООП сразу. Переучивать потом сложнее, и потом ребенка прямо тянет ООП писать в том же привычном процедурном стиле - например, обьявляя все переменные как поля
                Ответить
                • какой еще процедурный стиль? средневековое говно, как и ооп.
                  функциональщина и только она.
                  Ответить
                  • процедурный стиль -> ООП:
                    файл -> класс
                    глобальная переменная -> поле класса
                    процедура -> метод
                    Ответить
          • как печально. Выкормыши Java настолько отупели от жабьих лапок, что им никогда не осилить функционального программирования, лямбд, замыканий... Люр рыдахо.

            а меж тем, я полагал, что паскаль и васик устарели и полны других ложных "проблем", которые в жабке как раз отсутствуют
            Ответить
          • Кажется программированию нужно начинать обучать с алгоритмов (как у меня раньше это слово вызывало гастрит, и как теперь я это люблю)...
            Ответить
              • ...а потом про что-то вроде uml рассказать. А потом рассказать про языки программирования. А потом помочь с их выбором.
                Вобщем начинать нужно сверху, а не снизу как сейчас принято.
                --
                (имхо)
                Ответить
                • да чего уж там UML.
                  Один день про красно-черные деревья. Второй -- про паттерн visitor.

                  и ребенок конечно поймет и полюбит программирование)))

                  начинать надо с того, что бы ребенок как можно скорее написал игру "угадай число".
                  тогда ему станет интересно
                  и вот после десятой игры "угадай число" он начнет понимать чем плох копипаст и глобальные переменные
                  тогда можно двигаца дальше
                  потом по-тихоньку рассказывать про ООП, потом -- про алгоритмы, потом пересаживать на другие языки.

                  нельзя учить УМЛю пока человек не понял ЗАЧЕМ он ему нужен
                  Ответить
                  • если не ошибаюсь, с 85 года есть нормальный учебник по программированию.
                    ну а ооп перед алгоритмами - 'дожили..' называется.
                    на работе классики в умл рисовать вместо решения прикладных задач?
                    матчасть первична, а не оопы/паттерны/хуяттерны
                    Ответить
                    • да, пожалуй что я погорячился: алгоритмы и структуры первее.
                      Правда, я бы разделил их на две части: основные (не сложнее бинарного поиска и сортировки пузырьком) и сложные (уровня Кнута))).
                      Вот первые бы я учил до ООП, а вторые можно и параллельно.
                      Впрочем, если не хочется ООП -- можно заменить его на нормальное программирование на сях (модульное, а не все-в-кучу).

                      Так уж сложилось, что современный программер больше времени проводит над высокоуровневой архитектурой, чем над реализацией известных алгоритмов, которые есть в библиотеках.

                      Но знать си, и уметь делать quicksort конечно каждый должен уметь.
                      Ответить
                    • если что, тематические книги как минимум с 1960-х издаются
                      "Наука", "Мир"
                      Ответить
                  • > потом по-тихоньку рассказывать про ООП, потом -- про алгоритмы
                    а потом, факультативно, рассказать про алгебру, ага =)
                    Ответить
                        • тю. где я сказал что алгебру не нада учить?) просто в ВУЗах же бывают разные дисциплины, нет?P)

                          кстати, я видел написанный макакой билд-скрипт. Это был ant файл (build.xml) на 8000 строк примерно, смоченный ant-contribовыми ветвлениями

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

                            там не макаки, а шимпанзе. я в свое время не потрудился сохранить, а позже возник инцидент с баттхертом сотрудников и эта реклама была выпилена
                            Ответить
                        • Знаете, вот из личного опыта..
                          Хорошая практика - "Как бы ты реализовал такой-то и такой-то алгоритм"... Пока самостоятельно не выявишь все плюсы, дефекты и нюансы - ни черта толком не поймёшь...
                          Теория - оно, конечно круто, но без практики - это пустое.
                          Ответить
          • Спольски в целом прав: без понимания архитектуры компа и математики можно вырастить только быдлокодера.

            но java все таки не самый худший вариант (там хотя бы надо понимать что такое куча и стек, и знать основные структуры данных).

            вот если бы их учили на VBS или PHP -- был бы ад)
            Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8