Интерфейс команд SQL
Для передачи команд SQL в базу данных нужен интерфейс, который мы просто делаем с HTML-страницей, содержащей форму.
Более прямым решением было бы использование PHPMyAdmin, который также позволяет передавать запросы, если он установлен. Но нас это ничему не учит по поводу использования SQL. Поскольку эта базовая модель интерфейса может быть постепенно расширена для создания полного интерфейса управления базой данных.
Форма интерфейса
Текстовое поле и кнопка отправки сценария PHP образуют основную часть интерфейса:
<form id="sql" name="sql" method="post" action="sql.php">
<textarea name="query" cols="80" rows="4"></textarea>
<input type="submit" name="Submit" value="Envoyer" />
</form>
Сценарий PHP извлекает содержимое переменной query:
if(!isset($_POST)) die("Acces direct interdit");
include("config.php");
$requete = $_POST['commande'];
$results = mysqli_query($DB_ID, $requete)
or die("$commande<br>".mysql_error());
В пяти строках сценарий...
- Запрещает прямой доступ.
- Загружает файл конфигурации, содержащий имена и пароли (подробно об этом говорится ниже).
- Получение команды, отправленной формой.
- Выполняет запрос.
- При сбое отображается ошибка.
Секретный код
Чтобы запретить доступ к нашей базе данных неизгладимым посетителям, она будет защищена секретным кодом. Можно использовать пароль базы данных или создать специальный код.
Этот второй вариант позволяет нам кодировать его по MD5, что является лучшим выбором.
Создать код
Функция md5 PHP генерирует зашифрованный код из пароля или фразы любой длины.
$md5code = "code";
echo md5($x);
Код, введенный с помощью формы, затем будет протестирован таким же образом:
$code = $_POST['code'];
if(md5($code) != $md5code)
die("Code incorrect");
PHP-скрипт buildmd5.php включен в архив, чтобы создать зашифрованный код и избежать его копирования. Изменить этот сценарий, чтобы назначить секретный код переменной кода.
Запуская скрипт, он генерирует файл code.php, содержащий переменную $ md5code, присвоенную с зашифрованным кодом.
Включить эту строку в сценарий command.php, обрабатывающий SQL-запрос.
Сценарий buildmd5.php, очевидно, используется локально и не должен подключаться к форме.
Показать результат
Тип результата зависит от команды.
Если запрос запрашивает базу данных, функция mysql_fetch_array возвращает столбцы и значения таблицы. И мы помещаем его в цикл, чтобы показать каждую строку таблицы:
while($arr = mysqli_fetch_array($results)) // chaque tableau correspond à une ligne de la table
{
foreach($arr as $k => $v)
{
if(intval($k) != 0 || $k == '0') continue;
echo "$k : $v <br>\n";
}
echo "<br>";
}
Файл конфигурации
В качестве примера базы данных WordPress файл конфигурации будет иметь следующие строки со значениями для каждой установки:
define('DB_NAME', 'mabase');
define('DB_USER', 'utilisateur');
define('DB_PASSWORD', '12345');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
Из этой конфигурации можно открыть доступ к хосту и выбрать базу данных, что необходимо перед любым запросом:
include("wp-config.php");
$DB_ID = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
or die("MySQL database '".DB_NAME."' not accessible.<br>\n");
mysqli_select_db($DB_ID, DB_NAME)
or die("Enable to select '".DB_NAME."' database<br>\n");
Этот код помещается в скрипт command.php.
С этого момента ты получаешь простой и прямой интерфейс к базе данных своего сайта или блога, после того, как ты выложишь в Интернет страницу API и скрипт command.php, извлеченные из архива.
Пример запроса
Показать последние 5 билетов, добавленных в Worpdress:
SELECT * FROM wp_posts WHERE (post_type = 'post') ORDER BY post_date DESC LIMIT 5
Столик постов специфичен для Wordpress. Префикс wp _ может быть заменен значением, заданным переменной $ table _ prefix в wp-ef.php.
Этот запрос отображает содержимое последних билетов с изображениями и видео.