За последние 24 часа нас посетили 22664 программиста и 1280 роботов. Сейчас ищут 748 программистов ...

PDO Console

Тема в разделе "PHP и базы данных", создана пользователем ibnteo, 9 фев 2023.

Метки:
  1. ibnteo

    ibnteo Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    34
    Симпатии:
    1
    Сделал для себя веб-консоль для работы с базами данных из браузера, сделано по аналогии со встроенной веб-консолью в ClickHouse, делюсь с вами.

    [​IMG]

    Для установки достаточно лишь скопировать на свой сервер один файл pdoconsole.php (желательно переименовать файл и изменить ключ шифрования в нём), все компоненты загружаются в теле страницы в одном http-запросе. SQL-запросы отправляются через POST запрос AJAX (используется библиотека HTMX).

    Закладок в коде нет, данные не отправляются дальше вашего сервера, но проверьте обязательно, кода немного, большую часть его занимают библиотеки для фронтенда (bootstrap.min.css и htmx.min.js), вставлены стандартные их сборки. Если найдёте ошибки в коде или просчёты с безопасностью, сообщите мне, пожалуйста.

    Работает с любыми базами данных, которые поддерживаются библиотекой PDO.

    Данные подключения к базе данных шифруются (AES128) и хранятся в Cookie в течении года (можно изменить).

    Запускаемые запросы хранятся во временном sessionStorage браузера, их можно перелистывать стрелками, уничтожаются с закрытием вкладки браузера.

    Можно использовать для работы с разными базами данных через параметр ?prefix=<имя>

    При вводе запроса, в ссылку браузера добавляется код запроса в base64 кодировке после #, так можно передавать запросы другим людям, параметры подключения к базе не передаются, их надо заполнить вручную.

    Можно переключиться в тёмную тему, эта настройка сохраняется в localStorage браузера.

    Вёрстка адаптивная, можно работать с мобильных устройств.

    Пока что ещё нет редактирования данных таблиц, лишь просмотр, при нажатии на номер строки столбцы разворачиваются в строки.

    Исходный код: https://github.com/ibnteo/pdoconsole
     
    don.bidon нравится это.
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    Тег или ветку с версией сделать не забудь, коли начал раздавать наружу. И минимальную версию PHP в README.md указать бы неплохо.
     
  3. ibnteo

    ibnteo Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    34
    Симпатии:
    1
    На минимальную версию ещё не тестировал.
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    на 5.4/5.5 валится, не умеело оно в "??" )
     
    ibnteo нравится это.
  5. ibnteo

    ibnteo Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    34
    Симпатии:
    1
    В принципе можно заменить на isset(), по идее может же использоваться на старых серверах.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Угу. Хотя многие жить не могут без ?? :)

    У нас для кода общего назначения в минималках в основном все еще 5.4 :) Там кроме ?: (тернарника без средней части) ничего «нового» нет.

    И по идее нужно заранее думать, примерно подо что пишешь ;) Пятую линейку, конечно, можно не поддерживать, если нет такой спец. цели. А то могут быть «танцы с бубном» даже на вещах вроде password_hash/password_verify, хотя это, насколько помню, еще 5.5, но не 5.4! У нас часто при отсутствии этих ф-ций подключают либу с одноименными ф-циями.
    --- Добавлено ---
    Кстати, не замечал, чтобы даже для «закрытого» кода, который крутится только на своих серверах, стремились обязательно воткнуть все последние новинки. Вроде понятно, что восьмой пых значительно шустрее и что он в основном используется на своих серверах, а пишут все равно как будто под семерку. Может, в этом есть какое-то тайное знание? :D
     
    ibnteo нравится это.
  7. ibnteo

    ibnteo Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    34
    Симпатии:
    1
    В PDO Console используются функции openssl_encrypt и openssl_decrypt, они поддерживаются с PHP 5.3.0, так что можно сделать поддержку начиная с этой версии PHP, сейчас скрипт работает начиная с PHP 7.0
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Ну, ?: тоже вроде поддерживается еще с 5.3, но это днище совсем. У нас не просто так за основу взяли 5.4. Между этими версиями существенная разница. Короче в 5.4 более-менее современный синтаксис.
    --- Добавлено ---
    P.S. Но если ничЁ не мешает опустить планку до 5.3, то гуд. Хотя я сомневаюсь, что вы используете array() и т.п. :)
     
    ibnteo нравится это.
  9. ibnteo

    ibnteo Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    34
    Симпатии:
    1
    Обновил до версии 2.1, теперь поддерживается PHP от версии 5.3.3, при необходимости работы в 5.3.0, можно заменить функцию openssl_cipher_iv_length('AES128') на значение 16. Проверил работу в PHP 5.6, 7.0, 8.1
    --- Добавлено ---
    Ах да, ещё же [] использую вместо array(), они с какой версии появились?
     
  10. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    Ниже 5.4 смысла не вижу, с неё [] и пространства имён. password_hash/password_verify с 5.5 добавлены, самому актуально. Если кто ковырял ShopCMS, там в какой-то лохматой версии вообще пароли base64 "кодировались", реальные школьники писали ))).
     
    ibnteo нравится это.
  11. ibnteo

    ibnteo Активный пользователь

    С нами с:
    30 сен 2008
    Сообщения:
    34
    Симпатии:
    1
    Обновил до версии 2.2, добавлено листание истории запросов по кнопкам Alt+Left/Right, в pgsql и sqlite теперь есть замена запросов show databases, show tables, show fields|columns from|in, describe table, на аналогичные в этих базах данных.