Разработка форума на PHP
Основная часть описывается в модуле index.php. Она содержит форму авторизации, таблицу с названиями форумов и информацию о них. Названия форумов отображаются в виде ссылок, на которые при нажатии открывается таблица, содержащая все темы по данному форуму. Темы так же отображаются в виде ссылок при нажатии, на которые формируется таблица всех содержащихся в данной теме сообщений. Так же модуль… Читать ещё >
Разработка форума на PHP (реферат, курсовая, диплом, контрольная)
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ВЛАДИВОСТОКСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ И СЕРВИСА ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ТЕХНИЧЕСКИХ СИСТЕМ КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ И КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ УТВЕРЖДАЮ Заведующий кафедрой С. М. Семенов
" «2009 г.
Курсовая работа
По дисциплине «Администрирование в информационных системах»
Разработка форума на PHP
Студент
гр. ВМ — 06- 01
О. С. Чебан
Преподаватель
И.Г. Лаштанов
Владивосток 2009
Аннотация
Объектом исследования данной курсовой работы является технология создания сценария для общего доступа к данным на web-узле.
Целью работы является программная реализация поставленной задачи. Написание Интернет-сценария «Форум».
Для решения задачи был выбран программный пакет Denwer состоящий из связки PHP+MySQL+HTML.
В результате выполнения работы были получены навыки разработки Интернет сценариев, а так же написан сценарий «Форум», реализующий возможности обмена информацией пользователей в сети Интернет.
Областью применения данной курсовой работы могут являться задачи обеспечения общения пользователей между компьютерами по сети Интернет.
Проектирование базы данных
Архитектура системы
Система аутентификации
Панель администратора
Основная часть
Руководство пользователя
Вывод
Целью работы является программная реализация поставленной задачи. Написание интернет сценария «Форум». В настоящее время существует достаточно много решений подобной задачи ввиду актуальности объекта исследований. Сценарий представляет собой набор модулей в виде файлов с расширением php, реализующих возможности обмена информацией пользователей в сети. Областью применения данной курсовой работы могут являться задачи обеспечения общения пользователей между компьютерами по сети Интернет.
Проектирование базы данных
При проектировании базы данных (далее БД) «forum» использовалась система phpMyAdmin входящая в программный пакет Denwer.
В БД mуSQL входят четыре таблицы:
— таблица forum_name хранит информацию о названии и описании форумов;
— таблица forum_info хранит информацию обо всех темах форумов;
— таблица forum_mess хранит сообщения всех тем;
— таблица forum_user хранит информацию о зарегистрированных пользователях;
Структура таблиц.
forum_name | forum_info | forum_mess | forum_user | |||||
Имя | Тип | Имя | Тип | Имя | Тип | Имя | Тип | |
Id_forum name_forum info_forum | Int Varchar Varchar | Id_topic codeoff_topic name_topic user_name date | Int Int Text Varchar date | Id_message codeoff_message message usermess_name date | Int Int Text Varchar date | Id_user user_name user_pass user_role date | Int Varchar Varchar Varchar date | |
SQL запросы для создания таблиц:
— forum_name:
CREATE TABLE `forum_name` (`id_forum` INT (11) NOT NULL AUTO_INCREMENT ,`name_forum` TEXT NOT NULL ,`info_forum` TEXT NOT NULL, PRIMARY KEY (`id_forum`));
— forum_info:
CREATE TABLE `forum_info` (`id_topic` INT (11) NOT NULL AUTO_INCREMENT ,`codeoff_topic` INT (11) NOT NULL ,`name_topic` TEXT NOT NULL ,`user_name` VARCHAR (15) NOT NULL ,`date` DATE NOT NULL, PRIMARY KEY (`id_topic`));
— forum_mess:
CREATE TABLE `forum_mess` (`id_message` INT (11) NOT NULL AUTO_INCREMENT ,`codeoff_message` INT (11) NOT NULL ,`message` TEXT NOT NULL ,`usermess_name` VARCHAR (15) NOT NULL ,`date` DATE NOT NULL, PRIMARY KEY (`id_message`));
— forum_user:
CREATE TABLE `forum_user` (`id_user` INT (11) NOT NULL AUTO_INCREMENT ,`user_name` VARCHAR (20) NOT NULL ,`user_pass` VARCHAR (25) NOT NULL ,`user_role` VARCHAR (10) NOT NULL ,`date` DATE NOT NULL, PRIMARY KEY (`id_user`));
На Рис. 1 изображены связи между таблицами.
Рис.1
Для соединения с БД используется модуль connect. php, ниже описывается его код.
//переменная содержит имя хоста, на котором расположен наш форум
$sqlhost = «my_forum» ;
//подключаем модуль, pasforum. php который, хранит логин и пароль root-a
include_once («Z:/home/pass/pasforum.php»);
//присваиваем логин и пароль
$sqluser = $log;
$sqlpass = $pass;
//присваиваем имя БД
$db = «forum» ;
//соединяемся
mysql_connect ($sqlhost,$sqluser,$sqlpass);
mysql_select_db ($db);
?>
Архитектура системы
Система аутентификации
Система аутентификации состоит из авторизации и регистрации.
Модуль reg. php содержит в себе все необходимые средства для регистрации пользователей в БД. Для регистрации пользователь должен ввести имя, пароль и подтверждение пароля. После этого отсылается запрос к БД на создание записи этого пользователя. Код данного модуля приведен ниже.
//осуществляем php обработку, при нажатии на кнопку reg_ok соединяемся с БД и делаем фильтрацию //данных, необходимую для защиты
if (isset ($_POST['reg_ok'])){
require_once («connect.php»);
if ($_POST['user_n']≠'' && $_POST['user_p']≠'' && $_POST['user_p2']≠'')
{
If (strlen ($_POST['user_n'])<20 && strlen ($_POST['user_p'])<25&& strlen ($_POST['user_p2'])<20)
{
if (strlen ($_POST['user_n'])≥3 && strlen ($_POST['user_p'])≥3 && strlen ($_POST['user_p2'])≥3)
{
if ($_POST['user_p'] == $_POST['user_p2'])
{
// можно вводить только эти символы
$span_str = «abcdefghijklmnopqrstuvwxyz» ." ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-" .
" абвгдежзиклмнопрстуфхцчшщьыъэюя" ." АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ" ;
if (strspn ($_POST['user_n'],$span_str) == strlen ($_POST['user_n']))
{
$b_login = mysql_escape_string ($_POST['user_n']);
$b_login = htmlspecialchars ($b_login);
//запрос на выборку во избежание одинаковых имен пользователей
$query = «SELECT user_name FROM forum_user WHERE user_name = '» .$b_login." '" ;
$result = mysql_query ($query);
$line = mysql_fetch_row ($result);
if ($line[0] ≠ $b_login)
{
$login = mysql_escape_string ($_POST['user_n']);
$login = htmlspecialchars ($login);
$pass1 = mysql_escape_string ($_POST['user_p']);
$pass = htmlspecialchars ($pass1);
$date = date ('Y-m-d');
//если все условия регистрации выполнены записываем данные в БД
$sql = «INSERT INTO forum_user SET user_name ='$login', user_pass=password ('$pass'), user_role = 'Пользователь', date='$date'» ;
mysql_query ($sql);
echo «
Регистрация прошла успешно!!!
назад» ;}else{echo"
Логин используется!!!
назад" ;}}else{echo"
Вы ввели недопустимые символы!!!
назад" ;}}else{echo"
Неверное подтверждение пароля!!!
назад" ;}}else{echo"
Слишком короткий логин или пароль (меньше 3 символов)!!!
назад" ;}}else{echo"
Слишком длинный логин или пароль (больше 25 символов)!!!
назад" ;}}else{echo"
Необходимо заполнить все поля !!!
назад" ;}}?>
При авторизации выводится форма авторизации, чтобы войти в систему необходимо ввести имя пользователя и пароль. Код авторизации находящийся в основном модуле index. php приведен ниже.
session_start (); //создаем сессию, будем записывать в нее информацию о входе
require_once («connect.php»);//соединяемся с БД
if (!isset ($_SESSION['autorized'])){
//если пользователь не прошел авторизацию, то на форуме он будет гостем
$_SESSION['name'] = 'guest';
//выводим форму авторизации
if (!isset ($_POST['enter'])){
echo «
" ;}
//фильтрация данных и условия авторизации
else if (strlen ($_POST['login']) < 25 && strlen ($_POST['pass']) < 25)
{if ($_POST['login']≠'' && $_POST['pass']≠'')
{$safe_name1 = mysql_escape_string ($_POST['login']);
$safe_pass1 = mysql_escape_string ($_POST['pass']);
$safe_name = htmlspecialchars ($safe_name1);
$safe_pass = htmlspecialchars ($safe_pass1);
$sql1 = «SELECT user_name, user_role, date FROM forum_user WHERE
user_name = '" .$safe_name." ' and user_pass=password ('$safe_pass')" ;
$result = mysql_query ($sql1);
if (!mysql_num_rows ($result))
{echo «
Логин или пароль неверные
" ;
echo «
Назад" ;}
else{
//если вход в систему выполнен, то записываем в сессию имя пользователя и его роль на форуме
$line = mysql_fetch_row ($result);
$_SESSION['autorized']=true;
$_SESSION['name'] = $_POST['login'];
$_SESSION['role'] = $line[1];
echo «
Спасибо что зашли «.$_SESSION['name']. «(Ваш статус: «.$_SESSION['role']. «)
(Выход)" ;
}}else{
echo «Необходимо заполнить все поляНазад» ;}}
else{
echo «Пароль или логин не должен быть больше 25 символов
Назад" ;
}}else{
echo «
Файл logout. php уничтожает сессию и перенаправляет на главную страницу. Панель администратора При авторизации администратора в системе появляются возможности добавления, редактирования форумов, тем, сообщений, а так же их удаления. Обычный пользователь этого не может, ему можно создавать только темы и сообщения. Функции редактирования и удаления информации выполняют два модуля, edit. php и del.php. Доступ к этим модулям определяется условием, которое выполняется, если переменная $_SESSION['role'] будет равна значению `Администратор'. В этом случае выводятся дополнительные формы, доступные только администратору форума. Исходный код модуля edit. php приведен ниже. require_once («connect.php»); //соединяемся с БД //редактирование имени форума (переменная edit хранит ключевой номер форума, по которому мы //определяем его имя и все остальное) if (isset ($_GET['edit'])){ //выводим имя форума для его редактирования $sql = «SELECT name_forum FROM forum_name WHERE id_forum = «.$_GET['edit']; $data = mysql_query ($sql); $line = mysql_fetch_array ($data); echo « |