Разработка системы управления содержимым

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,03 Мб
  • Опубликовано:
    2013-09-17
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка системы управления содержимым

ВВЕДЕНИЕ

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

В этом документе приведены все классы основные классы системы и функции с описанием. Он состоит из четырех разделов.

На первом разделе названием Регулярные выражении приведено описание функций, которые работает с регулярными выражениями.

Раздел Отправка писем содержит описание классов и функций который работает с отправкой электронных писем в системе.

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

1. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ

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

1.1 Класс для работы с регулярными выражениями

Ниже приведено листинг класса для работы с регулярными выражениями. Название класса regular имеющий функции Activate, getResult, checkRegular.

Данная функция позволяет автоматически загрузить список всех регулярных выражений который используется в системе.

Листинг 1.1. Функция Activate

public static function Activate()

{DIR_MODULES."regulars/regulars.php";(isset($regs))

{self::$regulars = new params($regs);}

{ self::$regulars = new params();}

}

Функция chekRegular проверят на существования регулярного выражения в системе.

Листинг 1.2. Функция checkRegular

public static function checkRegular($name)

{self::$regulars->is_isset($name);

}

Функция выполняет проверку заданных данных с используя регулярных выражений и возвращает результат. Данная функция имеет два параметра первый object это значение который надо проверит и второй это filter_type который указывает тип фильтра.

Листинг 1.3. Функция getResult

public static function getResult($object,$type,$filter_type="preg_match")

{ if(isset($object) and $filter_type=="preg_match")

{ if(!self::$regulars->is_isset($type))

{return false;}

{return preg_match(self::$regulars->getValue($type),$object);}

}($filter_type=="preg_match_all")

{if(!self::$regulars->is_isset($type))

{return false;}

{$l = preg_match_all(self::$regulars->getValue($type),$object,$mass); $mass;

}

}

}

1.2 Класс для проверки данных при регистрации

Данный класс позволяющий выполнить проверку данных пользователя. В классе создано функции login ,password, mail, dateage.

Данная функция позволяет сделать проверку логина на существования и корректность с использованием регулярного выражения.

Листинг 1.4. Функция login

public static function login($l)

{(!isset($l))

{::$log['login'] = XATO_LOGIN_YOQ;false;

}(strlen($l)<6 and strlen($l)>12)

{::$l['login'] = XATO_LOGIN_KK;false;

}(!regular::getResult($l,'login'))

{::$log['login'] = XATO_LOGIN_NOTOGRI;false;

}(data::$user->getValue("login","user_login='$l'"))

{::$log['login'] = XATO_LOGIN_MAVJUD;

}

else

{

return true;

}

}

Password - функция который проверятся с использованием регулярных выражений, сравнивает две пароли на правильность и возвращает данные шифрованный методом md5.

Листинг 1.5. Функция password

public static function password($p1,$p2)

{(!isset($p1) or !isset($p2))

{::$log['password'] = XATO_PAROL_YOQ;

}(strlen($p1)<6 and strlen($p2)>12)

{::$log['password'] = XATO_PAROL_KK;false;

}($p1==$p2)

{::$log['password'] = XATO_PAROL_OXSHASHMAS;false;

}(!regular::getResult($p1,'password'))

{::$log['password'] = XATO_PAROL_NOTOGRI;false;

}

{true;

}

}

Листинг 1.6. Функция mail

public static function mail($m)

{(!isset($m))

{::$log['mail'] = XATO_EMAIL_YOQ;false;

}(!regular::getResult($m,'email'))

{::$log['mail'] = XATO_EMAIL_NOTOGRI;false;

}(strlen($m)<6 and strlen($m)>255)

{::$log['mail'] = XATO_EMAIL_KK;false;

}

{true;

}

}

2. ОТПРАВКА ПИСЕМ

Самый простой способ отправить письмо при помощи PHP - воспользоваться стандартной функцией mail. Она имеет следующий синтаксис:

bool mail (string to, string subject, string message [, string additional_headers [, string additional_parameters]])

2.1 Класс для отправки сообщений

Данный класс позволяет отправлять электронные письма в PHP и имеет опции задержки писем. В классе Mail имеется следующие функции Send, Delay, Abort, Complete.

С помощью функции Send задается данные отправляемого письма и он имеет следующие параметры:

·        $to - электронная почта получателя

·        $subject - тема отправляемого письма

·        $message - текст отправляемого письма

·        $from - адрес электронной почты отправителя

·        $reply - адрес электронной почты который должен отправляется ответ.

Листинг 2.1. Функция Send

static function Send($to, $subject, $message, $from, $reply = null){(empty($reply)){

$reply = $from;

}

$reply = "Reply-To: $reply\r\n";

$headers = "MIME-Version: 1.0\r\n".

"Content-Type: text/html; charset=UTF-8\r\n".

"From: $from\r\n".

$reply.

"X-Mailer: PHP/".phpversion();

$subject = mb_encode_mimeheader($subject, 'UTF-8', 'B', "\r\n", 9);(self::$delay){::$mail[] = array($to, $subject, $message, $headers);

}else{{($to, $subject, $message, $headers);

}catch (Exception $e){

}

}

}

Функция Delay - включает задержку отправки писем.

Листинг 2.2. Функция Delay

static function Delay(){::$delay = true;

}

Функция Abort - отключает задержку отправки писем и очищает очередь писем.

Листинг 2.2. Функция Delay

static function Abort(){::$delay = false;::$mail = array();

}

Complete - данная функция отправляет все письма из очереди и очищает очередь писем в конце отключая задержку писем.

Листинг 2.21. Функция Complete

static function Complete(){{(self::$mail as $m){($m[0], $m[1], $m[2], $m[3]);

}

}catch (Exception $e){}

Очищаем состояние задержки

self::Abort();

}

2.2 Отправка ссылки для активации на почту пользователя

Данная функция отправляет письмо на почту нового пользователя с ссылкой активации его профиля.

Листинг 2.2. Функция Complete

public static function SendActivate($mail,$login,$activation)

{

$subject = "Добро пожвловать в ".settings::getValue("site_name");

$message = "Здраствуйте $login Для активации нажмите

<a href='#"656699.files/image001.gif">

Рис. 3.1 Главная страница

.16 Класс Render

Render - модуль который генерирует html страницу на основе шаблонов и заданных данных.

HTML - функция генерирует html страницу методом подстановки используя регулярных выражений.

Листинг 3.44. Функция HTML

public static function HTML($arrays,$tpl)

{

{

$handler = fopen($tpl,"r");

$text = fread($handler,filesize($tpl));($handler);(is_array($arrays))

{(isset($arrays[0]))

{($arrays as $key=>$value)

{

$html.=self::replace($value,$text);

}

}

{

$html = self::replace($arrays,$text);

}$html;

}

{false;

}

}

else

{

return false;

}

}

Replace - функция который заменяет все ключевые слова заданный в шаблоне на обработанные данные.

Листинг 3.45. Функция replace

public static function replace($array,$text)

{

$rtext="";$stext="";($array as $key=>$value)

{

$text = preg_replace("/{".$key."}/",$value,$text);

}

return $text; }

Ниже показано пример шаблона, который используется в системе. Шаблон сохраняется в формате *.tpl. Чтобы вывести нужную информацию надо написать поля таблицы из БД в фигурных скобках

Листинг 3.46. Шаблон для вывода страниц

<div class='form' align='left'>

<h3>{page_title}</h3>

<h4>

{page_content}

</h4>

<h5>Дата добавления: <a href='#'>{page_created_time}</a></h5>

</div>

Данном изображении показано результат работы функции Render и шаблона content.tpl

Рис. 3.2. Пример работы функции Render и шаблона content.tpl

3.17 Класс Magazine

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

Activate - функция который выполняет наследование класса getData для переменных.

Листинг 3.47. Функция Activate

public static function Activate ()

{::install();::$tovari = new getData("eagle_tovar");::$manufacturer = new getData("eagle_manufacturers");::$basket = new getData("eagle_basket");::$catalog = new getData("catalog");

}

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

Листинг 3.48. Функция LoadLastNews

public static function LoadLastNews()

{::$LastNewsList=self::$tovari->getValue("*","publication_date='".date("Y-m-d H:m:s")."' and status ='1'","addition_date desc","10"); self::$LastNews;

}

LoadListTovar - данная функция позволяет загрузить список товаров из определенной категории.

Листинг 3.49. Функция LoadListTovar

public static function LoadListTovar($id_catalog)

{

$k = self::$tovari->getValue("*","id_type=$id_catalog"); $k;

}

LoadTovar - функция позволяет загрузит данные определенного товара.

Листинг 3.50. Функция LoadTovar

public static function LoadTovar($id_tovar)

{

$id_tovar = ($id_tovar !="") ? $id_tovar = "AND eagle_tovar.id_tovar=$id_tovar":"";

$sort = "ORDER BY name ASC";

$count = "LIMIT 10";

/*self::$ListKatalog=self:: $catalog->getValue ("*",$id_catalog, $sort,$count);*/

$sql = "SELECT_tovar.id_tovar.name

, eagle_tovar.price

, eagle_manufacturers.name

, eagle_tovar.addition_date

, eagle_tovar.publication_date

, eagle_tovar.status

, eagle_tovar.quantity_of_sales

, eagle_tovar.quantity_of_views

, eagle_tovar.image.eagle_tovar

, eagle.eagle_manufacturers

, eagle.eagle_basket

, eagle.catalog(eagle_tovar.id_type=catalog.id_catalogeagle_tovar.id_manufacturer=eagle_manufacturers.id_manufacture $id_tovar) $sort $count;";

$results = mysql_query($sql);(!$results)

{false;

}

{($res = mysql_fetch_assoc($result))

{::$ListTovar[] = $res;

}

}

}

LoadCatalog - загрузка списка каталога.

Листинг 3.51. Функция LoadCatalog

public static function LoadCatalog()

{::$ListKatalog = self::$catalog->getValue("*"); self::$ListKatalog;

}

LoadBasketUser - функция который выполняет загрузку списка производителей.

Листинг 3.52. Функция LoadListmanufacturers

public static function LoadListManufacturer()

{::$ListManufaturer = self::$manufacturer->getValue("*"); self::$ListManufaturer;

}

LoadBasketUser - функция который, позволяет загрузить данные корзины указанного пользователя.

Листинг 3.53. Функция LoadBasketUser

public static function LoadBasketUser($user_id)

{::$ListBasket=self::$basket->getValue("*","user_id=$user_id","purchasing date DESC");

}

DeleteBasket - функция для удаления данных из корзины. При использовании данной функции данные удаляется из корзины текущего пользователя.

Листинг 3.54. Функция DeleteBasket

public static function DeleteBasket()

{(user::rights()<>0)

{(isset(request::$post))

{(request::$post->is_isset("delete_basket"))

{self::$basket->delValue("id_basket='".request::$post->getValue("delete_basket")."'");

}

}

}

}

Addbasket - данная функция добавляет данные в корзину текущего пользователя.

Листинг 3.55. Функция AddBasket

public static function AddBasket()

{(user::rights()<>0)

{(isset(request::$post))

{ $post = request::$post;($post->is_isset("submit"))

{

$post->delValue("submit");

$post->setValue("user_id",user::id();)self::$basket->addValue($post->getArray());

}

}

}

}

3.18 Класс Page

Page - Данный модуль позволяет вывести страницы и выполнять поиск страниц.

GetPages - Функция для вывода страниц. Этот функция имеет 3 параметра и с помощью этих можно определят количество, порядок и страницу.

Листинг 3.56. Функция GetPages

public static function GetPages($where,$orderby="",$limit="")

{(!$result = data::$pages->getValue("*",$where,$orderby,$limit))

{$result[0] = data::$pages->getValue("*","page_id='".settings::getValue("default_page")."'");

}

else

{

return $result;

}

}

Листинг 3.57. Функция Load

public static function Load($title)

{

$result = data::$pages->getValue("*","page_title='$title'");(!$result)

{mysql_error();data::$pages->getValue("*","page_id='".settings::getValue("default_page")."'");

}

{$result;

}

}

GetArrayPages - функция тоже аналогично к функцию GetPages. Отличие в том у него есть еще один параметр, который позволяет выполнить поиск по сайту.

Листинг 3.58. Функция GetArrayPages

public static function GetArrayPages($text,$orderby="",$limit="",$groupby="")

{::$p = new params();::$a = new params();

$where = ($where !="") ? "WHERE page_title LIKE '*$text*' OR page_subtitle LIKE '*$text*' page_keywords LIKE '*$text*' OR page_content='*$text*' AND page_status='public'":"";

$groupby = ($groupby !="") ? "GROUP BY $groupby":"";

$sql = "SELECT * FROM pages $where $orderby $limit $groupby";

$res = db::query($sql);(!$res)

{($result = mysql_fetch_assoc($res))

{

$r[] = $result;

}

}$r;

}

3.19 Класс Auth

 - модуль который, обеспечивает авторизацию и выход пользователя из системы.

Authenticate - функция для авторизации пользователя.

Листинг 3.59. Функция Authenticate

public static function Authenticate()

{(!isset(request::$post))

{false;

}

{

$login = request::$post->getValue("login");

$password = request::$post->getValue("password");(!isset($login) or !isset($password))

{false;

}

{

$result = data::$user->getValue("*","user_login='$login' and user_password='$password'");(!$result)

{::setValue("user",$result);

}

}

}

}

ExitUser - функция осуществляет выход из системы. Он заверщает сессию текущего пользователя.

Листинг 3.60. Функция ExitUser

public static function ExitUser()

{

session::endSession();

}

3.20 Класс User

User - модуль который позволяет выводит данные текущего пользователя.

Activate - функция который автоматически запускается при загрузке класса и вызывает функцию GetDefaultUser

Листинг 3.61. Функция Activate

public static function Activate()

{::GetDefaultUser();

}

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

Листинг 3.62. Функция GetDefaultUser

private static function GetDefaultUser()

{(!session::is_isset("user"))

{::setValue("user",data::$user->getValue("*","user_login='guest'"));::$u = session::getValue("user");

$uid = self::$u->getValue("user_id");::setValue("user_info",data::$user->getValue("*","user_id='$uid'"));::$ui= session::getValue("user_info");

}

}

Login - функция который возвращает логин текущего пользователя.

Листинг 3.63. Функция Login

public static function login()

{::GetDefaultUser();self::$u->getValue("user_login");

}

Password - функция который возвращает пароль текущего пользователя.

public static function password()

{::GetDefaultUser();self::$u->getValue("user_password");

}

Hash - функция который возвращает хеш-код текущего пользователя.

Листинг 3.65. Функция hash

public static function hash()

{self::GetDefaultUser();self::$u->getValue("user_hash"); }

Auth_time - функция который возвращает дата и время который пользователь вошел в систему.

Листинг 3.66. Функция auth_time

public static function auth_time()

{::GetDefaultUser();self::$u->getValue("user_auth_time");

}

Status - возвращает значение 0 или 1. 0 означает что текущий пользователь не активирован, 1 означает что текущий пользователь активирован.

Листинг 3.67. Функция status

public static function status()

{::GetDefaultUser();self::$u->getValue("user_status");

}

Rights - функция который можно определить права доступа текущего пользователя.

Листинг 3.68. Функция rights

public static function rights()

{::GetDefaultUser();self::$u->getValue("user_rights");

}

Email - функция который возвращает адрес электронной почты текущего пользователя.

Листинг 3.69. Функция ip

public static function email()

{::GetDefaultUser();self::$u->getValue("user_mail");

}

RegistratedDate - данная функция возвращает дату регистрации текущего пользователя.

Листинг 3.70. Функция RegistratedDate

public static function RegistratedDate()

{::GetDefaultUser();self::$u->getValue("user_reg_date");

}

Img - функция который возвращает путь к картинке пользователя.

Листинг 3.71. Функция img

public static function img()

{::GetDefaultUser();(!self::$ui->is_isset("user_img"))

{settings::getValue("user_img");

}

{ return self::$ui->getValue("user_img"); } }

3.21 Класс Registration

Registration - модуль для регистрации нового пользователя. Данный модуль обработается событием register при регистрации нового пользователя.

Process - функция который выполняет проверку данных полученные от пользователя и если все данные правильны то сохраняет в БД.

Листинг 3.72. Функция Process

public static function Process()

{::$newuser["user_login"]= check::login(self::$post->getValue("login"));::$newuser["user_password"] = check::password(::$post->getValue("password1"),::$post->getValue("password2")

);::$newuser["user_hash"] = session::getHash();::$newuser["user_auth_time"] = date("Y-m-d H:m:s");::$newuser["user_pol"] = self::$post->getValue("pol");::$newuser["user_rights"] = "1";::$newuser["user_status"] = "0";::$newuser["user_mail"] = check::mail(self::$post->getValue("mail"));::$newuser["user_ip"] = $_SERVER["REMOTE_ADDR"];::$newuser["user_reg_date"] = date("Y-m-d H:m:s");(self::$newuser as $key=>$value)

{($value==false)

{implode(",\r\n",check::$log);;

}

}::$user->addValue(self::$newuser); self::SendActivate($newuser["user_mail"],$newuser["user_login"],session::getHash());

}

SendActivate - функция, который отправляет ссылку активации на почту нового регистрированного пользователя.

Листинг 3.73. Функция Process

public static function SendActivate($mail,$login,$activation)

{

$subject = "Добро пожвловать в ".settings::getValue("site_name");

$message = "Здраствуйте $login Для активации нажмите

<a href='#"656699.files/image003.gif">

Рис. 3.3 Результат работы поиска

ЗАКЛЮЧЕНИЕ

В процессе разработки данной системы я изучил, как работать с классами и как правильно организовать взаимодействие классов. Я научился как создать проект системы с использованием UML , так как для того чтобы начать разработку данной системы мне пришлось создать его проект. Больше узнал о возможностях PHP, которые еще не изучил. Разработке программного продукта дает возможность от написания кода несколько раз и сэкономит время.

Поэтому я создал данную систему на уровне ООП, и я больше узнал о возможностях использования классов для создания программных продуктов. Научился как работать с статическими функциями и возможности их использования. Кроме этих во время разработки я использовал веб - сервер Apache и СУБД MySQL. После этого я научился как пользоваться веб - сервером Apache, как настраивать и как работают файлы .htaccess.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.      Г. Кен, М. Гильберт «Программирование на Visual Basic и VBA», Киев, 2000 г. - 410 стр.

.        Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений /Под ред. Проф.А. Д Хоменко. СПб.: КОРОНА, 2000г.- 416 стр

.        Е. Петрусос «Visual Basic 6.0». СПб. 2000 г. - 250 стр.

.        С.В. Глушаков, А.С. Сурядный «Программирование на VB6» СПб. 2002 г - 497 стр.

.        Т.С. Карпова, «Базы данных: модели, разработка, реализации», СПб. 2002 г. - 304 стр.

Похожие работы на - Разработка системы управления содержимым

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!