Mysqli_real_escape_string – это встроенная функция PHP, которая используется для управления нежелательными и опасными символами. В этой статье мы обсудим с помощью примера, что такое функция mysqli_real_escape_string и как ее можно использовать для защиты базы данных.
По определению mysqli_real_escape_string() позволяет специальным символам в строке перемещаться в базу данных с помощью запроса SQL, принимая во внимание текущий набор символов установленного соединения. Проще говоря, эта функция позволяет рассматривать специальные символы как часть строки и сохранять в базе данных как строку. Хакеры в основном используют специальные символы, такие как ?,’,^,%, and !, Для взлома базы данных или неправильного использования данных базы данных, поэтому для предотвращения этого действия используется эта функция, которая заставляет PHP считаться только строка. Общий синтаксис этой функции следующий:
mysqli_real_escape_string ( connection_variable, string_variable )
В общем синтаксисе connection_variable является результатом функции mysqli_connect(), хранящейся в любой переменной, а string_variable – это переменная, которая должна проходить через эту функцию для экранирования символов. Например, мы создаем код PHP, в котором сначала мы устанавливаем соединение PHP с базой данных с помощью функции mysqli_connect() с параметрами localhost; база данных находится на той же машине, имя пользователя: andrey, пароль: qwer1234 и имя базы данных: Organization. Затем мы применили условие if-else, чтобы проверить, успешно ли установлено соединение, с помощью функции mysqli_real_escape_string (connection_variable, string_variable). После обеспечения успешного установления соединения мы объявим переменную с именем Firstname и присвоим некоторую строку, которая включает некоторый специальный символ, а затем вставим ее в базу данных AndreyEx.
<? php // Установление соединения с базами данных $connection = mysqli_connect("localhost","andrey","Organization"); // проверка статуса подключения if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " .mysqli_connect_error(); exit(); } // объявляем переменную $firstname2 ="John'o Alexander"; // вставка в базу данных $sql="INSERT INTO AndreyEx (Emp_name) VALUES ('$firstname2')"); // выполнение запросов mysql $r = mysqli_query($connection, "INSERT into AndreyEx VALUES ('firstname2')"); if(!$r){ print("Произошла ошибка\n"); } else{ print("Запись успешно вставлена\n"); } //соединение закрыто mysqli_close($connection); ?>
Результатом этого кода должна быть ошибка, потому что строка содержит специальный символ ‘ между ними. Чтобы проверить вывод, откройте терминал в Ubuntu и запустите этот файл PHP с помощью команды php с именем файла, в котором сохранен код.
$ php file1.php
Произошла ошибка, чтобы исправить эту ошибку, мы воспользуемся mysqli_real_escape_string() и сохраним строку в базе данных.
<? php // Установление соединения с базами данных $connection = mysqli_connect("localhost","andrey","Organization"); // проверка статуса подключения if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " .mysqli_connect_error(); exit(); } // объявляем переменную $firstname2 ="John'o Alexander"; //pass from the mysqli_real_escape_string() $firstname = mysqli_real_escape_string($connection,$firstname2); //вставка в базу данных $sql="INSERT INTO AndreyEx (Emp_name) VALUES ( '$firstname' )"); //выполнение запроса в MySQL $r = mysqli_query($connection, "INSERT into AndreyEx VALUES ('firstname')"); if(!$r){ print("Произошла ошибка\n"); } else{ print("Запись успешно вставлена\n"); } //соединение закрыто mysqli_close($connection); ?>
Снова запускаем файл в терминале.
$ php file1.php
Выход успешен. Чтобы проверить это, мы перейдем к MySQL и выполним следующую команду, чтобы проверить, вставлена ли строка в базу данных или нет.
SELECT * FROM AndreyEx;
Защита файлов – первоочередная задача каждого, поскольку они могут содержать некоторые конфиденциальные данные. В основном при взломе специальные символы используются для подключения к базе данных для получения ее данных в неэтичных целях. Чтобы предотвратить это, мы можем провести различные проверки безопасности данных, прежде чем они будут вставлены в базу данных. В этой статье мы обсудили одну из встроенных функций PHP, которая используется для обеспечения безопасности таким образом, чтобы никакие специальные символы не взаимодействовали в базе данных, чтобы нанести ей вред. Вместо этого эта функция считала ее нормальной строкой и вставляла строку в базу данных.