Современные и безопасные подключения к базам данных с PHP

{title}

Если есть что-то, что может повредить приложение, когда мы не используем соответствующие ресурсы, чтобы сделать его более быстрым и безопасным, есть много способов повысить скорость и безопасность приложений, это может быть использование более совершенных шаблонов разработки, повышение безопасности на серверах, и т.д.
Однако есть момент, когда много раз мы не перестаем думать, и именно в этом случае инструмент, который дает нам язык, является лучшим для работы, которую мы делаем. Это часто случается в PHP, хотя уже много лет с предупреждением об отсутствии функции mysql_connect () для установления связей с базами данных, многие разработчики, похоже, не осознают большую ошибку, которую они совершают, используя ее.

Фон


PHP имеет встроенную поддержку большого количества механизмов СУБД, существующих на рынке, однако его интеграция с MySQL является почти обязательной отправной точкой для большинства пользователей.
mysql_connect ()

Начиная с версии PHP 5.5, классическая функция mysql_connect () устарела, то есть устарела, и настоятельно рекомендуется не использовать ее, поскольку в будущих версиях языка она не будет включена.
Альтернатива установлению соединения проходит через два элемента. Первый - использовать одну и ту же языковую структуру для установления соединений или использовать новую библиотеку для соединения с MySQL . Здесь могут возникнуть первые вопросы, зачем просто думать о MySQL ? Ну, ответ прост, это начало, это самое простое и наиболее полезное, что мы можем объяснить изначально, если мы знаем эту базу, мы можем экстраполировать на другие двигатели и драйверы.

PHP Data Object


Первой альтернативой подключения к базе данных является использование собственного объекта данных на языке PHP Data Object или его аббревиатуры PDO . Это не что иное, как большое расширение, написанное на языке C, которое позволяет нам устанавливать соединения с различными типами СУБД и имеет стандартные методы, которые дают нам возможность писать кроссплатформенные приложения, то есть нам не нужно ничего менять синтаксис, если мы изменим движок базы данных.
В начале мы говорили, что сосредоточимся на MySQL, однако, если мы установим соединение через PDO, то, что мы делаем, мы можем применить к другим движкам. Для этого нам нужно только активировать или включить драйверы для этих движков и активировать их в файле php.ini сервера.

Установите соединение с PDO


Для подключения к базе данных мы должны только установить связь, используя соответствующий метод для этого, в PDO соединение достигается с тремя основными параметрами: именем сервера базы данных, именем пользователя и его паролем.
Единственный параметр из этих трех, который нуждается в пояснении, - это параметр сервера базы данных, в прошлом нам приходилось выбирать базу данных через определенную функцию после установления соединения, в этом случае в той же строке мы это сделаем, поэтому строка имени нашего сервера будет выглядеть так:
 mysql: host = hostname; dbname = DBname 

Мы видим, что изначально указываем движок, в этом случае mysql, затем с помощью host мы сообщим вам, что это за сервер, здесь это может быть IP или localhost, если сервер локальный, наконец, с помощью dbname мы передаем имя базы данных, которой Мы хотим подключиться. На следующем рисунке мы увидим, как оставить код для подключения с помощью PDO :

{title}

Запустить запросы


Поскольку мы знаем начальный шаг, а именно, как подключиться, теперь мы должны узнать, как мы можем выполнять запросы, обычно в прошлом, которые мы использовали для непосредственного выполнения запроса с его параметрами, эта практика вовсе не безопасна, так как делает нас склонными к атакам типа SQL-инъекции, PDO позволяет нам использовать так называемые подготовленные этапы, которые представляют собой не что иное, как выполнение запроса параметризованным способом, поэтому сама библиотека выполняет работу по отладке и менее подвержена атакам. Давайте посмотрим, как выполнить простой запрос, а затем его эквивалент с помощью Prepared Stament .
В этом простом запросе мы будем предполагать, что у нас есть таблица в нашей базе данных, называемая автором, которая получает код автора, а затем имя, которое, конечно, является демонстративным, не является примером хорошей таблицы, нас интересует только то, как подключение от PDO .
На рисунке мы видим, что мы вызываем метод query () из объекта, созданного с помощью строки подключения PDO, затем мы пишем наш запрос без особых проблем:

$config[ads_text5] not found

{title}


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

{title}

$config[ads_text5] not found
На первый взгляд это может показаться несколько сложным и неоптимальным, однако, если мы проанализируем, мы увидим, что сначала мы устанавливаем запрос для выполнения, затем мы создаем массив с параметрами, которые получит наш запрос, в случае примера мы получаем код автора и его имя, наконец, мы выполняем запрос и передаем массив параметров.

Получите результаты запроса


Если мы хотим проконсультироваться, как только мы уже вставили некоторые значения в нашу базу данных, это очень просто, нам нужно сделать это только с помощью запроса SELECT, это позволит нам выводить записи, в прошлом мы зависели от таких функций, как mysql_fetch_array () или mysql_fetch_assoc (), которые после употребления они не смогли снова управлять своими результатами.
С помощью PDO мы будем получать данные непосредственно от объекта, поэтому мы всегда будем иметь их в наличии во время выполнения, давайте посмотрим в следующем примере, как это будет сделано:

$config[ads_text6] not found

{title}


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

MySQLi, альтернатива


Поскольку MySQL является наиболее популярным ядром базы данных для интеграции с PHP, существует также альтернатива, и именно MySQLi является не чем иным, как объектно-ориентированным интерфейсом. Его способ работы очень похож на PDO, но изменения в том, что он предназначен только для этого популярного механизма баз данных, поэтому кросс-платформенное преобразование будет невозможно.
Его цепочка соединений немного менее сложна, поскольку она делит имя сервера на хосте и базу данных для использования в двух разных параметрах, в дополнение к имени и паролю пользователя, давайте посмотрим, как это выглядит:
 $ objConex = новый mysqli (имя хоста, имя пользователя, пароль, имя базы данных); 

Давайте посмотрим в следующем примере, как мы устанавливаем соединение с использованием MySQLi и как мы можем выполнить простую вставку данных:

{title}


Отметим, что с PDO есть сходство и с использованием метода query (), однако это будет работать только для MySQL .

Получать данные из запроса


Теперь мы будем получать и повторять данные, которые мы можем получить из запроса, для этого мы будем использовать тот же метод query (), а затем метод fetch_assoc () для получения результатов:

{title}


Самое интересное, что мы замечаем, это то, что мы используем метод close (), он закрывает текущее соединение и очищает буфер, чтобы оптимизировать использование ресурсов сервера.
важно

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

  • 0