Создание сайта учителя

Принципы построения распределенных информационных приложений. Распределенное трех уровневое приложение. Необходимость использования приложений в средней школе. Системы управления контентом для создания сайта. Анализ сайтов учителей начальных классов.

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

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

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

Модули и компоненты. Система управления контентом «Joomla!» имеет модульную структуру и в своем базовом варианте не обеспечивает всех необходимых возможностей, требуемых для реализации готового проекта. [37]

В «Joomla!» присутствует деление на компоненты и модули. «Компонентами» называются расширения, позволяющие добавлять дополнительный функционал к работе системы управления контентом. «Модулями» называются элементы вывода данных, отображение которых настраивается отдельно для каждой страницы веб-сайта. Обычно, в комплекте с компонентами поставляются и модули, обеспечивающие вывод интерактивных элементов и любой информации хранящейся в них в любом предусмотренном шаблоном месте.

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

Стоит отметить отдельно, что позиции вывода модулей определяются в шаблоне оформления, действующем на странице. Кроме того, в «Joomla!» существует специальная таблица позиций модулей. Для того, чтобы обозначить в системе позицию модуля, необходимо перейти по следующей ссылке: «http://sait_uchitel/? ts».

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

Компонентная структура позволяет обеспечить гибкость и высокие функциональные возможности системы. Используя только необходимые, для работы сайта, модули и компоненты, администраторы веб-ресурса защищают себя от узких мест и уязвимостей, имеющихся в незадействованных компонентах. [42]

В состав шаблона учителя начальных классов входят следующие модули:

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

- «Навигатор сайта» - данный модуль отображает панель навигации по сайту.

- «Поиск» - модуль отображает форму поиска по сайту.

Также на сайте используются модули не входящие в стандартную сборку:

- «Adeptus UP!» - данный модуль имеет вид стрелки, при нажатии на которую можно с легкостью подняться в начало страницы.

- «Часы» - модуль позволяет вставить часы с календарем разных типов и видов на сайт.

- «vvisit_counter» - модуль отслеживает и подсчитывает посещение сайта за день, неделю, месяц и за все время работы сайта. Также данный модуль отображает количество человек online, ваш IP, вашу операционную систему, название и версию браузера, а также дату.

- «attachments» - данный компонент позволяет загружать и скачивать файлы хранящиеся на сервере.

- «DatsoGallery» - компонент позволяет создавать фотоальбомы и просматривать слайд шоу.

- «EasyBook Reloaded» - это компонент гостевой книги. Позволяющий оставлять отзывы всем желающим посетителям сайта.

Дополнительные компоненты и модули возможно загрузить из специальной библиотеки, располагающейся на сайте производителя. Некоторые из них имеют русифицированный интерфейс, некоторые являются платными. [41]

В качестве дополнительных компонентов к CMS «Joomla!» возможно устанавливать: форумы, гостевые книги, блоги, галереи, интернет-магазины, видео-конференции, базы документов и многое другое.

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

3.2 Интерфейс приложения

В приложении есть три группы пользователей с разными правами. Не зарегистрированные пользователи могут просматривать сайт, оставлять отзывы в гостевой книге. Зарегистрированные пользователи могут просматривать фотоальбомы и скачивать файлы. Третья группа администраторов. Они могут изменять статьи, загружать файлы и фотографии. На рис. 3.2 изображены все модули и компоненты присутствующее на сайте.

На сайте используются 9 модулей и компонентов. Часть из них входят в стандартный набор joomla 1.5, а некоторые были взяты из интернета. В стандартный набор входят меню(2), «поиск по сайту» (3) и поле авторизации(8).

Рис. 3.2 - Модули и компоненты сайта

На рис. 3.2 изображено то, что видят не авторизованные пользователи. Для них открыт просмотр файлов хранящихся на сайте, видно количество посещений, гостевая книга, время и дата, быстрое перемещение по сайту вверх(9) и возможность зарегистрироваться или авторизоваться.

Для авторизации нужно сначала пройти регистрацию которая проходит с помощью компонента «Аlpharegistration». На рисунке 3.3 изображено поле регистрации.

Регистрация с помощью данного компонента проходит в три этапа, это можно увидеть на рисунке. На первом этапе при заполнении полей данный компонент проводит проверку на наличие одинаковых логинов и Е-mail-ов среди зарегистрированных пользователей. Также определяется сложность пароля и хешируются они с помощью 128-битного алгоритма хеширования MD5. На вход алгоритма поступает входной поток данных, хеш которого необходимо найти. Длина сообщения может быть любой (в том числе нулевой). Запишем длину сообщения в L. Это число целое и неотрицательное. Кратность каким-либо числам необязательна. После поступления данных идёт процесс подготовки потока к вычислениям. Ниже приведены 5 шагов алгоритма:

Рисунок 3.3 - Окно регистрации

Шаг 1. Выравнивание потока

Сначала дописывают единичный бит в конец потока (байт 0x80), затем необходимое число нулевых бит. Входные данные выравниваются так, чтобы их новый размер был сравним с 448 по модулю 512 (). Выравнивание происходит, даже если длина уже сравнима с 448.

Шаг 2. Добавление длины сообщения

В оставшиеся 64 бита дописывают 64-битное представление длины данных (количество бит в сообщении) до выравнивания. Сначала записывают младшие 4 байта. Если длина превосходит , то дописывают только младшие биты. После этого длина потока станет кратной 512. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит.

Шаг 3. Инициализация буфера

Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами (шестнадцатеричное представление, сначала младший байт):

А = 01 23 45 67;

В = 89 ABCDEF;

С = FEDCBA 98;

D = 76 54 32 10.

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

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

1 раунд .

2 раунд .

3 раунд .

4 раунд .

Определим таблицу констант - 64-элементная таблица данных, построенная следующим образом:

,

где .

Выровненные данные разбиваются на блоки (слова) по 32 бита, и каждый блок проходит 4 раунда из 16 операторов. Все операторы однотипны и имеют вид: [abcd k s i], определяемый как

,

где X - блок данных. X[k] = M [n * 16 + k], где k - номер 32-битного слова из n-го 512-битного блока сообщения, и - циклический сдвиг влево на бит полученого 32-битного аргумента.

Шаг 4. Вычисление в цикле

Заносим в блок данных элемент n из массива. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками (или их начальные значения, если блок первый).

AA = A

BB = B

CC = C

DD = D

Раунд 1

/*[abcd k s i] a = b + ((a + F (b, c, d) + X[k] + T[i]) <<< s). */

[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]

[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]

[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]

[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

Раунд 2

/*[abcd k s i] a = b + ((a + G (b, c, d) + X[k] + T[i]) <<< s). */

[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]

[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]

[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]

[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

Раунд 3

/*[abcd k s i] a = b + ((a + H (b, c, d) + X[k] + T[i]) <<< s). */

[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]

[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]

[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]

[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

Раунд 4

/*[abcd k s i] a = b + ((a + I (b, c, d) + X[k] + T[i]) <<< s). */

[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]

[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]

[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]

[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]

Суммируем с результатом предыдущего цикла:

A = AA + A

B = BB + B

C = CC + C

D = DD + D

После окончания цикла необходимо проверить, есть ли ещё блоки для вычислений. Если да, то изменяем номер элемента массива (n++) и переходим в начало цикла. [43]

Шаг 5. Результат вычислений

Результат вычислений находится в буфере ABCD, это и есть хеш. Если выводить побайтово начиная с младшего байта A и закончив старшим байтом D, то мы получим MD5 хеш.

Следующий шаг подтверждение регистрации с помощью ссылки высланной на электронную почту. И третий, заключительный шаг, это поле авторизации.

Рисунок 3.4 - фотоальбомы в «Datsogallery»

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

Загрузка файлов на сайт производится с помощью компонента «Аttachments».

Рисунок 3.5 - скачивание файлов выложенных на сайте

Для автора статей есть возможность прикрепить файлы с помощью «Аttachments». Функция добавления файла в статью:

function user_may_add_attachment ($user, $article_id)

{

if ($user->get('username') == «) {

return false;

}

$user_type = $user->get ('usertype', false);

if (($user_type!= 'Author') &&

$user->authorize ('com_content', 'add', 'content', 'all')) {

return true;

}

if ($article_id == null || $article_id == '' ||! is_numeric ($article_id)) {

return false;

}

$db =& JFactory:getDBO();

$query = «SELECT created_by from #__content WHERE id='». $article_id. «'»;

$db->setQuery($query);

$rows = $db->loadObjectList();

if (count($rows) == 0) {

return false;

}

$created_by = $rows[0]->created_by;

jimport ('joomla.application.component.helper');

$params = JComponentHelper:getParams ('com_attachments');

$who_can_add = $params->get ('who_can_add', 'author');

if (($who_can_add == 'author') && ($user->get('id') == $created_by)) {

return true;

}

if ($who_can_add == 'logged_in') {

return true;

}

return false;

}

Для всех пользователей доступна гостевая книга. В ней можно оставить запись и использовать в ней смайлики, а также оценить сайт. Гостевая книга защищена капчей и требует заполнить имя и E-mail.

Рисунок 3.6 - Поля для заполнения в гостевой книге

Код гостевой книги указан в приложении Б.

Так же все пользователи могут видеть на страницах сайта счетчик посещений. В нем отображается посещение за сегодня, вчера, этой недели, прошлой недели, этого месяца, прошлого месяца и за все существования сайта и количество посетителей оnline. Еще этот модуль отображает ваш IP - адрес, название и версию вашего браузера, операционную систему, а так же сегодняшнюю дату.

Рисунок 3.7 - Счетчик посещений

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

 

Рисунок 3.8 - часы и календарь

Часы размещаются на сайте с помощью класса:

class modClockHelper {

function getparams(&$params) {

$params->def ('clock_height', 160);

$params->def ('clock_width', 160);

$params->def ('clock', «simple_green»);}}

В котором указаны размеры и вариант часов.

В третьем разделе была рассмотрена настройка и конфигурация системы «Joomla!». Изучен ее интерфейс, модули и компоненты, возможности для создания сайта учителя начальных классов.

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

Заключение

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

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

Изучены различные CMS. Определены необходимые компоненты Joomla+PHP+MySQL, которые позволили создать нужное нам приложение.

Шаблон применен для сайта который планируется применять для связи учителя с родителями и учениками. Он состоит из следующих стандартных модулей «Joomla!» и загруженных модулей регистрации, фотогалерии и гостевой книги.

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

Определены различные возможности для трех групп пользователей:

- не зарегистрированные пользователи;

- зарегистрированные пользователи;

- администраторы.

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

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

Список литературы

1. Артеменко Ю.Н. MySQL: Справочник по языку - Спб.: Диалектика 2009. - 429 с.

2. Аткинсон Л. MySQL. Библиотека профессионала - Спб.: Диалектика, 2002. - 624 с.

3. Бенкен Е.С. PHP, MySQL, XML: программирование для Интернета. - С. Пб.:BHV, 2008. -570 с.

4. Будилов В. PHP 5. Экспресс-курс - Спб.: БХВ-Петербург, 2005 - 240 с.

5. Васвани В. Полный справочник по MySQL / В. Васвани - М.: «Вильямс», 2006. - 528 с.

6. Веллинг Л. MySQL. Учебное пособие / Л. Веллинг, Л. Томсон - М.: Вильямс, 2005. - 304 с.

7. Веллинг Л. Разработка WEB-приложений на РНР и MySQL/Л. Веллинг, Л. Томсон - М: DiaSoft, 2003. - 380-396 с., 626-645 с.

8. Гаевский А.Ю. Создание Web-страниц и Web-сайтов./ Гаевский А.Ю., Романовский В.А, 2008. - 464 с.

9. Гилмор В. PHP 4. Учебный курс. - СПб. Питер, 2001. - 352 с.

10. Дюбуа П. MySQL. - М Вильямс, 2001. - 517 с

11. Зайцев. П. MySQL. Оптимизация производительности / Шварц Б., Зайцев П., Ткаченко В. и др. - Спб. Символ-Плюс - 832 с.

12. Кайт Т. Эффективное проектирование приложений Oracle / Кайт Т. - М.: «ЛОРИ», 2008. - 656 с.

13. Кирсанов Д. Веб-дизайн. - СПб Символ-Плюс, 1999. - 376 с.

14. Колесниченко Д. Движок для вашего сайта. CMS Joomla! Slaed, PHP-Nuke. - СПб.: БХВ-Петербург, - 368 стр.,

15. Колесниченко Д. Н Самоучитель PHP 5. - М: Наука и техника, 2004. - 69-81 с.

16. Конверс Т.А. PHP 5 и MySQL. Разработка и внедрение. Библия пользователя. - М.: «Вильямс», 2006. -1216 с.

17. Кондратенко Г. Реактивные веб-сайты / Кондратенко Г., Мациевский Н., Степанищев Е.М.: Интернет-Университет Информационных Технологий - 336 с.

18. Косарев А.Ф. PHP в web-дизайне - СПб BHV, 2001. - 764 с.

19. Котеров Д.В. PHP 5 в подлиннике, 2 издание - Спб.: BHV-Санкт-Петербург, 2008-1104 с.

20. Кузнецов М. MySQL 5. В подлиннике / Кузнецов М., Симдянов И. - СПб.: БХВ-Петербург - 1024 с.

21. Лебедев А.Г. WorldWideWeb/ Лебедев А.Г., Рассохин Д.Е., - информационная паутина в сети Интернет. - М.:Техиздат, 2002. - 115 с.

22. Никсон Р. Создаем динамические веб-сайты с помощью PHP, MySQL и javascript - Спб.: Питер, 2011 - 496 с.

23. Норт Б. Joomla! Практическое руководство - СПб: Символ-Плюс. - 448 стр.

24. Орлов Л.В. Web-сайт без секретов 2-е изд. - М.: «Бук-пресс», 2006. - 512 с.

25. Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL Спб.: Диалектика, 2009. - 560 с.

26. Рамел Д.А. Joomla! / Пер. с англ. - С. Пб.:BHV, 2008. -572 с.

27. Роб П. Системы баз данных: проектирование, реализация и управление / Роб П., Коронел К. - 5-е изд. - Спб.: BHV-Санкт-Петербург, 2003. - 1040 с.

28. Ульман Л. MySQL руководство по изучению языка. Пер. с англ. Слинкина А.А. - М.: ДМК Пресс; СПб.: Питер, 2004. - 352 с.

29. Хаген Г.Ф. Создание веб-сайтов с помощью Joomla! 1.5 / Пер. с англ. - М.:Вильямс, 2008. -352 с.

30. Харрингтон Д. PHP. Трюки + файлы - Спб.: Питер, 2008 - 448 с.

31. Харрис Э. PHP/MySQL для начинающих. - С. Пб.:Издательство «КУДИЦ-Образ», 2005. -384 с.

32. Шелдон Р. MySQL. Базовый курс / Шелдон Р., Мойе Дж. - Спб: Диалектика, 2007. - 880 с.

33. Якоб Нильсен. Веб-дизайн. - СПб Символ-Плюс, 2000. - 532 с.CMS «Joomla» // Русское сообщество разработчиков «Joomla». http://www.joomlaportal.ru

34. Joomla! // Википедия - свободная энциклопедия. Страница «Joomla!». http://ru.wikipedia.org/wiki/Joomla

35. Интернет // Википедия - свободная энциклопедия. Страница «Интернет». http://ru.wikipedia.org/wiki/Internet

36. Система управления содержимым // Википедия http://ru.wikipedia.org/wiki/Система_управления_содержимым

37. Трехуровневая архитектура // Википедия - свободная энциклопедия. Страница «Трехуровневая архитектура».http://ru.wikipedia.org/wiki/Трехуровневая_архитектура

38. Учебник по CMF/CMS Drupal // Веб-сайт Drupal BZ. Страница «BZ DRUPAL HANDBOOK».http://www.drupal.bz/bz_drupal_handbook

39. Кодировка страниц, http://www.antula.ru/page-code.htm

40. Лаборатория Web-программистов, http://dklab.ru/

41. Основы веб-дизайна, http://www.nundesign.com/st/35.html

42. Официальный сайт системы PHP Fusion SF в России, http://www.rus-phpfusion.com/

43. MD5 // Википедия - свободная энциклопедия. Страница «MD5». http://ru.wikipedia.org/wiki/MD5

Приложение А

<script type= «text/javascript»>

var slideShowSpeed = 5000

var Pic = new Array()

var Descr = new Array()

var URL = new Array()

<? php

$i = 0;

$j = 0;

while ($i < count ($fn_cache) && ($ft_cache)) {

echo «Pic[$i] = '».$fn_cache[$i]. «'\n»;

echo «Descr[$i] = '».$ft_cache[$i]. «'\n»;

echo «URL[$i] = '».$url_cache[$i]. «'\n»;

if (@$id_cache[$i] == $id) {

$j = $i;

}

$i++;

}

?>

var t

var j = <? php echo «$j\n»?>

var currentLocation = <? php echo «$j\n»?>;

var p = Pic.length

var pos = j

var preLoad = new Array()

function preLoadPic(index) {

if (Pic[index]!= «) {

window.status = 'Loading: ' + Pic[index]

preLoad[index] = new Image()

preLoad[index].src = Pic[index]

Pic[index] = ''

window.status = ''

}

}

function runSlideShow() {

if (preLoad[j]) {

document.images. SlideShow.src = preLoad[j].src

document.getElementById('ImgText').innerHTML = Descr[j]

}

currentLocation = j;

j = j + 1

if (j > (p - 1)) j = 0

t = setTimeout ('runSlideShow()', slideShowSpeed)

preLoadPic(j)}

function endSlideShow() {

stopstatus = 1

j = j - 1

window.location = URL[j]

}

preLoadPic(j)

</script>

<? php

define ('_JEXEC', 1);

header («Content-type: image/png»);

header ('Cache-Control: no-store, no-cache, must-revalidate');

$height=20;

$width=55;

$i_shield=imagecreate ($width,$height);

$black=imagecolorallocate ($i_shield, 255,255,255);

$white=imagecolorallocate ($i_shield, 125,125,125);

$dgrandom=$_GET['dgrandom'];

imagestring ($i_shield, 5,5,2,$dgrandom,$white);

imagepng ($i_shield);

imagedestroy ($i_shield);

Приложение Б

class EasybookReloadedController extends JController {

function display() {

parent:display();}

function publish_mail() {

$hashrequest = JRequest:getVar ('hash', «, 'default', 'base64');

$error = $this->performMail($hashrequest);

if ($error == false) {

$model = $this->getModel('entry');

switch ($model->publish()) {

case -1:

$msg = JText:_('Error: Could not change publish status');

$type = 'error';

break;

case 0:

$msg = JText:_('Entry unpublished');

$type = 'message';

break;

case 1:

$msg = JText:_('Entry published');

$type = 'message';

break;}

$this->setRedirect (JRoute:_('index.php? option=com_easybookreloaded', false), $msg, $type);}

else {

$msg = JText:_('Error: Could not change publish status');

$type = 'error';

$this->setRedirect (JRoute:_('index.php? option=com_easybookreloaded', false), $msg, $type);}}

function remove_mail() {

$hashrequest = JRequest:getVar ('hash', «, 'default', 'base64');

$error = $this->performMail($hashrequest);

if ($error == false) {

$model = $this->getModel('entry');

if (!$model->delete()) {

$msg = JText:_('Error: Entry could not be deleted');

$type = 'error';}

else {

$msg = JText:_('Entry Deleted');

$type = 'message';}

$this->setRedirect (JRoute:_('index.php? option=com_easybookreloaded', false), $msg, $type);}

else {

$msg = JText:_('Error: Entry could not be deleted');

$type = 'error';

$this->setRedirect (JRoute:_('index.php? option=com_easybookreloaded', false), $msg, $type);}}

function comment_mail() {

$hashrequest = JRequest:getVar ('hash', «, 'default', 'base64');

$error = $this->performMail($hashrequest);

if ($error == false) {

JRequest:setVar ('view', 'entry');

JRequest:setVar ('layout', 'commentform_mail');

JRequest:setVar ('hidemainmenu', 1);

parent:display();}

else {

$msg = JText:_('Error: Could not save comment');

$type = 'error';

$this->setRedirect (JRoute:_('index.php? option=com_easybookreloaded', false), $msg, $type);}}

function savecomment_mail() {

$hashrequest = JRequest:getVar ('hash', «, 'default', 'base64');

$error = $this->performMail($hashrequest);

if ($error == false) {

$model = $this->getModel('entry');

if (!$model->savecomment()) {

$msg = JText:_('Error: Could not save comment');

$type = 'error';}

else {

$msg = JText:_('Comment saved');

$type = 'message';}

$this->setRedirect (JRoute:_('index.php? option=com_easybookreloaded', false), $msg, $type);}

else {

$msg = JText:_('Error: Could not save comment');

$type = 'error';

$this->setRedirect (JRoute:_('index.php? option=com_easybookreloaded', false), $msg, $type);}}

function edit_mail() {

$hashrequest = JRequest:getVar ('hash', «, 'default', 'base64');

$error = $this->performMail($hashrequest);

if ($error == false) {

JRequest:setVar ('view', 'entry');

JRequest:setVar ('layout', 'form_mail');

parent:display();}

else {

$msg = JText:_('Error: Please validate your inputs');

$type = 'error';

$this->setRedirect (JRoute:_('index.php? option=com_easybookreloaded', false), $msg, $type);}}

function save_mail() {

$params = &JComponentHelper:getParams ('com_easybookreloaded');

$hashrequest = JRequest:getVar ('hash', «, 'default', 'base64');

$error = $this->performMail($hashrequest);

if ($error == false) {

$session = JFactory:getSession();

$time = $session->get ('time', null, 'easybookreloaded');

$session->set ('time', $time - $params->get ('type_time_sec'), 'easybookreloaded');

$model = $this->getModel('entry');

if ($model->store()) {

if ($params->get ('default_published', true)) {

$msg = JText:_('Entry Saved');

$type = 'message';}

else {

$msg = JText:_('Entry saved but has to be approved');

$type = 'notice';}

$link=JRoute:_('index.php? option= com_easybookreloaded&view = easybookreloaded', false);}

else {

$msg = JText:_('Error: Could not save comment');

$link = JRoute:_('index.php? option=com_easybookreloaded&view=easybookreloaded', false);

$type = 'notice';}

$this->setRedirect ($link, $msg, $type);}

else {

$msg = JText:_('Error: Could not save comment');

$type = 'error';

$this->setRedirect (JRoute:_('index.php? option=com_easybookreloaded', false), $msg, $type);}}

function performMail($hashrequest) {

$model = $this->getModel('entry');

$params = &JComponentHelper:getParams ('com_easybookreloaded');

$secretword = $params->get ('secret_word');

$error = false;

jimport ('joomla.utilities.simplecrypt');

$crypt = new JSimpleCrypt();

if ($hashrequest == «) {

$error = true;

return $error;}

$hash = base64_decode($hashrequest);

$hash = $crypt->decrypt($hash);

$hash = unserialize($hash);

if (isset ($hash['id'])) {

$gbrow = $model->getRow ($hash['id']);}

else {

$error = true;

return $error;}

$app = JFactory:getApplication();

$offset = $app->getCfg('offset');

$date_entry = JFactory:getDate ($gbrow->get('gbdate'));

$date_entry->setOffset($offset);

$date_now = JFactory:getDate();

$date_now->setOffset($offset);

$valid_time_emailnot = $params->get ('valid_time_emailnot') * 60 * 60 * 24;

if ($date_entry->toUnix() + $valid_time_emailnot <= $date_now->toUnix()) {

$error = true;

return $error;}

if (md5 ($gbrow->get('gbmail'))!= $hash['gbmail']) {

$error = true;

return $error;}

if ($gbrow->get('gbname')!= $hash['username']) {

$error = true;

return $error;}

if ($hash ['custom_secret']!= $secretword) {

$error = true;

return $error;}

$hash = array();

$hash['id'] = (int)$gbrow->get('id');

$hash['gbmail'] = md5 ($gbrow->get('gbmail'));

$hash ['custom_secret'] = $secretword;

$hash['username'] = $gbrow->get('gbname');

$hash = serialize($hash);

$hash = $crypt->encrypt($hash);

$hash = base64_encode($hash);

if ($hash!= $hashrequest) {

$error = true;

return $error;}

return $error;}}

Размещено на Allbest.ru


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

  • Преимущества и недостатки статических и динамических сайтов. Эволюция и классификация web-приложений. Требования, предъявляемые к системам управления контентом (CMS). Создание структуры сайта, информационное наполнение страниц. Разработка базы данных CMS.

    дипломная работа [856,2 K], добавлен 27.06.2012

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

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

  • Обзор проблемы разработки сайтов. Системы управления контентом. Сайты для агентств недвижимости. Контекстная диаграмма и оценка трудоемкости разработки сайта. Анализ предметной области и выделение информационных объектов. Описание реализации сайта.

    дипломная работа [2,9 M], добавлен 12.08.2017

  • Возможности использования Internet-ресурсов в средней школе. Мониторинг качества образовательных сайтов в России. Создание образовательного сайта по информатике для 10-го класса. Анализ практического использования образовательного сайта "Информатика".

    дипломная работа [3,2 M], добавлен 10.03.2012

  • Сайтостроение. Классификация сайтов. CMS, выбор системы управления контентом для сайта. Регистрация домена, хостинг, размещение сайта в сети. VPS или виртуальный выделенный сервер. Поисковая оптимизация сайта. Файл robots.txt. Карта сайта sitemap.xml.

    курсовая работа [139,4 K], добавлен 18.02.2015

  • Выбор инструментальных и программных средств для создания сайта. Структура программного продукта. Создание сайта при помощи программы WordPress. Тестирование разработанной программы. Разработка структуры и дизайна сайта. Наполнение сайта контентом.

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

  • Основные технологии для разработки Web приложений. Выявление эффективности функционирования web-сайта и информационных технологий университета. Установка локального сервера Denwer. Пользовательская часть сайта. Эффективность программного обеспечения.

    дипломная работа [4,4 M], добавлен 14.07.2015

  • Создание пользовательского web-интерфейса. Основные этапы создания web-сайта. Пользователи системы и их роли. Аналоги системы, структура основных пакетов и классов. Схема функционирования системы для пользователей. Публикация web-сайта для посетителей.

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

  • Описания системы управления контентом сайта, предназначенной для создания, внедрения и управления коммерческими или некоммерческими веб-сайтами и порталами. Возможности системы DotNetNuke. Анализ функций управления контентом. Установка сайта на сервер.

    курсовая работа [2,9 M], добавлен 11.01.2015

  • Особенности структуры сайта, система управления контентом. Создание и размещение в Интернете web-сайта. Сущность возможных методов продвижения сайтов. Основы Web-аналитики, характеристика мониторинга посещаемости, улучшения защищенности Интернет-сайта.

    дипломная работа [4,1 M], добавлен 15.06.2012

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