Создание сайта учителя
Принципы построения распределенных информационных приложений. Распределенное трех уровневое приложение. Необходимость использования приложений в средней школе. Системы управления контентом для создания сайта. Анализ сайтов учителей начальных классов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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