Основы создания простого сайта на PHP и MYSQL

Этапы создания сайта с использованием СУБД – MySQL. Подключение блоков, наполнение текстовым содержанием путём ручного ввода данных в базу данных mysql. Создание администраторского раздела (админки), наполнение содержимым через администраторский раздел.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 15.11.2012
Размер файла 4,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Основы создания простого сайта на PHP и MYSQL

1. Описание предметной области. Постановка задачи

Для закрепления теоретических знаний, а также навыков проектирования БД, полученных при изучении курса «Базы данных» мы будем создавать «Простой сайт на PHP и MYSQL».

Для создания php-сайта также необходимы соответствующие знания php-программирования. Для их получения был изучен специальный теоретический видеокурс по php-программированию.

В рамках данного курсового проекта будут показаны следующие этапы:

· Структура php-файлов сайта;

· Соединение сайта с базой данных mysql;

· Извлечение из базы информации;

· Подключение блоков к сайту;

· Наполнение сайта текстовым содержание, путём ручного ввода данных в базу данных mysql;

· Создание администраторского раздела сайта (админка);

· Наполнение сайта содержимым через администраторский раздел;

· Установка пароля на администраторскую зону;

· Реализация возможности редактирования/добавления/удаления данных в базе данных через администраторскую зону сайта;

В итоге получится простой сайт, написанный на php, который будет состоять из нескольких разделов (видимая часть сайта):

1. Главная страница (фиксированные размеры, статичная информация)

2. Статьи (которые выводятся из базы данных)

3. Уроки (также берутся из базы данных)

4. О нас (статичная информация)

При желании можно изменить названия страниц, например: Статьи - на Услуги, Уроки - на Товары.

Также на сайте будет реализована администраторская зона (невидимая часть сайта), состоящая из разделов:

1. Добавить

2. Редактировать

3. Удалить

У каждого пункта видимой части сайта - будут реализованы соответствующие функции в невидимой части сайта.

В конечном итоге должен получиться вот такой вот сайт (видимая часть):

Невидимая часть

Приступим к реализации этого сайта.

2. Выбор средств/методологии проектирования. Выбор СУБД

сайт база данные

Для создания базы данных была выбрана СУБД - MySQL.

MySQL - это свободная СУБД от компании Oracle Corporation. MySQL входит в состав портативной сборки сервера Denwer.

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

MySQL портирована на большое количество платформ, в том числе для Windows XP.

MySQL имеет API для языков Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и Tcl, библиотеки для языков платформы .NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.

Для разработки базы данных в рамках данного курсового проекта использовалась СУБД MySQL 5.0.45.

В данной версии СУБД MySQL реализована практически полная поддержка стандарта SQL.

Для установки локального сервера на персональный компьютер и создания базы данных, использовался виртуальный (локальный) сервер Denwer.

Денвер (джентльменский набор Web-разработчика) -- набор дистрибутивов и программная оболочка, предназначенные для создания и отладки сайтов (веб-приложений, прочего динамического содержимого интернет-страниц) на локальном ПК (без необходимости подключения к сети Интернет) под управлением ОС Windows.

В базовый пакет Денвера входит:

· Веб-сервер Apache с поддержкой SSI, SSL, mod_rewrite, mod_php.

· Интерпретатор PHP с поддержкой GD, MySQL, SQLite.

· СУБД MySQL с поддержкой транзакций (mysqld-max).

· Система управления виртуальными хостами, основанная на шаблонах.

· Система управления запуском и завершением.

· Панель phpMyAdmin для администрирования СУБД.

· Ядро интерпретатора Perl без стандартных библиотек (поставляются отдельно).

· Эмулятор sendmail и сервера SMTP с поддержкой работы совместно с PHP, Perl, arser и др.

· Установщик.

Сразу после установки доступен полностью работающий веб-сервер Apache, работающий на локальном компьютере, на котором может работать неограниченное количество сайтов, что очень эффективно для разработки и отладки сценариев PHP без загрузки его файлов на удаленный сервер. Для запуска практически всех утилит «Денвера» используется приложение Run в подкаталоге /denwer (или /etc) корневого каталога установки «Денвера». При запуске создается виртуальный диск (по умолчанию Z:), где хранятся все файлы проектов.

При разработке данного курсового проекта и создания базы данных, использовался Denwer третьей версии.

В него входят:

· PHP версии 5.2.4

· phpMyAdmin версии 2.6.1

· MySQL версии 5.0.45

Этого нам достаточно, чтобы приступить к работе над проектом.

PHP (англ. PHP: Hypertext Preprocessor -- «PHP: препроцессор гипертекста», «Инструменты для создания персональных веб-страниц») -- скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.

Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений.

Основные из них:

· Автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;

· Взаимодействие с большим количеством различных систем управления базами данных (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO);

· Автоматизированная отправка HTTP-заголовков;

· Работа с HTTP-авторизацией;

· Работа с cookies и сессиями;

· Работа с локальными и удалёнными файлами, сокетами.

· Обработка файлов, загружаемых на сервер;

· Работа с XForms;

В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу корпорации TIOBE, базирующемся на данных поисковых систем, в апреле 2011 года PHP находился на 5 месте среди языков программирования.[5] К крупнейшим сайтам, использующим PHP, относятся Facebook, ВКонтакте, Wikipedia и др.

Входит в LAMP -- распространённый набор программного обеспечения для создания веб-сайтов (Linux, Apache, MySQL, PHP).

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

· Основные конструкции IF-ELSE;

· Двойные условия IF-ELSE;

· Вложенные конструкции IF-ELSE;

· Цикл WHILE (DO-WHILE);

· Массивы;

· Ассоциативные массивы;

· Функции даты и времени;

· Функция ISSET;

· Передача переменных методами GET и POST;

· Суперглобальный массив $_SERVER;

· Инструкция INCLUDE;

· Функции соединения с базой данных;

· Функция выборки из базы данных;

· Вывод данных из базы данных в цикле;

· Цикл PRINTF;

· Оператор выборки - SELECT;

· Оператор вставки - INSERT;

· Оператор обновления - UPDATE;

· Оператор удаления - DELETE;

3. Структура нашего проекта

У нас будет 2 части сайта: Общая часть и Администраторская часть.

Общая часть сайта будет состоять из 6 php-файлов и 2 папок.

(об остальных файлах будет рассказано позже…)

Папка IMG будет содержать в себе 3 изображения:

· bg.gif - фоновое изображение;

· header.jpg - шапка сайта;

· 150-for-blog.png - 3D-бокс в пункте меню: рассылка;

Файлы:

1. index.php - будет отвечать за вывод главной страницы сайта;

2. articles.php - будет отвечать за вывод из базы данных, списка статей;

3. lessons.php - будет отвечать за вывод из базы данных, списка уроков;

4. contacts.php - будет отвечать за отображение страницы «О нас»;

5. view_lesson.php - будет отвечать за вывод конкретного урока, при нажатии на ссылку этого урока на странице файла lessons.php;

6. view_articles.php - будет отвечать за вывод конкретной статьи, при нажатии на ссылку этой статьи на странице файла articles.php;

Папка blocks будет содержать в себе файлы, в которых будут вынесены отдельные блоки сайта. Сайт разделяется на блоки для того, чтобы им было легко управлять, изменять тысячи страниц сайта - одним файлом.

Администраторская часть будет состоять из следующих файлов и папок (о них будет рассказано позже) - папка «admin»:

База данных будет хранить все тексты, статьи, уроки и.т.д.

4. Главная страница сайта

Главная страница сайта выглядит так:

Исходный код данной страницы выглядит так:

<?php

include "blocks/bd.php";/*Соединяемся с базой*/

$result = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'",$db);

$myrow = mysql_fetch_array ($result);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title><?php echo $myrow ['title']; ?></title>

<meta name="description" content="<?php echo $myrow ['meta_d']; ?>">

<meta name="keywords" content="<?php echo $myrow ['meta_k']; ?>">

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<?php echo $myrow ['text']; ?>

</td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

Мы видим, что сайт уже разбит на блоки. Это видно по следующему коду:

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

Данная функция «вытаскивает» данные из файла header.php, который расположен в папке blocks.

5. Файлы, подключаемые на каждой странице (папка blocks)

· Файл bd.php

<? $db = mysql_connect ("localhost","php","12345");

mysql_select_db ("phpsite",$db); ?>

Данный файл отвечает за подключение к Базе Данных.

· Файл footer.php

<tr>

<td width="690px" class="footer">Авторские права © 2010-2011 SmartWebMaster.ru - блог Константина Толмачёва</td>

</tr>

Данный файл отвечает за вывод «подвала» сайта на каждой его странице.

· Файл header.php

<tr>

<td><img src="img/header.jpg" width="690" height="100"></td>

</tr>

Данный файл отвечает за вывод «шапки» сайта на каждой его странице.

· Файл left.php

<td width="182" class="left" valign="top">

<p align="center" class="title">Навигация</p>

<div id="coolmenu">

<a href="index.php">Главная</a>

<a href="articles.php">Статьи</a>

<a href="lessons.php">Уроки</a>

<a href="contacts.php">О нас</a>

</div>

<p align="center" class="title2">Рассылка</p>

<div class="formm" width="80%">

<p align="center" class='form3'> «Получите 5<br>

Простых, Пошаговых Видеоуроков, Которые Покажут Вам, На Какую Тему Создавать Сайты, Приносящие От 300$ В Месяц И Больше!»</p>

<div align="center"><img src="img/150-for-blog.png">

</div>

<div align="left">

<!-- SmartResponder.ru subscribe form code (begin) -->

<script language="javascript" type="text/javascript">

function SR_IsListSelected(el)

{

for (var i = 0; i < el.length; i ++)

if (el[i].selected ||

el[i].checked)

return i;

return -1;

}

function SR_trim(f)

{

return f.toString().replace(/^[ ]+/, '').replace(/[ ]+$/, '');

}

function SR_submit(f)

{

f["field_email"].value = SR_trim(f["field_email"].value);

f["field_name_first"].value = SR_trim(f["field_name_first"].value);

if ((SR_focus = f["field_email"]) && f["field_email"].value.replace(/^[ ]+/, '').replace(/[ ]+$/, '').length < 1 || (SR_focus = f["field_name_first"]) && f["field_name_first"].value.replace(/^[ ]+/, '').replace(/[ ]+$/, '').length < 1) { alert("Укажите значения всех обязательных для заполнения полей (помечены звездочкой)"); SR_focus.focus(); return false; }

if (!f["field_email"].value.match(/^[A-Za-z0-9][A-Za-z0-9\._-]*[A-Za-z0-9_]*@([A-Za-z0-9]+([A-Za-z0-9-]*[A-Za-z0-9]+)*\.)+[A-Za-z]+$/)) { alert("Некорректный синтаксис email-адреса!"); f["field_email"].focus(); return false; }

return true;

}

</script>

</div>

<form style="margin: 0; padding: 0;" name="SR_form" target="_blank" action="http://smartresponder.ru/subscribe.html" method="post" onsubmit="return SR_submit(this)">

<div align="left">

<input type=hidden name=version value="1">

<input type=hidden name=tid value="0">

<input type=hidden name=uid value="82017">

<input type=hidden name=lang value="ru">

<table width="188">

<tr><td width="180" align=center style="padding: 5px; border: 0px solid #ff0000;"><table cellspacing=1 cellpadding=2 align=center>

<tr><td> <input type=hidden name="did[]" value="74978">

</td></tr>

<tr><td style="font-family: Verdana; font-size: 10pt; color: #000000; font-weight: bold;" align="center">Ваш e-mail:&nbsp;<font color="#ff0000"><b>*</b></font></td></tr>

<tr><td align="center"> <input type=text size="20" style="font-family: Verdana; font-size: 10pt; color: #000000; background-color: #ffffff; " name="field_email" value="">

</td></tr>

<tr><td style="font-family: Verdana; font-size: 10pt; color: #000000; font-weight: bold;" align="center">Ваше имя:&nbsp;<font color="#ff0000"><b>*</b></font></td></tr>

<tr><td align="center"> <input type=text size="20" style="font-family: Verdana; font-size: 10pt; color: #000000; background-color: #ffffff; " name="field_name_first" value="">

</td></tr>

<tr><td align="center"> <input name="SR_submitButton" type=submit style="font-family: Verdana; font-size: 8pt; color: #000000; background-color: #f0f0c0; font-weight: bold; padding:2px 5px 2px 5px; margin-top:5px;" value="Получить уроки сейчас!">

</td></tr>

</table></td></tr>

</table>

</div>

</form>

<div align="left">

<!-- SmartResponder.ru subscribe form code (end) -->

</div>

</div>

</div>

<!-- showcase -->

</td>

Данный файл отвечает за вывод левого меню сайта на каждой его странице.

6. Создание базы данных и заполнение таблиц

В рамках данного курсового проекта мы будем рассматривать 2 способа добавления данных в базу данных.

Первый способ - ручное добавление данных в базу данных. Т.е мы будем вручную вставлять необходимую информацию в соответствующие поля таблиц нашей базы данных.

Второй способ - автоматическое добавление данных в базу данных. Т.е через администраторскую панель в невидимой части нашего сайта.

Начнем с первого способа.

· Запускаем локальный сервер - Denwer;

· Заходим в phpMyAdmin (на локальном сервере это путь: http://localhost/Tools/phpMyAdmin/)

· Создаем новую базу данных (назовём её «phpsite»)

· Создадим таблицу settings, которая будет содержать все настройки, тексты статей, уроков, текст главной страницы, текст страницы «О нас», названия страниц (мета-тэг title), мета-тэг ключевых слов, описания и.т.д. В этой таблице нам понадобится 6 полей.

· Заполняем все поля, как показано на рисунке ниже и нажимаем «Сохранить»:

· Нажав по кнопке «Вставить» мы можем вставить первую запись в нашу таблицу;

· Заполняем 4 страницы, которые есть у нас в меню, а именно: index.php, contacts.php, lessons.php и articles.php.

Рассмотрим заполнение на примере главной страницы (index.php)

Значение поля id присваивается автоматически, т.к при создании таблицы мы установили этому полю, значение - auto_increment;

Поле page - заполняем для той страницы, которая нам нужна.

Поле title - заголовок страницы;

Поле meta_d - необходимо для мета-тега description;

Поле meta_k - необходимо для мета-тега keywords;

Поля meta_d и meta_k необходимы для поисковых систем (например, Яндекс, Google)

Таким образом, заполняем все поля подобным образом, для 3-х остальных страниц.

Теперь мы можем увидеть, что у нас есть 4 новых записи, для каждой из наших страниц.

· Добавляем нового пользователя к базе данных (Привилегии -> Добавить нового пользователя). Пусть будет пользователь с именем «php» и паролем «12345»

Даём нашему пользователю все привилегии, чтобы при дальнейшей работе не возникало никаких проблем.

За подключение к базе данных у нас будет отвечать файл bd.php

7. Извлекаем данные из базы данных

Первым делом нам нужно соединиться с нашей базой данных. Для этого пропишем следующий php-код в нашем файле bd.php:

<? $db = mysql_connect ("localhost","php","12345");

mysql_select_db ("phpsite",$db); ?>

Функция mysql_connect отвечает за подключение к базе данных. В скобках указываем 3 параметра: сервер (localhost), пользователя (php), пароль (12345);

Заносим функцию в переменную $db.

Выбираем базу данных через функцию mysql_select_db. В качестве параметров указываем имя базы данных и идентификатор соединения (необязательно!) - ("phpsite",$db)

Теперь, после подключения файла bd.php на каждой странице, нам нужно вытащить из базы данных 4 поля: название, описание, ключевые слова и сам текст.

<?php

include "blocks/bd.php";/*Соединяемся с базой*/

$result = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'",$db);

$myrow = mysql_fetch_array ($result);

?>

Делаем выборку (SELECT) и указываем, какие нам нужны поля (title,meta_d,meta_k,text), затем из какой таблицы (FROM settings), затем из какого поля (WHERE page='index'",$db)

Занесём результат работы этой функции в переменную ($result). Чтобы работать с этими результатами, нам нужно создать переменную ($myrow) и уже в неё мы будем заносить результат работы функции.

В $myrow заносится массив из 4 ячеек.

Выводим информацию на странице. Мета-тег описание, ключевых слов, текст и заголовок страницы. Выводим через функцию echo.

<title><?php echo $myrow ['title']; ?></title>

<meta name="description" content="<?php echo $myrow ['meta_d']; ?>">

<meta name="keywords" content="<?php echo $myrow ['meta_k']; ?>">

Текст:

<?php echo $myrow ['text']; ?>

Таким же образом изменяем остальные 3 страницы: lessons.php, articles.php, contacts.php.

8. Таблица lessons и добавление уроков

Весь текст уроков хранится в базе данных. Картинки хранятся в отдельных папках на сервере, а базах хранятся ссылки на них.

На странице lessons.php будут отображаться все уроки из таблицы lessons. Выглядеть это должно вот так:

Т.е у нас будет идти сперва статичная информация файла lessons.php, затем будет идти список из всех существующих уроков в базе данных.

Каждый урок будет выводиться в отдельной табличке, а в ней будет идти: название урока, дата добавления урока, автор урока и краткое описание урока.

Нам понадобятся следующие поля: title, description, meta_d, meta_k, text, author, date, id.

· Поле title - название урока.

· Поле description - краткое описание урока.

· Поле id - заполняется автоматически.

· Поле author - автор урока.

· Поле date - дата добавления урока.

· Остальные поля нам уже знакомы.

Заходим в phpMyAdmin и создадим новую таблицу: lessons с 8 полями.

Пока что в ней нет ни одной записи.

Картинки будем хранить в отдельной папке на нашем сайте. Каждый урок - отдельная папка.

Общая папка lessons - > папка с датой добавления урока -> папка с названием урока; Копируем все картинки добавляемого урока в эту папку.

Теперь создадим страницу с шаблоном для добавления нового урока (lessons_template.php). Пишем на этой странице какой-то текст, вставляем картинки и.т.д.

После написания и редактирования текста, мы копируем его (т.е готовый html-код с ссылками на картинки) и вставляем в таблицу lessons в базу данных (в поле text). Заполняем все поля и сохраняем.

Добавляем еще один урок:

Теперь у нас есть 2 урока в таблице. Есть 2 папки с рисунками на сервере.

Сейчас займемся выводом анонсов тех уроков, которые есть в базе данных.

Вот рабочий код страницы lessons.php:

<?php

include "blocks/bd.php";/*Соединяемся с базой*/

$result = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WHERE page='lessons'",$db);

$myrow = mysql_fetch_array ($result);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title><?php echo $myrow ['title']; ?></title>

<meta name="description" content="<?php echo $myrow ['meta_d']; ?>">

<meta name="keywords" content="<?php echo $myrow ['meta_k']; ?>">

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<p><?php echo $myrow ['text']; ?></p>

<?php

$result = mysql_query ("SELECT id,title,description,author,date FROM lessons",$db);

$myrow = mysql_fetch_array ($result);

do {

printf ("<table align='center' class='lesson'>

<tr>

<td class='lesson_title'><p class='lesson_name'><a href='view_lesson.php?id=%s'>%s</a></p>

<p class='lesson_adds'>Дата добавления: %s</p>

<p class='lesson_adds'>Автор заметки: %s</p></td>

</tr>

<tr>

<td>%s</td>

</tr>

</table><br><br>", $myrow ["id"],$myrow ["title"],$myrow ["date"],$myrow ["author"],$myrow ["description"]);

}

while ($myrow = mysql_fetch_array ($result));

?>

<p>&nbsp;</p></td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

9. Выводим полный текст урока (файл view_lesson.php)

При нажатии вот на эту ссылку:

Должен подгружаться файл view_lesson.php, который будет выводить на страницу именно этот урок: «Выбор платформы для создания блога». И будет это выглядеть так:

И потом будет загружаться именно этот урок:

Будут отображаться: Дата добавления, Автор, название и сам текст (стрелка «вниз»);

Исходный, рабочий код страницы view_lesson.php:

<?php

include "blocks/bd.php";/*Соединяемся с базой*/

if (isset($_GET['id'])) {$id = $_GET['id'];}

$result = mysql_query ("SELECT * FROM lessons WHERE id='$id'",$db);

$myrow = mysql_fetch_array ($result);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title><?php echo $myrow ['title']; ?></title>

<meta name="description" content="<?php echo $myrow ['meta_d']; ?>">

<meta name="keywords" content="<?php echo $myrow ['meta_k']; ?>">

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<p class="view_title"><?php echo $myrow ['title']; ?></p>

<p class="view_date">Дата добавления: <?php echo $myrow ['date']; ?></p>

<p class="view_date">Автор: <?php echo $myrow ['author']; ?></p>

<p><?php echo $myrow ['text']; ?></p>

<p>&nbsp;</p></td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

10. Таблица articles, файл articles.php, файл view_article.php, пункт в меню - Статьи

Делаем все тоже самое, что и в пунктах 8,9 данного проекта. Только сейчас у нас должны появиться новая таблица в базе данных, также с 8 полями, новый файл articles.php и view_article.php, но только уже с выборкой из таблице articles, а не lessons в базе данных.

И будет это выглядеть примерно так: т.е выводы всех статей.

И вывод отдельной статьи при нажатии на самую первую ссылку:

11. Создание блока администратора (админка)

Упрощение работы над сайтом. Упрощенное добавление/редактирование/удаление статей/уроков/страниц. Создание невидимой области сайта.

Структура файлов администраторской области выглядит так:

Пояснение: 2 папки blocks и img.

Папка img содержит все те же изображение. А вот структура файла left.php в папке blocks - немного изменилась и выглядит так:

<td width="182" class="left" valign="top">

<p align="center" class="title">Уроки</p>

<div id="coolmenu">

<a href="new_lesson.php">Добавить</a>

<a href="edit_lesson.php">Редактировать</a>

<a href="del_lesson.php">Удалить</a></div>

<p align="center" class="title">Статьи</p>

<div id="coolmenu">

<a href="new_article.php">Добавить</a>

<a href="edit_article.php">Редактировать</a>

<a href="del_article.php">Удалить</a></div>

<p align="center" class="title2">Тексты</p>

<div id="coolmenu">

<a href="edit_text.php">Редактировать</a></div>

</td>

Зона администратора выглядит так:

Теперь, за что же отвечает каждый файл в папке «admin»

· add_article.php - файл, занимающийся обработкой данных, посылаемых из формы файла new_article.php;

· add_lesson.php - файл, занимающийся обработкой данных, посылаемых из формы файла new_lesson.php;

· del_article.php - файл, содержащий в себе список (радио-кнопки) ВСЕХ статей в базе данных, выводимых на экран;

· del_lesson.php - файл, содержащий в себе список (радио-кнопки) ВСЕХ ehjrjd в базе данных, выводимых на экран;

· drop_article.php - файл, который занимается удалением выбранной статьи на странице del_article.php;

· drop_lesson.php - файл, который занимается удалением выбранного урока на странице del_lesson.php;

· edit_article.php - файл, содержащий в себе список всех статей в базе данных и при нажатии на каждую из них, данные извлекаются из базы данных и подставляются в форму;

· edit_lesson.php - файл, содержащий в себе список всех уроков в базе данных и при нажатии на каждый из них, данные извлекаются из базы данных и подставляются в форму;

· edit_text.php - файл, содержащий в себе список всех статичных страниц в базе данных и при нажатии на каждую из них, данные извлекаются из базы данных и подставляются в форму;

· index.php - главная страница администраторской области.

· lock.php - файл, который позволяет защитить админку от взлома (установщик/проверящик пароля) - о нём будет сказано позже;

· new_article.php - файл, содержащий форму добавления новой статьи.

· new_lesson.php - файл, содержащий форму добавления нового урока.

· style.css - таблица стилей.

· update_article.php - файл, занимающийся обработкой данных, которые передаются из файла edit_article.php. Затем обработчик просто заменяет старые значения полей в базе - на новые (которые передались через форму файла edit_article.php)

· update_lesson.php - файл, занимающийся обработкой данных, которые передаются из файла edit_lesson.php. Затем обработчик просто заменяет старые значения полей в базе - на новые (которые передались через форму файла edit_lesson.php)

· update_text.php - файл-обработчик данных, передаваемых из файла edit_text.php. Процесс тот-же что и в файлах update_lesson.php и update_article.php.

В рамках данного курсового проекта мы разберем только возможность добавления/редактирования/удаления уроков (lessons) и статичных страниц («Тексты»). Всё потому, что те же самые процессы выполняются и в пункте со статьями (articles) - поэтому нет смысла показывать все по 2 раза!

12. Добавление нового урока в базу данных через админку

Схема проста: первый файл (new_lesson.php) выводит нам форму добавления нового урока (статьи).

Затем, после ввода всех данных в поля формы и нажатия кнопки «Занести урок в базу!» - данные передаются на обработку другому файлу (обработчику - add_lesson.php), а тот в свою очередь проверяет, все ли поля были переданы в предыдущей форме, и если все норм, то данные заносятся в базу и в таблице lessons появляется новая запись (с новым значением поля id).

Приступим к созданию этих двух файлов.

Первый файл: new_lesson.php будет выглядеть так:

Исходный код выглядит так:

<?php include ("lock.php");?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title>Страница добавления нового урока в базу</title>

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<p>Страница добавления нового урока.</p>

<form name="form1" method="post" action="add_lesson.php">

<p>

<label>Введите название урока<br>

<input type="text" name="title" id="title">

</label>

</p>

<p>

<label>Введите краткое описание урока<br>

<input type="text" name="meta_d" id="meta_d">

</label>

</p>

<p>

<label>Введите ключевые слова<br>

<input type="text" name="meta_k" id="meta_k">

</label>

</p>

<p>

<label>Введите дату добавления урока<br>

<input name="date" type="text" id="date" value="2011-05-09">

</label>

</p>

<p>

<label>Введите краткое описание урока с тэгами абзацев<br>

<textarea name="description" id="description" cols="40"></textarea>

</label>

</p>

<p>

<label>Введите полный текст урока с тэгами абзацев<br>

<textarea name="text" id="text" cols="40" rows="20"></textarea>

</label>

</p>

<p>

<label>Введите автора урока <br>

<input type="text" id="author" name="author">

</label>

</p>

<p>

<label>

<input type="submit" name="submit" id="submit" value="Занести урок в базу">

</label>

</p>

</form><p>&nbsp;</p></td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

Исходный код обработчика (add_lesson.php)

<?php

include ("lock.php");

include "blocks/bd.php";/*Соединяемся с базой*/

if (isset ($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset ($title);} }

/*Если существует в глобальном массиве $_POST[''title] определенная ячейка, то мы создаем из нее простую переменную. Если переменная пустая, то ее нужно уничтожить с помощью функции unset*/

if (isset ($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset ($meta_d);} }

if (isset ($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset ($meta_k);} }

if (isset ($_POST['date'])) {$date = $_POST['date']; if ($date == '') {unset ($date);} }

if (isset ($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset ($description);} }

if (isset ($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset ($text);} }

if (isset ($_POST['author'])) {$author = $_POST['author']; if ($author == '') {unset ($author);} }

$result = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'",$db);

$myrow = mysql_fetch_array ($result);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title>Обработчик</title>

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<?php

if (isset ($title) && isset ($meta_d) && isset ($meta_k) && isset ($date) && isset ($description) && isset ($text) && isset ($author))

{

/*Здесь пишем, что можно заносить информацию в базу*/

$result = mysql_query ("INSERT INTO lessons (title, meta_d,meta_k,date,description,text,author) VALUES ('$title','$meta_d','$meta_k','$date','$description','$text','$author')");

if ($result == 'true') {echo "<p>Ваш урок успешно добавлен!</p>";}

else {echo "<p>Ваш урок не добавлен!</p>";}

}

else

{

echo "<p>Вы ввели не всю информацию, поэтому урок не может быть добавлен в базу</p>";

}

?>

</td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

13. Редактирование уроков (файлы edit_lesson.php и update_lesson.php)

Схема такая. Сперва наш файл edit_lesson.php выводит нам список из всех уроков, которые на данный момент есть в базе данных в таблице lessons.

Затем, после того, как мы выберем какой-то конкретный урок, этот же самый файл (edit_lessons.php) сделает запрос к базе и вытащит все данные из той строки, которую мы ему сказали. А потом он подставит все эти данные в соответствующие ему поля заранее подготовленной формы.

После того, как мы нажмем на кнопку «Сохранить изменения», то все измененные данные (если изменения конечно же были в полях) отправятся обработчику, т.е файлу update_lesson.php.

Вот исходный код страницы edit_lesson.php:

<?php

include ("lock.php");

include "blocks/bd.php";/*Соединяемся с базой*/

if(isset($_GET['id'])){$id=$_GET['id'];}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title>Страница редактирования уроков</title>

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

p>Страница редактирования уроков</p>

<?

if (!isset($id))

{

$result = mysql_query("SELECT title,id FROM lessons");

$myrow = mysql_fetch_array($result);

do

{

printf ("<p><a href='edit_lesson.php?id=%s'>%s</a></p>",$myrow["id"],$myrow["title"]);

}

while ($myrow = mysql_fetch_array($result));

}

else

{

$result = mysql_query("SELECT * FROM lessons WHERE id=$id");

$myrow = mysql_fetch_array($result);

print <<<HERE

<form name="form1" method="post" action="update_lesson.php">

<p>

<label>Введите название урока<br>

<input value="$myrow[title]" type="text" name="title" id="title">

</label>

</p>

<p>

<label>Введите краткое описание урока<br>

<input value="$myrow[meta_d]" type="text" name="meta_d" id="meta_d">

</label>

</p>

<p>

<label>Введите ключевые слова для урока<br>

<input value="$myrow[meta_k]" type="text" name="meta_k" id="meta_k">

</label>

</p>

<p>

<label>Введите дату добавления урока<br>

<input value="$myrow[date]" name="date" type="text" id="date" value="2007-01-27">

</label>

</p>

<p>

<label>Ведите краткое описание урока с тэгами абзацев

<textarea name="description" id="description" cols="40" rows="5">$myrow[description]</textarea>

</label>

</p>

<p>

<label>Введите полный текст урока с тэгами

<textarea name="text" id="text" cols="40" rows="20">$myrow[text]</textarea>

</label>

</p>

<p>

<label>Введите автора урока<br>

<input value="$myrow[author]" type="text" name="author" id="author">

</label>

</p>

<input name="id" type="hidden" value="$myrow[id]">

<p>

<label>

<input type="submit" name="submit" id="submit" value="Сохранить изменения">

</label>

</p>

</form>

HERE;

}

?>

</td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

Исходный код файла update_lesson.php

<?php

include ("lock.php");

include "blocks/bd.php";/*Соединяемся с базой*/

if (isset ($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset ($title);} }

/*Если существует в глобальном массиве $_POST[''title] определенная ячейка, то мы создаем из нее простую переменную. Если переменная пустая, то ее нужно уничтожить с помощью функции unset*/

if (isset ($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset ($meta_d);} }

if (isset ($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset ($meta_k);} }

if (isset ($_POST['date'])) {$date = $_POST['date']; if ($date == '') {unset ($date);} }

if (isset ($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset ($description);} }

if (isset ($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset ($text);} }

if (isset ($_POST['author'])) {$author = $_POST['author']; if ($author == '') {unset ($author);} }

if (isset($_POST['id'])) {$id = $_POST['id'];}

$result = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'",$db);

$myrow = mysql_fetch_array ($result);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title>Обработчик</title>

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<?php

if (isset ($title) && isset ($meta_d) && isset ($meta_k) && isset ($date) && isset ($description) && isset ($text) && isset ($author))

{

/*Здесь пишем, что можно заносить информацию в базу*/

$result = mysql_query ("UPDATE lessons SET title='$title', meta_d='$meta_d', meta_k='$meta_k', date='$date', description='$description', text='$text', author='$author' WHERE id='$id'");

if ($result == 'true') {echo "<p>Ваш урок успешно обновлен!</p>";}

else {echo "<p>Ваш урок не обновлен!</p>";}

}

else

{

echo "<p>Вы ввели не всю информацию, поэтому урок не может быть обновлен в базе</p>";

}

?>

</td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

14. Удаление уроков из базы (файлы del_lesson.php и drop_lesson.php)

Реализация удаления уроков из базы будет самым простым действием. Как мы знаем из html, у всех радио-кнопок в одной группе - например id, в качестве значения (value) мы можем подставлять id конкретного урока.

Поэтому нам уже не нужно передавать множество переменных и значений, достаточно просто указать обработчику то, с каким id нужно удалить строку из таблицы.

Схема удаления уроков из базы:

Исходный код файла del_lesson.php:

<?php

include ("lock.php");

include "blocks/bd.php";/*Соединяемся с базой*/

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title>Страница удаления урока из базы</title>

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<p>Страница удаления уроков.</p>

<p>Выберите урок для удаления:</p>

<form action="drop_lesson.php" method="post">

?

$result = mysql_query("SELECT title,id FROM lessons");

$myrow = mysql_fetch_array($result);

do

{

printf ("<p><input name='id' type='radio' value='%s'><label> %s</label></p>",$myrow["id"],$myrow["title"]);

}

while ($myrow = mysql_fetch_array($result));

?>

<p><input name="submit" type="submit" value="Удалить урок!"></p>

</form>

</td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

Исходный код файла drop_lesson.php

<?php

include ("lock.php");

include "blocks/bd.php";/*Соединяемся с базой*/

if (isset($_POST['id'])) {$id = $_POST['id'];}

$result = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'",$db);

$myrow = mysql_fetch_array ($result);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title>Обработчик</title>

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<?php

if (isset ($id))

{

$result = mysql_query ("DELETE FROM lessons WHERE id='$id'");

if ($result == 'true') {echo "<p>Ваш урок успешно удален!</p>";}

else {echo "<p>Ваш урок не удален!</p>";}

}

else

{

echo "<p>Вы запустили данный файл без параметра id, поэтому удалить урок невозможно! (Скорее всего Вы не выбрали радиокнопку на предыдущем шаге)</p>";

}

?>

</td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

15. Редактирование текстов страниц (edit_text.php и update_text.php)

У нас всего лишь 4 страницы: Главная, Уроки, Статьи и О нас.

Опираясь на код файлов edit_lesson.php и update_text.php, мы создадим еще 2 файла, которые будут заниматься извлечением данных из таблицы settings, подстановкой этих данных в форму и выполнением функции обновления этих данных в базе данных, путём нажатия на кнопку «Сохранить изменения!»

Схема выглядит так:

Исходный код страницы edit_text.php:

<?php

include ("lock.php");

include "blocks/bd.php";/*Соединяемся с базой*/

if(isset($_GET['id'])){$id=$_GET['id'];}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title>Страница редактирования текстов страниц</title>

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<p><strong>Страница редактирования других страниц сайта</strong></p>

<p><strong>Выберите страницу для редактирования</strong></p>

<?

if (!isset($id))

{

$result = mysql_query("SELECT title,id FROM settings");

$myrow = mysql_fetch_array($result);

do

{

printf ("<p><a href='edit_text.php?id=%s'>%s</a></p>",$myrow["id"],$myrow["title"]);

}

while ($myrow = mysql_fetch_array($result));

}

else

{

$result = mysql_query("SELECT * FROM settings WHERE id=$id");

$myrow = mysql_fetch_array($result);

print <<<HERE

<form name="form1" method="post" action="update_text.php">

<p>

<label>Введите название страницы<br>

<input value="$myrow[title]" type="text" name="title" id="title">

</label>

</p>

<p>

<label>Введите краткое описание страницы<br>

<input value="$myrow[meta_d]" type="text" name="meta_d" id="meta_d">

</label>

</p>

<p>

<label>Введите ключевые слова для страницы<br>

<input value="$myrow[meta_k]" type="text" name="meta_k" id="meta_k">

</label>

</p>

<p>

<label>Введите полный текст страницы с тэгами

<textarea name="text" id="text" cols="40" rows="20">$myrow[text]</textarea>

</label>

</p>

<input name="id" type="hidden" value="$myrow[id]">

<p>

<label>

<input type="submit" name="submit" id="submit" value="Сохранить изменения">

</label>

</p>

</form>

HERE;

}

?>

</td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

Исходный код страницы update_text.php

<?php

include ("lock.php");

include "blocks/bd.php";/*Соединяемся с базой*/

if (isset ($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset ($title);} }

/*Если существует в глобальном массиве $_POST[''title] определенная ячейка, то мы создаем из нее простую переменную. Если переменная пустая, то ее нужно уничтожить с помощью функции unset*/

if (isset ($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset ($meta_d);} }

if (isset ($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset ($meta_k);} }

if (isset ($_POST['date'])) {$date = $_POST['date']; if ($date == '') {unset ($date);} }

if (isset ($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset ($description);} }

if (isset ($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset ($text);} }

if (isset ($_POST['author'])) {$author = $_POST['author']; if ($author == '') {unset ($author);} }

if (isset($_POST['id'])) {$id = $_POST['id'];}

$result = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'",$db);

$myrow = mysql_fetch_array ($result);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251">

<title>Обработчик</title>

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>

<table width="690" align="center">

<!--Подключаем шапку сайта-->

<?php include "blocks/header.php"; ?>

<tr>

<td><table width="690">

<tr>

<!--Подключаем левое меню сайта-->

<? include "blocks/left.php"; ?>

<td class="right" valign="top">

<?php

if (isset ($title) && isset ($meta_d) && isset ($meta_k) && isset ($text))

{

/*Здесь пишем, что можно заносить информацию в базу*/

$result = mysql_query ("UPDATE settings SET title='$title', meta_d='$meta_d', meta_k='$meta_k', text='$text' WHERE id='$id'");

if ($result == 'true') {echo "<p>Ваша страница успешно обновлена!</p>";}

else {echo "<p>Ваша страница не обновлена!</p>";}

}

else

{

echo "<p>Вы ввели не всю информацию, поэтому страница не может быть обновлена в базе</p>";

}

?>

</td>

</tr>

</table></td>

</tr>

<!--Подключаем подвал сайта-->

<? include "blocks/footer.php"; ?>

</table>

</body>

</html>

16. Защита администраторской области от посторонних глаз

Для защиты нашей админки нам понадобится включить с помощью функции «include» еще один файл (lock.php) ко всем файлам, находящимся в папке «admin»

Затем нам нужно создать еще одну таблицу в базе данных и назвать ее: userlist, затем добавить туда нового пользователя и пароль.

Схема защиты администраторской зоны выглядит так:

Исходный код файла lock.php:

<?php

include("blocks/bd.php");

if (!isset($_SERVER['PHP_AUTH_USER']))

{

Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");

Header ("HTTP/1.0 401 Unauthorized");

exit();

}

else {

if (!get_magic_quotes_gpc()) {

$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);

$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);

}

$query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";

$lst = @mysql_query($query);

if (!$lst)

{

Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");

Header ("HTTP/1.0 401 Unauthorized");


Подобные документы

  • Основные технологии веб-программирования. Методы отправки данных на сервер с помощью HTML-формы. PHP - Препроцессор Гипертекста. Сохранение данных в базе данных MySQL. Клиент-Сервер и технология CGI. Примеры использования PHP совместно с MySQL.

    лекция [2,9 M], добавлен 27.04.2009

  • Программные средства, которые помогают манипулировать и управлять данными. Приемы создания и редактирования баз данных в СУБД MySQL. Способы и средства доступа и манипулирования данными. Создание, удаление, редактирование таблиц данных и их элементов.

    практическая работа [1,2 M], добавлен 14.03.2013

  • Структура сайта, характеристика процесса его создания. Необходимая кодировка, установка. Присоединение таблицы стилей к сайту. Окно специальных возможностей тега image. Разбор сайта на РНР блоки, создание базы данных. Доступ к админке по паролю.

    лабораторная работа [889,7 K], добавлен 09.01.2013

  • Общая характеристика системы управления базами данных MySQL, ее основные особенности и возможности, касающиеся обеспечения целостности данных. Реализация ограничений семантической и ссылочной целостности в СУБД MySQL на примере фрагмента ИС "Салон магии".

    курсовая работа [981,0 K], добавлен 14.10.2012

  • Характеристика и технические возможности СУБД MySQL. Трехуровневая структура MySQL. Требования к аппаратному обеспечению. Создание таблицы, триггеров, генераторов, хранимых процедур в MySQL. Разработка приложения для базы данных с помощью Borland Delphi.

    курсовая работа [940,7 K], добавлен 20.12.2011

  • Методы и технологии создания виртуальных магазинов. Программные средства для создания сайта. Разработка php-модуля. Технические возможности СУБД MySQL. Приложения для создания графики и дизайна. Логическая структура сайта. Разработка базы данных.

    курсовая работа [248,1 K], добавлен 24.04.2012

  • Эффективность web-сайта в процессе развития компании, этапы его проектирования. Средства для создания web-сайтов. Разработка web-сайта для праздничного агентства "Креатив", его структура и функциональные возможности. Создание главного меню и галереи.

    курсовая работа [919,8 K], добавлен 20.01.2016

  • Отличительные особенности языков программирования PHP и CSS. Возможности компактного многопоточного сервера баз данных MySQL. Системный анализ предметной области, проектирование ее инфологической модели. Создание базы данных и web-страниц сайта магазина.

    курсовая работа [1,0 M], добавлен 15.01.2013

  • Функции, позволяющие работать с базой данных MySQL средствами РНР. Соединение с сервером и его разрыв. Создание и выбор базы данных. Доступ к отдельному полю записи. Комплексное использование информационных функций. Запросы, отправляемые серверу MySQL.

    лекция [3,5 M], добавлен 27.04.2009

  • Общая характеристика СУБД MySQL. Отличительные черты физической организации хранения и обработки данных, имеющимся в СУБД MySQL. Характер связи между таблицами. Реализация ограничений семантической и ссылочной целостности на примере "Салон магии".

    курсовая работа [965,5 K], добавлен 13.01.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.