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

    0

    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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    require_once ('./main/config.php');
    class user 
    {
        /* 
        private login;
        private password;
        private username;
        private about;
        */
        
        function registerUser($login, $password, $username, $about)
        {
            $db = MysqliDb::getInstance();
            $data = Array ("login" => $login,
                   "password" => $password,
                   "username" => $username,
                   "about" => $about,
            );
            $id = $db->insert ('users', $data);
            if($id)
                echo 'user was created. Id=' . $id;
        }
        
        function authorizeUser($login, $password)
        {
            $db->where ("id", 1);
            $user = $db->getOne ("users");
            echo $user['id'];
            /*
            $logins = $db->getValue ("users", "login", null);
            // select login from users
            // select login from users limit 5
            foreach ($logins as $login)
            echo $login;
            */
        }
        
        
    }

    Ну как вам? Класс юзера для регистрации и авторизации (недоделан)

    Запостил: Folsky, 18 Мая 2016

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

    • Что мы видим?
      Мы видим что класс User не содержит полей пользователя, зато содержит два метода, один из которых не имеет отношения к объекту User (и должен быть статическим как минимум) да еще и полтно завязан на знание о БД.

      И что такое $db? Поле класса? Тоесть у Юзера внутри хранится знание о БД,а больше ничего?

      Тот редкий случай, когда хочется сказать "не используйте ООП, пишите в процедурном стиле, Вам ООП не идет'
      Ответить
      • я еще не до конца понял логику этого сайта, по идее это CMS
        Ответить
        • а что, в PHP досих пор нет боль-мень стандартного фреймворка для таких задач?
          Зачем вообще люди пишут сами авторизацию и работу с БД?

          Например в питонячем джанге все это уже есть)
          Ответить
          • Использовать стандартный фреймворк нецелесообразно™, т.к. задача аутентификации и авторизации юзера уникальна для каждого сайта. Код, заточенный под конкретный кейс, будет проще и оптимальней.
            Ответить
            • Вы храните где-то в буфере обмена строку "[i]нецелесообразно™[/i]", вводите вручную или юзерскрипт написали (с учётом заглавных и строчных букв)?
              Ответить
              • > юзерскрипт написали
                Нецелесообразно™, т.к. я не так часто пишу эту строку.

                > храните где-то в буфере обмена
                Нецелесообразно™, т.к. тогда буфер будет занят.

                > вводите вручную
                Нецелесообразно™, т.к. долго и нудно.

                Я её копипащу из текста и добавляю по краям [i][/i]
                Ответить
              • Благодаря 1024-- строку "нецелесообразно™" стало вводить намного проще.
                Ответить
                • http://govnokod.ru/15758#comment227072

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

                  Какая нецелесообразность™ )))
                  Где здесь нецелесообразно™?
                  Помни, 1024--, за тобой нецелесообразно™ следить!
                  нецелесообрадушный™ питушок
                  нецелесообразный™ лев
                  Ответить
                  • какая нецелесообразность™ )))
                    где здесь нецелесообразность™ )))
                    где здесь нецелесообразный™ питушок
                    нецелесообразность™ )))
                    где здесь нецелесообразно™ следить!
                    нецелесообрадушный™ лев
                    Ответить
              • Я теперь понял, чем удобен Твиттер: ссылки на @имя_пользователя и на #хэштег после копирования остаются ссылками, потому что значки @ и # сохраняются после интерпретации. Вот бы ещё с ББ-кодами подобное провернуть, чтобы [i]курсив[/i] после копирования оставался [i]курсивом[/i].
                Ответить
                • Ну тогда уж имиджбордовский *курсив*. Он не так глаза режет.
                  Ответить
                  • А ещё можно вспомнить, что в Уникоде 100500 всяких разных пробелов, и придумать язык разметки, использующий комбинации этих пробелов, типа как ЯП whitespace. Вроде и копируется, и глаза не режет.
                    Ответить
                    • Пробелы хуёво копируются. Да и браузер их мёрджит в один (или он только обычные мёрджит?).
                      Ответить
                      • Только обычные. Я в какой-то ГК кидал «фигурные» пробелы.

                        Отсыпаю по 10 штук:
                        [          ] Ideographic space
                        [          ] Em quad
                        [          ] Em space
                        [          ] Figure space
                        [          ] En quad
                        [          ] En space
                        [          ] Three-Per-Em Space
                        [          ] Four-Per-Em Space
                        [          ] Narrow no-break space
                        [          ] Punctuation space
                        [          ] Six-Per-Em Space
                        [          ] Thin space
                        [          ] Hair space
                        Ответить
      • $db — это что-то глобальное. Иначе бы было $this->$db.

        Локальные переменные не нужны же.
        Ответить
        • > это что-то глобальное
          Это локальная переменная же, в которую положили инстанс синглтона MysqliDb::getInstance().

          З.Ы. Из ООП и паттернов автор осилил только самую бесполезную хуйню - синглтоны. Слава богу, что до наследования не дочитал...
          Ответить
          • Тогда в метод authorizeUser нужно копипастнуть $db = MysqliDb::getInstance();
            Ответить
            • Кстати, а null->Where() упадёт с ошибкой или продолжит работу?
              Ответить
              • http://ideone.com/xvsTpb

                Упадёт. В PHP нет статических типов, тип определяется значением, а у null не может быть полей/методов.
                Ответить
                • Т.е. этот сайт абсолютно безопасен - злоумышленник не сможет на нём авторизоваться.
                  Ответить
                • именно по этому я за ObjC (и может еще за свифт) там нилу можно послать сообщение и ничего за это не будует
                  Ответить
          • Василий просил передать что
            Нецелесообразно использовать ООП в небольшом проекте
            Нецелесообразно использовать ООП, ведь оно все равно не решает всех проблем
            Ответить
        • > глобальное
          Тогда было бы global... Класс же (недоделан).
          Ответить
        • полазил, и нашел целую библиотеку mysql с документацией, лежит в отдельной папке
          Ответить
      • > не содержит полей пользователя
        Вот же они:
        /* 
            private login;
            private password;
            private username;
            private about;
        */
        Ответить
    • > echo 'user was created. Id=' . $id;
      > echo $user['id'];
      Юзер будет очень рад видеть всё это посреди странички.
      Ответить
    • Сорцы $db в студию
      Ответить

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