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

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
  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 Folsky, (Updated )

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

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

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

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

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

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

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

              Я её копипащу из текста и добавляю по краям
              Ответить
            • Благодаря 1024-- строку "нецелесообразно™" стало вводить намного проще.
              Ответить
              • Теперь вайперы набигут.

                Какая нецелесообразность™ )))
                Где здесь нецелесообразно™?
                Помни, 1024--, за тобой нецелесообразно™ следить!
                нецелесообрадушный™ питушок
                нецелесообразный™ лев
                Ответить
                • какая нецелесообразность™ )))
                  где здесь нецелесообразность™ )))
                  где здесь нецелесообразный™ питушок
                  нецелесообразность™ )))
                  где здесь нецелесообразно™ следить!
                  нецелесообрадушный™ лев
                  Ответить
            • Я теперь понял, чем удобен Твиттер: ссылки на @имя_пользователя и на #хэштег после копирования остаются ссылками, потому что значки @ и # сохраняются после интерпретации. Вот бы ещё с ББ-кодами подобное провернуть, чтобы курсив после копирования оставался курсивом.
              Ответить
              • Ну тогда уж имиджбордовский *курсив*. Он не так глаза режет.
                Ответить
                • А ещё можно вспомнить, что в Уникоде 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().

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

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

Из-за тебя ушел bormand, guest!

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


    8