Меню

Что такое префикс имени таблицы

WordPress.org

Codex

Плагины: создание таблиц БД

Contents

  • 1 Создание таблиц в базе данных
    • 1.1 Префикс таблиц в базе данных
    • 1.2 Таблица уже существует?
    • 1.3 Создание или Обновление таблицы
    • 1.4 Добавление Исходных Данных
    • 1.5 Версия
    • 1.6 Функция в целом
  • 2 Вызов функции
  • 3 Добавление Функции Обновления
  • 4 Ресурсы

Если вы создаете плагины для WordPress, то наверняка вы сталкивались с необходимостью сохранить некоторые данные в базе данных WordPress. Существуют два типа данных, доступных для сохранения:

  • Установочная информация — опции пользователя. Они вводятся пользователем когда он (она) задает установки плагина во время первого пользования, и впоследствии больше не увеличиваются в размерах; например, в плагине, связанного с тегами, опции пользователя в отношении формата собрания тегов в боковой колонке.
    Установочная информация обычно сохраняется с использованием WordPress options mechanism.
  • Данные — информация которая добавляется пользователем по мере использования вашего плагина, обычно являющаяся расширенной информацией связанной с записями, категориями, загрузками и другими компонентами WordPress(например: плагины статистики, различные виды страниц, ссылки, и другие статистические данные связанные с каждой записью на вашем сайте).

Данные могут хранится в отдельной созданной MySQL таблице. Перед созданием совершенно новой таблицы, рассмотрите возможность сохранения данных Вашего плагина в WordPress’ Post Meta (ранее Поля, созданные пользователем). Post Meta — это предпочитаемый метод, пользуйтесь им когда это возможно или практично.

This article describes how to have your plugin automatically create a MySQL table to store its data. Note that as an alternative to following the steps here, you could have the plugin user run an install script when they install your plugin. Another approach would be to have the user execute an SQL query on their own, using something like phpMyAdmin. But neither of those options is very satisfactory, since a user could easily forget to run the install script or screw up the query (and they might not have phpMyAdmin available).

Мы рекомендуем следовать следующим шагам для автоматического создание вашим плагином таблицы в безе данных:

  1. Напишите PHP функцию , которая создаст таблицы.
  2. Убедитесь в том, что WordPress вызывает эту функцию , при установке плагина.
  3. Создайте функцию обновления , если новая версия вашего плагина использует другую структуру таблиц БД.

Создание таблиц в базе данных

Первым шагом в автоматическом создании таблицы в базе данных вашим плагином, является создание функции PHP (в вашем плагине) , которая добавит таблицу или таблицы в базу данных WordPress (в этой статье будем будем использовать jal_install для обозначения этой функции).

Префикс таблиц в базе данных

В файле wp-config.php, владелец сайта на WordPress может определить префикс таблиц в базе данных. По умолчанию, префикс имеет вид «wp_», но Вам следует проверить актуальное значение и использовать его для определения имени Вашей таблицы. Это значение, вы узнаете из переменной $wpdb->prefix. (Если вы программируете для версий, ранних чем WordPress 2.0, вы должны использовать глобальную переменную $table_prefix, которая является устаревшей для версий поздних 2.1).

К примеру, вы хотите создать таблицу с именем (prefix)liveshoutbox, тогда первые несколько строк вашей функции, которая создает таблицу, должны быть такими:

Таблица уже существует?

Убеждаемся в том, что созданная нами таблица успешно добавлена в базу данных. Выполняя проверку по if и SQL-запросу SHOW TABLES, просматриваем таблицы и ищем, в результате выдачи запроса, имя нашей таблицы:

Создание или Обновление таблицы

Следующий шаг — фактическое создание таблицы. Вместо того, чтобы напрямую делать SQL запрос, мы будем использовать функцию dbDelta из файла wp-admin/includes/upgrade.php (необходимо загрузить этот файл, так как он не подгружается по умолчанию). Функция dbDelta проверяет существующую структуру таблиц в БД, сравнивает ее с необходимой плагину структурой и, если это необходимо, вносит изменения в таблицы, (для примеров использования функции dbDelta смотри файл wp-admin/upgrade-schema.php). Необходимо заметить, что функция dbDelta «придирчива» к формату входных данных. Например:

  • В выражении SQL необходимо писать каждое поле в отдельной строке.
  • Необходимы два пробела между словами PRIMARY KEY и определением primary key.
  • Необходимо использовать ключевое слово KEY , а не его синоним INDEX . Так же, необходимо обозначить как минимум один KEY.

Ниже представлен пример правильного формата SQL выражения, которое создает или обновляет таблицу. Все что вам надо сделать, это изменить структуру таблицы на необходимую вам (значение переменной $sql):

Добавление Исходных Данных

Теперь Вам может потребоваться добавить данные в только что созданную таблицу. Сделать это можно так:

ВНИМАНИЕ: Даже если Вы сами определили переменные $welcome_name и $welcome_text в этой функции и знаете что они не содержат специальных SQL символов, хорошим тоном будет всегда обрабатывать переменную функцией $wpdb->escape перед передачей её в базу данных для предотвращения проблем безопасности и случайных ошибок. Вы можете использовать функцию $wpdb->prepare function syntax, или в данном случае, мы используем $wpdb->insert. Подробнее об использовании WPDB, смотрите Function_Reference/wpdb_Class.

Версия

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

Функция в целом

Эта функция завершена. Давайте посмотрим как она выглядит в целом. Обратите внимание, что номер версии теперь хранится в глобальной переменной.

Читайте также:  Понятие и состав бухгалтерской отчетности

Вызов функции

Теперь когда мы инициализировали определение функции, мы хотим убедиться, что WordPress вызывает функцию когда плагин активируется администратором WordPress. Чтобы сделать это мы воспользуемся хуком действия activate_. Если файл вашего плагина wp-content/plugins/plugindir/pluginfile.php, добавьте следующую строку в тело вашего плагина:

Добавление Функции Обновления

За время жизни вашего плагина, вы можете обнаружить, что вам нужно изменить структуру базы данных плагина в обновленной версии. Чтобы сделать это, вам понадобится создать код обновления в вашем плагине, который будет определять что была установлена новая версия и обновлять структуру базы данных. Простейший способ сделать это — добавить код в функцию jal_install которую мы только что создали.

Обратите внимание, что вы должны убедится в том, что функция вызывается. Так же оповестите пользователей вашего плагина, что они должны деактивировать плагин перед установкой новой версии и затем повторно его активировать после.

Давайте предположим что функция обновляющая базу данных с версии 1.0 до 1.1 расширяет поле URL до 100 символов вместо 55). Вам понадобится добавить следующие строки в конец вашей функции jal_install для проверки версии и обновления если это необходимо:

Вам также необходимо изменить глобальную переменную $jal_db_version в начале файла, и, естественно, код инициализации созданный выше для использования новой структуры таблицы.

Ресурсы

Для получения дополнительной информации по разработке плагинов посетите исчерпывающий список ресурсов. Вы также можете найти полезным данный пост из Списка рассылки wp-hackers : WordPress Hackers Mailing List: Answer to Plugin Requires Additional Tables

Источник

Как изменить префикс базы данных

Как изменить префикс базы данных

Таблицы базы данных Вордпресс сайта имеют по умолчанию префикс wp_ . Многие специалисты по безопасности рекомендуют изменить этот префикс для увеличения безопасности сайта. Нужно ли менять префикс, или это изменение лишь ненамного увеличит безопасность сайта?

Суть этого способа защиты в том, что изменение префикса поможет избежать исполнения SQL запросов к базе данных. Обычно хакботы используют стандартные запросы с префиксом wp_ в своих атаках, но если вы измените префикс базы данных на уникальный, то бот получит ошибку.

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

Чтобы изменить префикс БД вручную, надо сделать изменения в приложении phpMyAdmin при помощи SQL запросов, и изменить запись о префиксе в файле wp-config.php.

В плагинах безопасности префикс базы данных меняется в несколько кликов.

Зачем менять префикс базы данных

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

Существует 2 типа SQL внедрений. Обычное SQL внедрение — когда хакер получает возможность посылать команды базе данных и получать ответы от базы данных. Слепое SQL внедрение — когда хакер может посылать команды базе данных, но не получает ответов от нее.

В обоих случаях хакер может сделать SQL запрос к вашему сайту без вашего ведома. Если хакер может выполнить такой запрос, у него появится доступ к базе данных сайта, то есть он может изменить записи в базе данных.

После получения контроля над базой данных злоумышленники обычно меняют логин и пароль администратора. Администратор сайта больше не может войти в админку сайта, а хакеры продолжают делать с сайтом что хотят, от рассылки спама с этого сайта и кражи личной информации до заражения других сайтов и рассылки спама с них и кражи другой информации.

Аргумент Против

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

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

Например, второй запрос может запрашивать имена, содержащие usermeta или postmeta в названии. Эти имена являются именами двух стандартных таблиц Вордпресс. Поиск вернет полное имя таблицы вместе с новым префиксом таблицы.

Хотя может показаться, что нет смысла менять префикс базы данных, есть несколько аргументов с другой стороны.

Аргументы За

Изменение префикса рекомендовано в руководстве по увеличению безопасности в Кодексе Вордпресс.

Эта рекомендация попала туда после устранения разработчиками Вордпресс уязвимостей, связанных с SQL внедрениями.

Причина в том, что хакеры редко ищут уязвимости сайтов, посещая сайты в браузере вручную. Хакеры создают ботов, которые автоматически обходят сотни или тысячи сайтов и ищут в них известные уязвимости по имеющимся у них спискам уязвимостей, которые находятся в открытом доступе.

После того, как на сайте находится уязвимость, например такая, которая позволяет выполнять SQL запросы злоумышленника, боты взламывают такие сайты, отправляют сообщение хакеру и идут дальше.

Если вы измените префикс базы данных, боты получат ответ с ошибкой от базы данных, так как они запрограммированы создавать стандартные запросы, в котором содержится префикс wp_ . Если ваш сайт попадется такому боту, то бот получит ошибку и пойдет дальше на тот сайт, где база данных даст ответ на запрос с префиксом wp_ .

Читайте также:  Что будет если объединить все элементы таблицы менделеева

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

Сделайте бэкап

Так как вы будете работать с глубокими настройками базы данных и файлом wp-config.php, сделайте бэкап всего сайта и базы данных. Если что-то пойдет не так, вы сможете восстановить сохраненную версию.

1. Изменение в wp-config.php

Этот файл находится в корневой папке сайта, скачайте его на компьютер с помощью ftp-клиента или менеджера файлов на хостинге.

Откройте файл, найдите эту строку:

Измените wp_ на что-нибудь уникальное, но рекомендуется оставить нижнее подчеркивание в конце. Префикс может содержать цифры, буквы и знак подчеркивания, например, db14_ , fr23br17_ , a01_b01_ и так далее.

Сохраните файл и закачайте обратно на сервер. Если теперь вы попробуете зайти на сайт, он будет недоступен. Так и должно быть, потому что теперь данные в базе данных не соответствуют данным в файле wp-config.php.

Чтобы изменить префиксы в базе данных переходим к следующему шагу:

2. Изменения в базе данных

Зайдите на хостинг и откройте базу данных.

В базе данных нужно поменять префиксы главных таблиц, это делается с помощью SQL запросов на вкладке SQL. Структура запроса для изменения всех таблиц такая:

Замените название-таблицы на нужное название таблицы, и новый-префикс на ваш новый префикс, который вы сохранили в файле wp-config.php.

1. Для одиночной установки Вордпресс измените префиксы в стандартных таблицах Вордпресс:

Можете скопировать и выполнить сразу все запросы, не забудьте заменить новый-префикс на ваш новый префикс.

2. Для мультисайт установки добавьте эти префиксы:

Измените новый-префикс на новый префикс.

Также измените эти таблицы:

Замените # на ID вашего подсайта. Например, запрос к таблице wp_commentmeta подсайта с ID 2 будет wp_2_commentmeta

Кроме этих запросов нужно изменить префикс в таблицах, которые создали установленные плагины, и таблицы плагинов, которые были созданы для подсайтов в Мультисайт установке. Посмотрите в левой колонке какие еще таблицы остались со старым префиксом, измените их вручную тем же способом.

Измените оставшиеся префиксы вручную

3. Изменения внутри таблиц

После того, как вы изменили названия таблиц, нужно изменить некоторые записи в таблицах options и usermeta .

Записи в таблице Options

В этой таблице надо изменить несколько записей. Для облегчения поиска можно использовать поисковый запрос. Замените новый-префикс на ваш новый префикс:

Поиск должен показать все записи, которые соответствуют запросу. Для редактирования кликните два раза или нажмите Карандаш на каждой записи.

Записи в таблице Usermeta

Как в таблице Options, в таблице Usermeta надо заменить несколько записей. Чтобы не искать их вручную, можно использовать запрос:

Замените новый-префикс на новый префикс, который вы добавили в wp-config.php.

После этого сайт должен начать работать с новым префиксом базы данных.

Решение проблем

Если вы получили ошибку прав доступа, или ошибку установления соединения с базой данных, это значит, что вы забыли переименовать одну из таблиц или префикс записи. Вернитесь в phpMyAdmin и найдите таблицу или запись, которую вы пропустили.

Некоторые плагины предполагают, что префикс базы данных стандартный, и если вы уверены, что переименовали все таблицы и плагины, попробуйте деактивировать все плагины, и включать их по одному, чтобы найти, какой из них делает сайт недоступным. Удалите плагин или найдите ему альтернативу.

Плагины

Если вы не хотите делать это вручную, можно сделать это с помощью одного из плагинов безопасности. Вы можете использовать маленький плагин, который делает только эту работу, например, Brozzme DB Prefix, или большой плагин, где эта функция находится среди многих других, например All in One WordPress Security.

Перед изменением префикса сделайте бэкап сайта и базы данных.

Префикс базы данных в Вордпресс в плагине All in One WordPress Security

Поставьте галочку, чтобы плагин сгенерировал новый префикс, или придумайте свой вариант. Плагин сделает изменения в базе данных и в файле wp-config.

Префикс базы данных в Вордпресс в плагине All in One WordPress Security

Префикс базы данных изменен на xvi0f_ . Изменены префиксы 34 таблиц и сделаны изменения в таблицах options и usermeta. Процесс такой же, как в ручном режиме, но занимает меньше секунды.

В других плагинах изменение префикса базы данных делается аналогично.

Сделайте бэкап

После того, как вы изменили префикс базы данных вручную или автоматически, сделайте еще один бэкап.

Заключение

Изменение префикса базы данных помогает избежать только один вид автоматических атак. Чтобы защитить сайт от других атак, установите какой-нибудь плагин безопасности и читайте Руководство по безопасности Вордпресс.

Читайте также:

Надеюсь, статья была полезна. Оставляйте комментарии.

Источник



Что такое префикс имени таблицы

В версии Opencart 2.3 есть такая проблема как, когда вы добавляете перевод на сайт и при выборе другого языка в адресную строку не добавляется код выбранного языка.
Что для некоторых сайтов это плохо по многим причинам.

Данный модификатор исправляет данную причину. Модификатор тестировался успешно работал на Opencart 2.3.x и на OpencartPro 2.3.x
Для работы модификатора нужен SeoPro, поскольку модификатор вносит изменения именно в нем.
Установить модификатор очень легко, устанавливаете его через админку, через установка дополнений или просто скинуть в папу system/ вашего сайта, после чего обновите модификаторы в админке, в пункте модификаторы

Читайте также:  Способы и методы как убрать пятна разнообразного происхождения на ткани

Причина по которым модификатор может не работает после установки, это модификатор не находит указанных путей, прописанных в модификаторе.

Sunser seo lang — код языка в url
В версии Opencart 2.3 есть такая проблема как, когда вы добавляете перевод на сайт и при выборе другого языка в адресную строку не добавляется код выбранного языка.
Что для некоторых сайтов это плохо по многим причинам.

Данный модификатор исправляет данную причину. Модификатор тестировался успешно работал на Opencart 2.3.x и на OpencartPro 2.3.x
Для работы модификатора нужен SeoPro, поскольку модификатор вносит изменения именно в нем.
Установить модификатор очень легко, устанавливаете его через админку, через установка дополнений или просто скинуть в папу system/ вашего сайта, после чего обновите модификаторы в админке, в пункте модификаторы

Источник

Что такое префикс таблицы?

Что такое префикс таблицы и каковы его преимущества и недостатки? Это связано с MySQL.

ОТВЕТЫ

Ответ 1

Это часто используется для различения различных установок одного и того же script друг от друга. Например, скажем, у вас есть две установки Joomla с различным контентом на вашем сервере, но только одна база данных MySQL.

Теперь по очевидным причинам обе установки Joomla не могут использовать одни и те же таблицы базы данных, так как это приведет к тому, что обе установки отображают одно и то же содержимое. И вот где префикс пинает.

Используя разные префиксы таблиц, вы можете позволить Joomla Installation # 1 знать, что предполагается использовать всю таблицу с префиксом JOS_, а Joomla Installation # 2 должна использовать все таблицы с префиксом JOS2 _

Ответ 2

Некоторые люди выступают за tbl или tbl_ (например, tbl_MyTable или tblMyTable), в то время как другие идут с суффиксом, например MyTable_T.

Лично я избегаю префиксов/суффиксов. Я могу заменить в представлении вместо таблицы, если схема меняется со временем, поэтому я не различаю между этими двумя типами объектов.

Самое главное, что у вас есть рекомендации по именованию, задокументированные в вашей команде, и вы все придерживаетесь одного и того же набора рекомендаций для согласованности.

Ответ 3

Таблицы не требуют префиксов.

Это зависит только от вас.

Однако мы префиксные таблицы относятся к MODULES в приложении, к которому они принадлежат, просто для более удобного группирования таблиц.

Ответ 4

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

Однако убедитесь, что табличные префиксы выглядят как еще один уровень безопасности, а не как ваш единственный метод безопасности. Вы все равно должны принимать другие меры безопасности для предотвращения внедрения SQL и других подобных угроз. Например, в зависимости от того, как настроен ваш код, хакер может по-прежнему выполнять команду «показать таблицы» через SQL-инъекцию, чтобы получить имена таблиц базы данных.

Ответ 5

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

например. t_user или t_order теперь возможны.

Ответ 6

Если у вас сложный сайт и структура базы данных, префиксы таблиц могут помочь предотвратить конфликты имен в базе данных.

Вы часто видите префиксы таблиц в ситуациях, где:

Несколько сценариев объединяются вместе на один веб-сайт, а готовый веб-сайт должен обмениваться данными, но имена таблиц конфликтуют без префикса, уникального для каждого script.

Вы добавляете функциональность к script, которую вы приобрели, и хотите различать таблицы, родные этим script, и новые таблицы, которые вы вручную создаете. Таким образом, если вы создадите новую таблицу, она не будет конфликтовать с будущими обновлениями базы script, так как она имеет другой префикс таблицы.

У вас есть план хостинга, который предоставляет только одну базу данных и вы хотите использовать эту базу данных для обслуживания нескольких сценариев. (Это не рекомендуется по разным причинам, но я видел, как пользователи это делают.)

Когда вы пишете script с нуля, префиксы таблиц обычно не нужны, поскольку вы контролируете все аспекты структуры базы данных. Это когда вы начинаете интегрировать несколько скриптов вместе, что становится полезным, а иногда даже необходимым. Он позволяет создавать уникальные представления данных и присоединяться к таблицам, а также к нескольким сценариям, не беспокоясь о конфликтах имен в базе данных.

Ответ 7

Это может помочь различать таблицы и представления в зависимости от того, что означает ваше соглашение об именах.

Недостатком является то, что вы можете быть ограничены по отношению к названию таблицы. Для этого Oracle имеет ограничение до 30 символов. Если вы используете «Tbl_» в качестве префикса, вы автоматически теряете 4 символа. Это может быть проблемой.

Источник

Adblock
detector