Чтение онлайн

на главную - закладки

Жанры

MySQL 5.0. Библиотека программиста

Гольцман Виктор

Шрифт:

mysql_query(“INSERT INTO Customers (name,phone,address)

VALUES

(\'”.$name.”\',\'”.$phone.”\',\'”.$address.”\')”);

приведет к попытке выполнения некорректной SQL-команды

INSERT INTO Customers

(name,phone,address)

VALUES (\'д\'Артаньян\',\'Телефон\',\'Адрес\');

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

mysql_real_escape_string(«<Строка>»[, <Указатель на соединение>]);

Функция mysql_real_escape_string экранирует строку, полученную в качестве аргумента, то есть перед каждым специальным символом в этой строке (например, перед одинарной кавычкой) помещает обратную косую черту. Например, если в качестве аргумента передана строка д\'Артаньян, то функция возвращает значение

д\\'Артаньян. Таким образом, при вызове PHP-функции

mysql_query(“INSERT INTO Customers (name,phone,address)

VALUES

(\'”.mysql_real_escape_string($name).”\',

\'”.mysql_real_escape_string($phone).”\',

\'”.mysql_real_escape_string($address).”\')”);

будет выполнена корректная SQL-команда

INSERT INTO Customers

(name,phone,address)

VALUES (\'д\\'Артаньян\',\'Телефон\',\'Адрес\');

Кроме того, в ряде случаев функция mysql_real_escape_string позволяет обезопасить PHP-приложение от SQL-инъекций, то есть предотвратить выполнение SQL-команд, которые недобросовестный пользователь может ввести в текстовые поля на веб-странице.

Исправим сценарий save.php, добавив вызов функции mysql_real_escape_string (листинг 4.9).

Листинг 4.9. Сохранение данных в базе

<html>

<head>

<title>Работа с MySQL</title>

</head>

<body>

<?php

//Отключаем вывод системных сообщений об ошибках

error_reporting(0);

//Получаем данные из формы input.php

$phone=$_POST[“CustomerPhone”];

//Если номер телефона не введен, то связаться с клиентом невозможно.

//Предлагаем клиенту вернуться к заполнению формы

if(empty($phone) or ($phone == «(495)»))

{

print “<h3>Пожалуйста, введите номер телефона</h3>”;

print “<input type=\'button\' value=\'Вернуться к редактированию данных\'

onClick=\'history.go(-1)\'”;

}

//Если номер телефона введен, продолжаем обработку данных

else

{

//Получаем из формы имя и адрес клиента

$name=$_POST[«CustomerName»];

$address=$_POST[«CustomerAddress»];

//Соединяемся с сервером MySQL

$connection = mysql_connect(«localhost»,»username»,»userpassword»);

if(!$connection) die(“Ошибка доступа к базе данных.

Приносим свои извинения”);

//Выбираем базу данных SalesDept (Отдел продаж)

//В случае ошибки формируем сообщение, записываем его в файл

//и отправляем по электронной почте

if(!mysql_select_db(“SalesDept”))

{

$err_message=date(«Y.m.d H:i:s»).»

«.mysql_errno.» «.mysql_error.»\r\n»;

error_log($err_message,3,»/mysqlerror.log»);

error_log($err_message,1,»admin@somedomain.ru»);

die(“Ошибка доступа к базе данных. Приносим свои извинения”);

}

//Устанавливаем кодировку CP-1251

mysql_query(«SET NAMES cp1251»);

//Записываем данные о заказчике в таблицу Customers (Клиенты)

$qresult = mysql_query(«INSERT INTO Customers (name,phone,address)

VALUES

(\'».mysql_real_escape_string($name).»\',

\'».mysql_real_escape_string($phone).»\',

\'».mysql_real_escape_string($address).»\')»);

//Проверяем результат выполнения команды; в случае ошибки формируем //

сообщение, записываем его в файл и отправляем по электронной почте

if(!$qresult)

{

$err_message=date(«Y.m.d H:i:s»).»

«.mysql_errno.»

«.mysql_error.»\r\n»;

error_log($err_message,3,»/mysqlerror.log»);

error_log($err_message,1,»admin@somedomain.ru»);

die(“Ошибка при сохранении данных. Приносим свои извинения”);

}

print “<h3>Поздравляем! Регистрация завершена успешно</h3>”;

}

?>

</body>

</html>

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

Итоги

В разделе 4.1 «Интерфейс с PHP» вы познакомились с примерами PHP-приложений, использующих базу данных MySQL. Все они имеют сходную структуру:

• подключение к серверу MySQL;

• выбор базы данных;

• установка кодировки;

• выполнение SQL-команды (ввод, изменение или получение данных);

• обработка ошибки.

При этом мы рассмотрели только самые необходимые для взаимодействия с MySQL функции языка PHP. Полный список этих функций вы можете найти в Руководстве по PHP на странице http://www.php.net/manual/ru/ref.mysql.php.

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

4.2. Интерфейс с Perl

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

Выбор платформы для развертывания Perl-приложения аналогичен выбору платформы для PHP-приложения: вы можете воспользоваться хостингом с поддержкой Perl и MySQL либо установить на своем компьютере веб-сервер Apache и интерпретатор языка Perl. При этом все замечания и рекомендации из подраздела «Выбор платформы» остаются в силе.

В последующих примерах мы будем использовать пакет XAMPP, установку которого мы описывали в подразделе «Установка пакета XAMPP». Кроме того, нам потребуются дополнительные модули Perl DBI (Database Interface – интерфейс к базе данных) и Perl CGI (Common Gateway Interface – стандартный интерфейс между сценарием и веб-сервером). Об их установке вы узнаете из следующего подраздела.

Установка дополнительных модулей Perl

Чтобы установить модули Perl DBI и Perl CGI, выполните следующие действия.

1. Скачайте дистрибутив пакета Perl Add-Ons. Для этого на веб-страниценайдите раздел XAMPP for Windows Add-Ons и в подразделе Perl щелкните на ссылке Installer.

2. После загрузки файла xampp-win32-perl-addon-xxx-xxx-installer. exe запустите его, дважды щелкнув на его значке.

3. Выберите язык установки Russian (рис. 4.15) и нажмите кнопку OK.

Рис. 4.15. Выбор языка установки

4. В начальном окне мастера установки (рис. 4.16) нажмите кнопку Далее.

Рис. 4.16. Начальное окно мастера установки

5. В окне выбора папки установки (рис. 4.17) по умолчанию предлагается корневая папка XAMPP. Ничего не меняя, нажмите кнопку Далее.

Рис. 4.17. Выбор папки установки

6. После окончания установки нажмите кнопку Готово (рис. 4.18).

Рис. 4.18. Завершение установки

Итак, дополнительные модули Perl установлены. Теперь мы можем приступить к созданию приложений Perl.

Тестирование Perl

Чтобы проверить корректность функционирования интерпретатора Perl, создайте простейшее Perl-приложение. Для этого выполните следующие действия.

1. Запустите стандартную программу Windows Блокнот (Пуск → Все программы → Стандартные → Блокнот).

2. В окне программы Блокнот введите следующий код (рис. 4.19):

#!»C:\Program Files\xampp\perl\bin\perl.exe»

print «Content-type: text/html; charset=windows-1251\n\n»;

print “Работа с MySQL”;

Рис. 4.19. Простейшее Perl-приложение

...

Внимание!

В первой строке любого сценария Perl после символов #! необходимо указать путь к интерпретатору Perl: «<Путь к корневой папке XAMPP>\perl\bin\perl.exe». Вывод текста или HTML-кода нужно предварять строкой print «Content-type: text/html; charsert = windows-1251\n\n»;, которая указывает тип выводимой информации.

3. Для сохранения файла нажмите комбинацию клавиш Ctrl+S. В стандартном окне Windows Сохранить как откройте корневую папку XAMPP, а в ней – папку cgi-bin. Введите имя файла: test.pl и нажмите кнопку Сохранить.

Поделиться:
Популярные книги

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

Маверик

Астахов Евгений Евгеньевич
4. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Маверик

Измена. Он все еще любит!

Скай Рин
Любовные романы:
современные любовные романы
6.00
рейтинг книги
Измена. Он все еще любит!

Адепт: Обучение. Каникулы [СИ]

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.15
рейтинг книги
Адепт: Обучение. Каникулы [СИ]

Мама из другого мира. Делу - время, забавам - час

Рыжая Ехидна
2. Королевский приют имени графа Тадеуса Оберона
Фантастика:
фэнтези
8.83
рейтинг книги
Мама из другого мира. Делу - время, забавам - час

Низший - Инфериор. Компиляция. Книги 1-19

Михайлов Дем Алексеевич
Фантастика 2023. Компиляция
Фантастика:
боевая фантастика
5.00
рейтинг книги
Низший - Инфериор. Компиляция. Книги 1-19

На границе империй. Том 7. Часть 5

INDIGO
11. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 7. Часть 5

Кодекс Охотника. Книга XXII

Винокуров Юрий
22. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXII

Темный Лекарь 3

Токсик Саша
3. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 3

Я тебя не предавал

Бигси Анна
2. Ворон
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Я тебя не предавал

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Не грози Дубровскому! Том 11

Панарин Антон
11. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том 11

Виконт. Книга 2. Обретение силы

Юллем Евгений
2. Псевдоним `Испанец`
Фантастика:
боевая фантастика
попаданцы
рпг
7.10
рейтинг книги
Виконт. Книга 2. Обретение силы

Авиатор: назад в СССР 14

Дорин Михаил
14. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 14