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

    +154

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    function openSQLConnection($data)
    {
    	$db_host = $data["host"];
    	$db_user = $data["login"];
    	$db_pass = $data["pass"];
    	$db_name = $data["db"];
    	mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
    	mysql_select_db($db_name) or die(mysql_error()); 
    }

    Суровый SQL-коннектор, взято из скриптов платежной системы nextpay[ru]

    Запостил: zenn, 20 Января 2011

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

    • вижу говно только в or die(mysql_error()).
      или вам и массивы не угодили?
      Ответить
      • а Вам нравится одно глобальное подключение к mysql?))))
        массивы это мелочи на этом фоне)

        впрочем, от пыха трудно ждать хоть сколько-нибудь внятной архитектуры.
        хорошо хоть HTMLя в этой функции нет
        Ответить
        • ах да. правда, это не слишком существенно, я еще не видел аппликаций, которые бы сразу подключались более чем к одной базе
          Ответить
      • Нет. Он просто не знает, что такое массивы.
        Ответить
    • показать все, что скрытоВся соль в индусской архитектуре. $date - переменная в другом конфиге .... что мешало умникам выставить global $data и юзать без повторного пере-обьявления переменных?
      П.с. - так же при обработке скрипта данная функция вызывается не 1 раз - в тупую создание подключения, выполнение 1 запроса, закрытие и создание нового ...
      Ответить
      • брр, global
        Ответить
        • "смотри, какое смешное трехугольное колесо придумали индусы. Что мешало умникам сделать квадратное?"
          Ответить
      • да
        надо было в одном файлике сделать глобальную переменну $data, а во всех остальных ее использовать.

        это был бы настоящий php-стайл)
        Ответить
        • :) Уважаемый, с каждым новым тактом времени Ваше пыхофобство всё ярче и ярче :)
          (ps. только не отправляйте меня почитать что-нибудь...)
          :)
          Ответить
          • причем же тут я?
            это автор предложил решение, я всего лишь отметил, что его решение отражает дух и философию платформы.

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

                потому и упоменаю
                Ответить
                • филосифия php === миллионы мух не могут ошибаться...
                  --
                  то ли ещё будет..? (во благо 95%)
                  Ответить
                  • будет еще хуже)
                    начинается Эпоха Говеных Проектов.
                    Раньше что бы сделать проект надо было нанять тучу программистов, хорошего манагера, и год его делать.
                    школьник (обычный, не торвальдс) мог написать разве что очередной арканоид, и продавать его по $ 19.99 за лицензию.

                    сейчас можно сделать твиттер (по технической сложности сопоставимый с арканоидом) и получить стопицот милленов.

                    на этом фоне пых конечно становится инструментом для зарабатывания денег:)

                    к счастью, в областях чуть более классического программирования все еще осталось очень много денег, есть где кормица)
                    но если все перейдут на пхп -- переквалифцируюсь в сисадмины)
                    Ответить
                    • > Эпоха Говеных Проектов...
                      Ну это скорее всего просто очередной этап развития систем. Через ннадцать времени (вот увидите :) ) - будет очередной квантовый скачок. Как обычно. Тут либо пых умрёт - либо он уже не будет пыхом.
                      --
                      А вот сисадминское - это нечто навроде паразитического... Народ кормится за счёт ноу-хау другого народа. А ноу-хау - оно такое, определённо всегда появляется, и при том, с завидной периодичностью...
                      --
                      А вот на твиттероподобный проект, у тысячей пыхограммистов, просто-напросто не хватит нейронов моска, (за исключением конструирования на некоем готовом продукте). Пых в этом плане, возможно, и прост в использовании - но, для этого, этого недостаточно :)
                      Ответить
                      • Квантовый скачек будет тогда, когда новые средства позволят создать свое вконтакте в три клика каждому пользователю. Тогда и все пыховцы закончатся.

                        Что Вы имеете против сисадминов?:)
                        Сетевые администраторы например -- те же программисты, просто вместо компонентов у них сервисы, а вместо кода -- конфигурационые файлы) Думаете легко например спроектировать сеть компании на 10 офисов, разбросанных по всему миру, по паре тыщ человек в каждом?)

                        Кроме админства, впрочем, есть еще области, куда маразм не прийдет: лоу-левел например. Всяческие драйверописатели всегда будут.

                        А нейронов не хватит на придумывание, но не на реализацию)
                        В реализации там нет ничего сложно. Вот придумтаь и раскрутить -- это другое
                        Ответить
                        • Не, не, позвольте, квантовый скачок определённо не за горами. По причине закономерности развития (или уж деградации) систем, в любом случае - "чего-то уж точно должно скакнуть"...
                          --
                          По поводу сисадминства... Вот есть люди которые открывают новые правила, а есть люди которые их (эти правила) используют. Я не говорю, что это легко. Но это, всенепременно, уже другая стадия или этап мышления. Не вровень "изобретательству/рационализаторству". Которая основана исключительно на чужих достижениях в област`ях открытия этих самых достижений.
                          Сисадмины, как правило, очень умные люди, но без изобретателей - они абсолютно никак не смогут себя проявить. Это определённый (и, как правило, очень нужный) человеческий психотип.
                          --
                          И чтобы придумать (!) и раструтить (!!!) "твиттероподобное", необходима несколько иная функция мозга, чем на пыхопейсательство... Что тысячам не очень доступно... :)
                          Ответить
                          • 1) увидим) может быть скоро и правда программистов в привычном понимании станет гораздо меньше. Есть мнение, что ООП например скоро отправится на пенсию, и вместо него будут новые парадигмы.

                            2) А программисты много чего изобретают?)
                            Мне кажется что из всех программистов -- процентов пять что-то изобрели. Остальные клепают типовые решения на готовых фреймворках/платформах.

                            3) Может и другая, но к программированию она отношения не имеет)))
                            Ответить
                            • 1)+2) :) возможно нечто вроде видоизменённого "uml"... или архитектурное программирование. Вследствие плодовитости библиотек - программист определяет связи, etc, а остальное генерируется. И, с возрастанием быстродействия, становится уже неважным количество коричневой взвеси в проектах...
                              Сюда же можно и добавить 3)...
                              Ответить
                        • ...Да, кстати, в драйверах, порой можно заметить коричневатые отблески... :)
                          Ответить
                          • разумеется)
                            обычно это списывают на сложность архитектуры (WDM например) или на ограниченность ресурсов: свопить нельзя, долго думать нельзя, дескать не до красоты)

                            но обезъянок там явно меньше
                            Ответить
                        • что за квантовую скакоту вы устроили? вас же физики и дети могут увидеть!
                          Ответить
      • >>> П.с. - так же при обработке скрипта данная функция вызывается не 1 раз - в тупую создание подключения, выполнение 1 запроса, закрытие и создание нового ...

        Вот это и надо было постить, было бы здорово. А эта функция весьма типична, и, тащем-та, делает свое дело. Из говна тут только потерянный обработчик соединения (с явным расчетом на автозакрытие по окончании скрипта), даже присвоение не столь уж криминально.
        Ответить
      • Если вы действительно смотрели весь код скрипта, то заметили бы что, скрипт работает с 2 базами данных -- базой данных заказов и базой данных игрового сервера. Именно по этой причине, данные соединения с БД передаются параметром ($data). Если бы скрипт работал только с одной БД, то можно было бы сделать так, как вы предлагаете -- без параметра. А вообще настройки принято хранить в отдельном файле, а не в скриптах где реализуется логика. Для того чтобы можно было их легко менять при необходимости.
        Ответить
        • Скажите автор, Вы никогда не слышали про connection resource?
          он позволяет иметь два одновременных подключения!
          такая вот магия

          а уж про пдо я вообще молчу
          Ответить
    • В крайнем случае не обязательно переобъявлять уже объявленные переменные ....
      Ответить
    • Для неосознавших всю соль этого кода покажу как вызывается данная функция(нужно было наверное в пост):
      function logOrder()
      {
      	global $SQL_SERVER_SMS;
      	openSQLConnection($SQL_SERVER_SMS);
      blablabla ...
      }

      вот где то так ) $SQL_SERVER_SMS обьявлена в другом php файле.
      Ответить
      • > logOrder
        логарифмы считает ???
        Ответить
      • ордер на изьятие логов
        Ответить
      • test343 11 минут назад # 0
        Если вы действительно смотрели весь код скрипта, то заметили бы что, скрипт работает с 2 базами данных -- базой данных заказов и базой данных игрового сервера. Именно по этой причине, данные соединения с БД передаются параметром ($data). Если бы скрипт работал только с одной БД, то можно было бы сделать так, как вы предлагаете -- без параметра. А вообще настройки принято хранить в отдельном файле, а не в скриптах где реализуется логика. Для того чтобы можно было их легко менять при необходимости.
        Ответить
        • А почему переменная а не константа ??? К чему global ???
          Ответить
          • function openSQLConnection($data)
            {
            $db_host = $data["host"];
            $db_user = $data["login"];
            $db_pass = $data["pass"];
            $db_name = $data["db"];
            mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
            mysql_select_db($db_name) or die(mysql_error());
            }

            Где вы тут видите global??
            Переменная (параметр) $data, потому что баз НЕСКОЛЬКО и они могут быть вообще на разных хостах -- для каждой базы свои настройки соединения. Что тут не понять? Вы что предлагаете для каждой БД свою функцию соединения реализовывать?? Есть общий принцип программирования: настройки отдельно -- конфиги пароли и.т.д, реализация -- отдельно. Любому человеку, который в своей жизни написал что-либо сложнее, чем "hello world" это очевидно.
            Ответить
            • Привет автору.
              Ответить
            • function logOrder()
              {
              global $SQL_SERVER_SMS;
              openSQLConnection($SQL_SERVER_SMS);
              blablabla ...
              Ответить
              • Все правильно. Это уже использование функции openSQLConnection для связи с конкретной БД. Слово API, тебе знакомо? И что за страх перед global переменными в php?
                Ответить
                • >>Слово API, тебе знакомо?

                  когда PHPшники говорят об архитектуре -- я всегда млею
                  Ответить
            • Я вот что не пойму. Зачем вы валите скрипт die. Если это весрия в разработке это еще можно понять если это продакшин то это какашка. я бы отписывал в лог. А функция возвращала false.

              а имя logOrder() что означает ??
              Ответить
              • Английский учил в школе? log - писать в журнал, order -- заказ.
                Ответить
                • log это логарифм logorder это логарифм по основанию заказ.
                  И теперь сопутствующий вопрос на хуа при записи лога вызывать код соединения с базой ??????
                  ИМХО это один раз делается.
                  Ответить
                  • Мне очень жаль что твои познания в английском, ограничиваются только тем, что ты знаешь что log это сокращенно от logarithm. Ну если ты английский на знаешь, то надеюсь словарем пользоваться умеешь? Вот здесь перевод слова log: http://lingvo.abbyyonline.com/ru/en-ru/log. А твое ИМХО по поводу работы скрипты никого не интересует. Если хочешь узнать, что он делает -- залезь в код и посмотри.
                    Ответить
                    • Это Вы мне предлагаете погрузится в говно еще больше.
                      Спасибо я как нибудь обойдусь.
                      Ответить
                    • о, пошло "сперва добейся" ))
                      Ответить
                • log - бревно.
                  Ответить
              • В данном случае die абсолютно оправдан, так как без доступа к БД работа скрипта бессмысленна. Я просто прекращаю выполнение скрипта и распечатываю sql ошибку.
                Ответить
                • sql govno
                  polzuysa faylami
                  Ответить
                • die абсолютно не оправдан, это только сельские программисты так пишут. Ошибка если есть, ее нужно красиво в рамочке вывести, с XHTML и CSS (и желательно в сплывающем Jquery UI окне с кнопочкой "Понял"). Иначе нахрен такая платежная система? Доверия я к ней не увижу с таким выводом ошибок.
                  Ответить
                  • жжош
                    Ответить
                  • increazon, у вас голове каша. Вы все смешали в одну кучу: XHTML, CSS, Jquery, UI. О таких как вы говорят: слышал звон, да не знает где он. Этот скрипт ВООБЩЕ НЕ предполагает пользовательского интерфейса (UI) и соответственно HTML и CSS . Скрипт вызывается по событию (оплата заказа) сервером nextpay. Здесь вообще пользователь не присутствует. Прежде чем что-то брякнуть, подумайте. А если нечего сказать, промолчите -- может быть сойдете за умного.
                    Ответить
                    • Да и в таком случае не оправдано. Если мы говорим о технологии схожей с AJAX, то результаты ошибки нужно возвращать внутри JSON или XML структуры, либо другой. А если люди просто пишут die - то это программа на коленках, собранная школьниками.
                      Ответить
                      • Ну кто вам сказал, что ответ от скрипта на сервере продавца должен быть в формате XML?? Здесь НЕТ никакого пользователя, который жмет кнопку и видит результат выполнения скрипта в браузере. И браузера тут никакого нет . Соответственно, AJAX и JSON здесь вообще не причем. Это скрипт интеграции через API nextpay. Один сервер шлет запрос другому серверу. Формат ответа НЕ XML.
                        Ответить

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