
- •«Разработка системы управления содержанием Internet-ресурса»
- •1. Создание бд.
- •2. Создание файла с параметрами соединения с бд.
- •3. Создание приложения для доступа к бд
- •4. Создание контроллера
- •5. Использование аутентификации.
- •6. Создание учетной записи пользователя.
- •7. Организация взаимодействия в рамках сессии
4. Создание контроллера
Создайте в папке xampp/htdocs/CMS файл Controller.php со следующим содержанием
require_once('View.php');
require_once('Model.php');
Запустите в среде XAMPP программное обеспечение web-сервера Apache и СУБД MySQL. Откройте обозреватель и введите в адресной строке следующий адрес
http://localhost/CMS/Controller.php
Введите данные в открывшейся форме.
Убедитесь, что символы кириллицы отображаются в результатах вывода и в командной строке в виде знаков вопроса. Искажение представления символов возникают из-за несовпадения между кодировками данных в БД и данными на web-страницах сайта. Добавьте в сценарии View.php и Model.php строки
mysql_query("set character_set_client='cp1251'");
mysql_query("set character_set_results='cp1251'");
mysql_query("set collation_connection='cp1251_general_ci'");
Проверьте корректность вывода символов русского алфавита, записываемых в базу данных и извлекаемых из нее.
Данный фрагмент кода устанавливает кодировки для клиентской части, результатов вывода и способа collation соответственно. character set – набор символов, называемых кодировкой. Разные кодировки включают в себя различные наборы символов. Также различные character set могут включать примерно одинаковые наборы символов, но в различном порядке (см. например koi8ru и cp1251). Для корректной сортировки и индексации данных системе управления базами БД необходимо знать точную информацию об используемой кодировке. collation — способ, с помощью которого следует упорядочивать и сравнивать данные в БД. Для одного и того же character set существует как правило несколько способов collation. Например: cp1251_general_ci — сравнение не чувствительное, cp1251_bin — чувствительное к регистру.
С помощью клиента командной строки MySQL убедитесь в сохранении данных в БД (рис. 1 и 2).
Рис. 1
Рис. 2
Вызовите форму для редактирования, убедитесь в корректной передаче в форму данных по выбранной записи (рис. 3).
Рис. 3
Введите новые данные вместо текущих, как это показано на рис. 4 и нажмите на элемент управления «Обновить».
Рис. 4
Убедитесь в обновлении именно текущей записи по сохранению новых данных со старым значением идентификатора title_id (рис. 5).
Рис. 5
Удалите запись. С помощью клиента командной строки убедитесь в корректности работы сценария удаления (рис. 6).
Рис. 6
После каждой манипуляции с данными сценарий Model.php должен обеспечивать отображение актуального состояния БД (рис.7).
Рис.
7
5. Использование аутентификации.
Разрабатываемые сценарии могут использовать для идентификации пользователя механизмы аутентификации, предоставляемые web-сервером Apache. Сценарий web-сервера может отправить заголовок запроса аутентификации header(‘WWW-Authenticate: Basic realm=”Member Area”’) обозревателю клиента, который и отобразит соответствующее диалоговое окно. Поле realm позволяет группировать страницы, чтобы, с одной стороны, ограничить доступ к ним, с другой – обеспечить доступность любой PHP-страницы из той же области realm без повторной аутентификации. Basic – тип аутентификации. Заголовок запроса аутентификации должен идти перед HTML-кодом. Имя пользователя и пароль, введенные в диалоговом окне аутентификации, сохраняются в переменных $_SERVER[‘PHP_AUTH_USER’] и $_SERVER[‘PHP_AUTH_PW’] соответственно.
Создайте в папке xampp/htdocs/CMS файл Authent.php со следующим содержанием
if(!isset($_SERVER['PHP_AUTH_USER'])||!isset($_SERVER['PHP_AUTH_PW']))
{
header('WWW-Authenticate: Basic realm="Member Area"');
header("HTTP/1.0 401 Unauthorized");
echo "Введите имя пользователя и пароль!";
exit;
}
else echo "Вы зарегистрировались как: ".$_SERVER['PHP_AUTH_USER']." с паролем ".$_SERVER['PHP_AUTH_PW']."<br />";
Функция isset() определяет, была ли инициализирована указанная в качестве аргумента переменная значением, отличным от NULL. Если переменная была удалена с помощью функции unset(), она больше не считается установленной. isset() возвращает значение false, если проверяемая переменная имеет значение NULL.
Второй вызов функции header() обеспечивает вывод на стороне клиента соответствующего сообщения об ошибке при возникновении проблем с авторизацией.
Конструкция exit выводит прекращает выполнение текущего сценария.
Добавьте в начало файла Controller.php строку require_once("Authent.php").
Обновите окно обозревателя и снова обратитесь в адресной строке к сценарию Controller.php. Убедитесь в появлении окна аутентификации (рис. 8).
Рис. 8