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

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
function get_page() {
    $routes = Utility::get_routes('', 'admin/*', '[0-9a-z\.\/\-]*');

    $entities = [];
    foreach ($routes as $key => $value) {
        $entities[$value['entity_type']][$value['entity']][] = $value;
    }

    $map = [
        'core' => Utility::get_string('Ядро'),
        'base' => Utility::get_string('Базовое'),
        'custom' => Utility::get_string('Пользовательское')
    ];

    $menu = [];
    if ($entities) {
        $entities = [
            'core' => $entities['core'] ?? [],
            'base' => $entities['base'] ?? [],
            'custom' => $entities['custom'] ?? []
        ];

        foreach ($entities as $key => $value) {
            $count = 0;
            foreach ($value as $key2 => $value2) {
                $index = $map[$key];
                $entity = str_replace('_', ' ', $key2);
                $entity_upper = ucfirst($key2);
                $title = $route = '';

                $on = false;
                $items = [];
                foreach ($value2 as $key3 => $value3) {
                    if ((!isset($value3['menu']) || $value3['menu']) && (!isset($value3['type']) || $value3['type'] == 'replace') && (!isset($value3['access']) || (new User)->get_access($value3['access']))) {
                        $first = count(explode('/', $value3['route'])) <= 2;

                        if (!$title && $first) {
                            $title = $value3['title'] ?? $entity_upper;
                            $route = $value3['route'];
                        }

                        $items[$value3['route']] = $value3['title'] ?? $entity_upper;

                        $on = true;
                    }
                }

                if ($on) {
                    $menu[$index][$key2] = [
                        'title' => $title ?: $entity_upper,
                        'title_link' => $route ?: 'admin/'.$entity,
                        'items' => $items,
                        'tr' => $count && $count % 3 === 0 ? '</tr><tr>' : '',
                    ];

                    $count++;
                }
            }
        }
    }

    return $menu;
}

eqsash-2.0.zip/eqsash-2.0/core/admin/admin.php
>>> Eqsash
>>> Премиум технологии

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

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

  • function admin() {
        $page = isset($_GET['page']) ? (int)($_GET['page']) : 1;
        $total = Database::select('content')->fetch('count');
        $pages_num = ceil($total / 50);
    
        $pager = '';
        for ($i = 1; $i <= $pages_num; $i++) {
            $active = $page === $i ? 'class="link-active"' : '';
            $pager .= '<a '.$active.'href="/admin/content?page='.$i.'">'.$i.'</a> ';
        }
    
        $page = is_numeric($page) ? ($page - 1) * 50 : 0;
    
        $content = Database::select('content')
            ->sort('created', 'DESC')
            ->limit(50, $page)
            ->fetch('assoc_all');
        // ...

    core/content/content.php

    Нихуя себе, макака написала код без(?) инъекций!
    Ответить
    • >без инъекций
      посредством кода
      $page = is_numeric($page) ? ($page - 1) * 50 : 0;


      да?
      ахуеть)))

      а еще этот код удобно поддается щаблонозации, да и тестированию тоже
      Ответить
      • Очень гибкий и расширяемый код! Вот, например, очень гибкая и расширяемая обёртка над БД:
        class Database {
            // [...]
        
            public $prefix = '';
            //public $settings = [];
        
        	static function get($new = false, $settings = []) {
        		if (!self::$instance || $new) {
        			$settings = $settings ?: Utility::get_settings()['database'];
        
        			self::$instance = new self;
        			//self::$instance->settings = $settings;
        			self::$instance->prefix = $settings['prefix'] ?? '';
        			self::$instance->driver = (new Mysql)->get($settings);
        		}
        
                return self::$instance;
            }
        Ответить
        • удобно писать датабейс агностик код

          При этом у пыхеров есть PDO, но они поверх него пишут еще менее гибкое говно

          Зачем? Чтобы сделать код хуже, потому что чем код хуже -- тем программист на пхп лучше
          Ответить
          • Зачем? Любая пыхомакака мечтает стать не простым шаблонизаторщиком, а "настоящим программистом", потому обязательно хоть раз пытается написать свой шаблонизатор (на шаблонизаторе, лол), свою ORM (ну или хотя бы DBAL), а потом объединить всё это чудо в принципиально новый супериновационный фреймворк. Но потом вдруг оказыватся, что для этого всего необходимо думать, чего пыхомакака не умеет, и ничего из перечисленного не пишется за 15 минут, а пыхомакака хочет всё и сразу. В результате имеем:
            - пародию на шаблонизатор с XSS и эвалом
            - пародию на ORM с SQL инъекциями
            - нахуй никому не нужный очередной абсолютно неюзабельный недофреймворк
            Ответить
            • Немакака, покажи что ты написал. Писать в одно рыло свой фреймверк - очень геморойная затея, а они уже написаны. А писать начинают от безисходности, видя какое вокруг говно. Напитоне пояему-то нмкто не начинает косплеить джангу или даже фласк.
              Ответить
              • нахуя писать свой фреймворк вооще?

                Почему питанист берет алчеми или джангу, а пыхер пишет класс class Database ? нахуя?
                Ответить
        • Нет. Здесь инфекция. Инъекция будет уже потом, когда ты будешь дергаться.
          Ответить
        • Под тестированием он, видимо, имеет в виду "открыть страничку и посмотреть, что всё на месте".
          Ответить
          • Скорее, залить файлик по фтп и отписать заказчику "Сделал, проверяйте"
            Ответить
          • Борманд, как работает запуск виртуальных машин при эмуляции bios (не uefi)? Машина же ожидает, что процессор стартует в реальном режиме, однако он не может запускать сегменты с реальным кодом, так как он уже в long mode.

            Более того, Intel явно требует, что бы код VMX был протектед и в страничном режиме (AMD, внезапно, нет)
            The biggest difference between VT-x and AMD-V is that AMD-V provides a more complete virtualization environment. VT-x requires the VMX non-root code to run with paging enabled, which precludes hardware virtualization of real-mode code and non-paged protected-mode software. This typically only includes firmware and OS loaders, but nevertheless complicates VT-x hypervisor implementation. AMD-V does not have this restriction.
            http://underpop.online.fr/v/virtualbox/details-about-hardware-virtualization-virtualbox.html.gz



            Виртуализаторы чтоли софтварно эмулируют реальный режим для загрузки?

            А если я дос запущу, то получится полностью софтварная реализация, как досбокс?
            Ответить
            • Да, эмулировали софтом пока интелы тоже не завезли unrestricted guest.
              Ответить
                • Ну вообще странный ход с их стороны, имхо.

                  99% пользователей виртуалок совершенно похуй, через что там грузится ось (в hyper-v второго поколения, к примеру, вообще никакие устройства не эмулируются и всем похуй). А UEFI 16-битным кодом не пользуется, оно через десяток инструкций уже в long mode.

                  Видимо unrestricted guest какие-то ещё полезные фичи даёт помимо запуска древнего говна.
                  Ответить
                  • Может, авторам виртуалок не похуй, да и скорость загрузки может быть чуть выше наверное.

                    У второго поколения гиперв всё синтетическое, да? То-есть ОС без поддержки hyper-v отсосет. А грузятся они через uefi уже, да?

                    Где читать про этот мод? в третьем волуме интела?
                    Ответить
                  • всё, моя почиталъ третий томъ.

                    К каждому вротуальному процу привязана же структура VMCS. Так вот unrestricted guest там просто флажок.
                    А дальше всё работает примерно как в v86: проц запускает код из 16ти битново сегмента, вызовы интерруптов и IO перехватываются, и отправляются в гипервизор (через map) а тот уже косплеит там какой-нить древний чипсет интеловский, 8259, 8042, и прочую несуществующую уже питущню.

                    Верно понл?
                    Ответить
  • >value3
    блядь

    ></tr><tr>
    тыр тыр митя
    Ответить
  • Жопой чую, что половина кода находится в классе "Utility"...
    Ответить
    • Втягивая воздух, ты засосал и меня. Мама мио, как тут неприбрано у тебя.
      Кому нужно это вазелиновое масло?, да?
      Ответить
  • static function build_mail($to, $subject, $text, $from, $files = []) {
    		$subject = "=?utf-8?B?".base64_encode($subject)."?=";
    
    		$header = 'From: '.$from."\r\n";
    		$header .= 'Mime-Version: 1.0'."\r\n";
    
    		if (!$files) {
    			$header .= 'Content-type: text/html; charset=UTF-8'."\r\n";
    			$header .= 'Content-Transfer-Encoding: 8bit'."\r\n";
    
    			$message = $text;
    		} else {
    			$boundary = strtoupper(uniqid(time()));
    
    			$header .= 'Content-Type: multipart/mixed;';
    			$header .= 'boundary="----------'.$boundary.'"'."\r\r\n\n";
    
    			$message = '------------'.$boundary."\r\n";
    			$message .= 'Content-Type: text/html; charset=UTF-8'."\r\n";
    			$message .= 'Content-Transfer-Encoding: 8bit'."\r\r\n\n";
    			$message .= $text."\r\r\n\n";
    
    			foreach ($files as $filename) {
    				$f = fopen($filename, 'rb');
    
    				$message .= '------------'.$boundary."\r\n";
    				$message .= 'Content-Type: application/octet-stream;';
    				$message .= 'name="'.basename($filename).'"'."\r\n";
    				$message .= 'Content-Transfer-Encoding: base64'."\r\n";
    				$message .= 'Content-Disposition: attachment;';
    				$message .= 'filename="'.basename($filename).'"'."\r\r\n\n";
    				$message .= chunk_split(base64_encode(fread($f, filesize($filename))))."\r\n";
    			}
    
    		}
    
    		mail($to, $subject, $message, $header);
    	}

    Неужели в "PHP" нет более простого способа отправить письмо, кроме как собирать его руками?
    Ответить
    • Сложно что-ли? У каждого пхпшника должна быть своя заготовленная библиотека с полезными функциями, которую можно тягать в свои проекты.
      Ответить
      • Я думаю, такое должно быть у любого программиста, если только это не программист программ приветствия мира.
        Ответить
    • Есть готовые пакеты, но зачем же жить в мире без квадратных колес?
      Ответить

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

Где здесь C++, guest?!

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


    8