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

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
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
class UserModel extends Base { 

    function index($id) { 
        $row = DB::run("SELECT `users`.*, (SELECT COUNT(*) FROM `guest` WHERE `guest`.`id_user`=`users`.`id`) AS `guest`,
                        (SELECT COUNT(*) FROM `files` WHERE `files`.`id_user`=`users`.`id`) AS `download`,
                        (SELECT COUNT(*) FROM `blog` WHERE `blog`.`id_user`=`users`.`id`) AS `blog`,
                        (SELECT COUNT(*) FROM `news_comments` WHERE `news_comments`.`id_user`=`users`.`id`) AS `news_comments`,
                        (SELECT COUNT(*) FROM `files_comments` WHERE `files_comments`.`id_user`=`users`.`id`) AS `files_comments`,
                        (SELECT COUNT(*) FROM `blog_comments` WHERE `blog_comments`.`id_user`=`users`.`id`) AS `blog_comments` FROM `users` WHERE `id`='" . $id . "'")->fetch(PDO::FETCH_ASSOC); 

        SmartySingleton::instance()->assign(array( 
            'row' => $row, 
            'friends' => DB::run("SELECT COUNT(*) FROM `friends` WHERE `id_user`='" . $this->user['id'] . "' AND `user_id`='" . $row['id'] . "' OR `id_user`='" . $row['id'] . "' AND `user_id`='" . $this->user['id'] . "'")->fetchColumn(), 
            'blacklist' => DB::run("SELECT COUNT(*) FROM `blacklist` WHERE `id_user`='" . $this->user['id'] . "' AND `user_id`='" . $row['id'] . "'")->fetchColumn() 
        )); 
        SmartySingleton::instance()->display(SMARTY_TEMPLATE_LOAD . '/templates/modules/user/index.tpl'); 
    } 
  //  и еще пачка методов 
}
// базовая модель. 
class Base { 

    function __construct() { 
        $this->user = User::auth(); 
        $this->page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 0;

        if ($this->user['id']) { 
            $this->message = $this->user['message']; 
        } else { 
            $this->message = Cms::setup('message'); 
        } 

        //если забанен 
        if ($this->user['ban'] == 1 && $this->user['bantime'] > Cms::realtime() && $_SERVER['REQUEST_URI'] != '/user/ban' && $_SERVER['REQUEST_URI'] != '/user/exit') {
            Functions::redirect(Cms::setup('home') . '/user/ban'); 
        } 
    } 

} 

// user auth  метод самый сок. или  (почему у меня лагает???)
class User { 

    public static $user = array(); 

    public static function auth() { 
        /* Авторизация */ 
        if (isset($_COOKIE['id_user']) && isset($_COOKIE['hashcode']) && $_COOKIE['id_user'] != NULL && $_COOKIE['hashcode'] != NULL) {
            $userdata = DB::run("SELECT * FROM `users` WHERE `id` = " . abs(intval($_COOKIE['id_user'])) . " AND `hashcode` = '" . Cms::Input($_COOKIE['hashcode']) . "' LIMIT 1")->fetch(PDO::FETCH_ASSOC); 
            if ($userdata['id']) { 
                /* записываем последнее посещение */ 
                DB::run("UPDATE `users` SET `date_last`='" . Cms::realtime() . "' WHERE `id`='" . $userdata['id'] . "'");

                /* онлайн */ 
                if (DB::run("SELECT COUNT(*) FROM `online` WHERE `id_user`='" . $userdata['id'] . "'")->fetchColumn() > 0) { 
                    DB::run("UPDATE `online` SET `time`='" . Cms::realtime() . "', `referer`='" . Cms::Input(Cms::setup('home') . '' . Functions::GET_PATH_INFO()) . "' WHERE `id_user`='" . $userdata['id'] . "'");
                } else { 
                    DB::run("INSERT INTO `online` SET  
                       `id_user`='" . $userdata['id'] . "',  
                           `ip`='" . Recipe::getClientIP() . "',  
                                `browser`='" . Recipe::getBrowser() . "', 
                                    `referer`='" . Cms::Input(Cms::setup('home') . '' . Functions::GET_PATH_INFO()) . "',
                                        `time`='" . Cms::realtime() . "'"); 
                } 

                SmartySingleton::instance()->assign(array( 
                    'newnotice' => DB::run("SELECT COUNT(*) FROM `notice` WHERE `id_user`='" . $userdata['id'] . "' AND `status`='1'")->fetchColumn(), 
                    'newmail' => DB::run("SELECT COUNT(*) FROM `mail` WHERE `user_id`= '" . $userdata['id'] . "' AND `read`='0'")->fetchColumn() 
                )); 
                self::$user = $userdata; 
                return self::$user; 
            } 
        } else { 
            setcookie('id_user', '', 0, '/'); 
            setcookie('hashcode', '', 0, '/'); 
            session_destroy(); 
            /* онлайн для гостей */ 
            if (DB::run("SELECT COUNT(*) FROM `online` WHERE `ip`='" . Recipe::getClientIP() . "' AND `type` = '2'")->fetchColumn() > 0) { 
                DB::run("UPDATE `online` SET `time`='" . Cms::realtime() . "', `referer`='" . Cms::Input(Cms::setup('home') . '' . Functions::GET_PATH_INFO()) . "' WHERE `ip`='" . Recipe::getClientIP() . "' AND `type` = '2'");
            } else { 
                DB::run("INSERT INTO `online` SET  
                           `ip`='" . Recipe::getClientIP() . "',  
                                `browser`='" . Recipe::getBrowser() . "', 
                                    `referer`='" . Cms::Input(Cms::setup('home') . '' . Functions::GET_PATH_INFO()) . "',
                                        `type` = '2', 
                                            `time`='" . Cms::realtime() . "'");
            } 
        } 
    } 

    function data($table) { 
        $array = "(SELECT `login` FROM `users` WHERE `users`.`id`=`$table`.`id_user`) AS `login`,
                    (SELECT `avatar` FROM `users` WHERE `users`.`id`=`$table`.`id_user`) AS `avatar`,
                        (SELECT `level` FROM `users` WHERE `users`.`id`=`$table`.`id_user`) AS `level`";
        return $array; 
    } 

}

Описание:
Релиз VCMS, версия 1.0

Сегодня состоялся релиз первой версии бесплатного движка VCMS.

Движок включает в себя следующее модули:
- авторизация, регистрация, восстановление пароля пользователя;
- личный кабинет пользователя, в который входят следующие модули: почта, друзья, блог, фотоальбомы, уведомления, анкета, мои настройки, настройки безопасности, закладки, черный список, история авторизаций;
- новости с комментариями;
- загруз центр с безграничной вложенностью категорий;
- гостевая;
- блоги пользователей;
- форум с разделами и подразделами, а также с возможностью прикрепления нескольких файлов к посту и созданием голосования в темах;
- фотогалереи пользователей;
- административная панель и так далее.

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

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

  • "BootStrap" заебал. Уже четыре года назад мне эта синяя размазанная подсветка полей формы казалась колхозом. Как это заполонило пол-Интернета?
    Ответить
    • И, казалось бы, закомплексованный школьник взялся за разработку CMS, впихнув туда модный MVC, а, меж тем, многие вводные данные не проверяет, что, в итоге, позволяет создавать в "Блоге" записи с несуществующими ID категорий: http://vcms.su/active/blogs/90 (в данном случае - "-6").
      Ответить
    • > Как это заполонило пол-Интернета?
      +1. Все мелкие сайты как под копирку. "Модно, молодёжно, как у твиттера!"

      З.Ы. Ну, к слову, на безрыбье, когда дизайнера с версталой под рукой нет - и бутстрап сойдёт. Всё лучше, чем очередной уёбищный говнодизайн-от-программиста.
      Ответить
      • >>> "как у твиттера"
        Особенно учитывая, что сам "Twitter" не использовал ни код своего фреймворка, ни его визуальные решения.
        Ответить
      • > когда дизайнера с версталой под рукой нет - и бутстрап сойдёт

        Ну вот кстати я его довольно часто использую для всяких внутренних инструментов с веб-интерфейсом, когда нужно сбацать что-нибудь полезное за пару дней.
        Ответить
      • >>е, когда дизайнера с версталой под рукой нет

        А теперь мысленно перенеси это всё на десктоп: "ой, да я стандартные контролы использую только когда дизайнера под рукой нет".

        Глупо звучит, правда?
        Ответить
    • бутстрап это еще и сеточка и респонсивная верстка, и готовые контролы, и вообще оче хорошо
      Ответить
        • да и не в кнопка дело то)

          Я же говорю: респонсивненько сверстать чтобы оно работало и под iPhone и под 30" моник -- это не баран чихнул, нужен действительно качественный верстун (а их мало, кстати). Бутстрап это СИЛЬНО упрощает.
          Ответить
  • > SmartySingleton
    Какое точное и понятное название! И ведь не соврал же.

    > $_SERVER['REQUEST_URI'] != '/user/ban'
    Для "PHP" магические строки - это нормально?


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

      Только бутстрап там не в тему. Должен быть HTML 4.01 в ВЕРХНЕМРЕГИСТРЕ, табличная верстка и BGSOUND
      Ответить
            • Фреймы! Боже! Я забыл что можно было делать сайты на фремах.
              Меню в левом фрейме, тело -- в правом, и target у a чтобы в главном фрейме открывалось.
              Фремы были прокляты и забыты еще на излёте 90х.

              Может быть вы еще и SSI помните?
              Ответить
                  • Как раз на сосаче фреймов вроде нет. А вот на многих других бордах есть.
                    Ответить
                    • Старый я слишком

                      Мне в 2008м было уже не до сосачей ваших
                      Ответить
                    • У доброчанек джва фрейма - список разделов и сам контент.
                      Ответить
  • vcms.su

    > > Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LOW_PRIORITY `online` SET `ip`='93.125.45.63', ' at line 1' in /var/www/maisosu/data/www/vcms.su/app/core/classes/DB.php:47 Stack trace: #0 /var/www/maisosu/data/www/vcms.su/app/core/classes/DB.php(47): PDOStatement->execute(Array) #1 /var/www/maisosu/data/www/vcms.su/app/core/classes/User.php(47): DB::run('INSERT INTO LOW...') #2 /var/www/maisosu/data/www/vcms.su/app/core/core.php(26): User::auth() #3 /var/www/maisosu/data/www/vcms.su/index.php(15): require_once('/var/www/maisos...') #4 {main} thrown in /var/www/maisosu/data/www/vcms.su/app/core/classes/DB.php on line 47
    Ответить

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

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

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


    8