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

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    650,72 Кб
  • Опубликовано:
    2014-04-07
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

1. Основные принципы построения распределенных информационных приложений


1.1    Клиент-серверная система


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

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

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

·        компонент представления (визуализации) данных;

·        компонент прикладной логики;

·        компонент управления базой данных.

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

Для локальных приложений, полностью работающих на ПЭВМ (например, Word или Excel), все эти компоненты собраны вместе и не могут быть распределены между различными компьютеры. Такая программа является монолитной и использует для выполнения ресурсы только того компьютера, на котором выполняется.

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

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

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

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

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

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

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

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

1.2    Распределенное трех уровневое приложение

Трехуровневое приложение включает следующие:

·        уровень представления

·        уровень бизнес-логики

·        уровень доступа к данным

Уровень представления представляет собой какую-либо разновидность «тонкого» клиента, который только вызывает сервер, отображает данные и принимает ввод от пользователя.

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

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

На практике эти три уровня, как правило, располагаются на разных машинах. Трехуровневая модель (three-tier model) позволяет обеспечить работу гораздо большего числа клиентов, чем двухуровневая модель, состоящая только из базы данных и клиентского приложения («толстого» (fat) клиента). Трехуровневая модель является более гибкой, т. к. при изменении алгоритмов обработки данных часто достаточно изменить ПО на машине промежуточного звена, которая может обслуживать множество клиентских машин. Кроме того, мощные машины промежуточного звена могут выдерживать значительно большие нагрузки, чем клиентские машины. Введение промежуточного звена также облегчает синхронизацию доступа к базе данных. [38]

Рис. 1.1. Взаимодействие в 3-уровневой архитектуре

Все три уровня отделены друг от друга и располагаются в отдельных, самостоятельных компонентах. В случае изменения какого-нибудь бизнес-правила уже не надо отслеживать сотни связей, потому что это изменение уже подчиняется контракту на использование и четко определяет перечень компонентов из других слоев, с которыми осуществляется взаимодействие. Это несравненно удобнее, чем разработка в любой из перечисленных ранее моделей. Однако здесь не все так гладко, как хотелось бы. Как правило, когда архитекторы систем дозревают до использования этой модели ПО, они сталкиваются с рядом проблем, обусловленных следующим: система, в которой бизнес-слой выделяется в самостоятельный, нуждается в его дополнительном разбиении на два. Действительно, когда созданы предпосылки для инкапсуляции в самостоятельные объекты процессов, моделируемых разрабатываемой системой, становится, очевидно, что вся ее бизнес-логика распадается на клиентскую бизнес-логику и серверную бизнес-логику. При этом клиентская бизнес-логика обеспечивает прием от пользователя и передачу ему данных и информации, которые будут обработаны внутри компонентов серверной бизнес-логики и отображены в слое представлений, соответственно. Так, например, в случае моделирования некоторого объекта платежной системы, скажем, дебетовой электронной карты, можно следующим образом представить это разделение (см. рис. 1.2):

Рис. 1.2. Функциональная схема 3-уровневого приложения

3-х уровневая архитектура подразумевает четкое выделение бизнес-логики. Интересно отметить, что сервисы для вызова бизнес-логики (2nd tier), относятся к 1st tier. А вот интерфейс с базой данных (или любым источником данных) - сразу к 3rd tier.

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

·        масштабируемость

·        конфигурируемость - изолированность уровней друг от друга позволяет (при правильном развертывании архитектуры) быстро и простыми средствами переконфигурировать систему при возникновении сбоев или при плановом обслуживании на одном из уровней.

·        высокая безопасность

·        высокая надежность

·        низкие требования к скорости канала (сети) между терминалами и сервером приложений

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

Недостатки трехуровневого приложения. Недостатки вытекают из достоинств. По сравнению c клиент-серверной или файл-серверной архитектурой можно выделить следующие недостатки трехуровневой архитектуры:

·        более высокая сложность создания приложений;

·        сложнее в разворачивании и администрировании;

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

·        высокие требования к скорости канала (сети) между сервером базы данных и серверами приложений.

1.3    Необходимость использования распределенных приложений в средней школе


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

В Украине разработана законодательная нормативная база, которая определяет принципы применения информационно коммуникационных технологий в системе образования. Это Законы Украины «Об образовании» (в 1991 г.), «О Концепции Национальной программы информатизации, Государственный стандарт базового и полного среднего образования (в 2004 г.), Государственная программа «Информационные и коммуникационные технологии в образовании и науке на 2006-2010 гг., программа «100 процентов владения ИКТ».

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

Это - реальность, поскольку информатизация, несмотря на все препоны, продолжает свое триумфальное шествие по миру. Поэтому информатизация широко применяется в образовании. Сайт учителя является одним из вариантов освещения жизни класса, общения классного руководителя с родителями и детьми. [36]

1.4    Какая информация может заинтересовать пользователя

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

Приступая к созданию любого продукта, в том числе и школьного сайта, необходимо, прежде всего, задать себе вопрос: «Кому он нужен?». Постараемся определиться, кому же нужен школьный сайт? Определившись с этим вопросом, можно обоснованно расписывать его структуру, содержание, внешний вид и технологию ведения и обновления.

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

Зачем учителю нужен персональный сайт.

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

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

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

. Создать на сайте справочник по своему предмету.

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

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

. Показать уровень эрудиции в областях науки и культуры.

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

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

. Тексты на сайте показывают качество знания правил русского языка, культуру своей речи.

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

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

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

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

. Высказывать положительное мнение о творческих успехах своих учеников.

. Через сайт вносить свой вклад в развитие гражданского общества.

. Показать свое уважение и ответственность за культурные и религиозные обычаи и идеи окружающих.

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

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

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

. Участвовать в конкурсах на лучший персональный сайт учителя.

. Получать денежные вознаграждения за свои материалы выложенные на сайте.

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

во-первых, сайт является представительством школы в сети Интернет, источником информации о ней, о ее преподавателях и учениках и т.п.;

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

Что касается того, «кому все это надо и вообще зачем?», то ответ очевиден. Надо, собственно, тем, кто имеет самое непосредственное отношение к школьной жизни.

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

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

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

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

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

Есть весьма точная, формула: сначала ты работаешь на информационных компьютерные технологии, потом они работают на тебя.

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

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

2. Технологии разработки распределенных приложений

2.1    Различные CMS для создания сайта


Система управления содержимым / контентом - компьютерная программа или система, используемая для обеспечения и организации совместного процесса создания, редактирования и управления текстовых и мультимедиа документов (содержимое или контента). Обычно это содержимое рассматривается как неструктурированные данные предметной задачи в противоположность структурированным данным, обычно находящимися под управлением СУБД.

В общем случае CMS делятся на:

·        ECMS - Enterprise Content Management System (Система управления контентом масштаба предприятия)

·        WCMS - Web Content Management System (Система управления Web-контентом).

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

·        Генерация страниц по запросу. Системы такого типа работают на основе связки «Модуль редактирования → База данных → Модуль представления». Модуль представления генерирует страницу с содержанием при запросе на него, на основе информации из базы данных. Информация в базе данных изменяется с помощью модуля редактирования. Страницы заново создаются сервером при каждом запросе, что в свою очередь создаёт дополнительную нагрузку на системные ресурсы. Нагрузка может быть многократно снижена при использовании средств кэширования, которые имеются в современных web-серверах. [40]

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

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

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

учитель сайт начальный приложение

2.2    Движки сайтов (CMS) на PHP


Joomla - одна из наиболее мощных Систем Управления Содержимым с Открытым Кодом- коммерческая система, ориентированная на задачи создания и поискового продвижения корпоративных сайтов.- мощная система для создания сайтов любой направленности.- удобная современная система управления сайтами. Корректировка содержания сайта производится с использованием интуитивно-понятного интерфейса.- форум для вашего сайта. Мощное, полностью масштабируемое и легко изменяемое программное обеспечение для создания конференций.- галерея изображений. Этот инструмент позволит вам закачивать и управлять вашими изображениями с лёгкостью и удобством.CMS - простейшая CMS. PHP.» - интернет магазин.(на английском)- сайтовый движок, предназначеный для создания ресурсов, где каждый может вносить свои правки и свободно писать статьи. Наиболее популярный ресурс на этой технологии - Wikipedia.- универсальный движок, предназначенный для создания веб-сайтов различной степени сложности и тематической направленности. Для создания сайта учителя, я решила выбрать систему управления контентом Joomla. [34]

2.3    Анализ сайтов учителей начальных классов


В эпоху интернета даже учителя начальных классов вынуждены иметь свой сайт. Сайты учителей похожи друг на друга, но и встречаются некоторые отличия, но они как правило единичны.

Меню сайтов делятся, как правило, на пункты для коллег учителей и пункты для родителей.

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

Для родителей пунктов не много меньше и это такие пункты: фотоальбом, советы родителям, ответы почемучкам, книги, работы детей, мнения родителей или гостевая книга.

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

Так же на всех сайтах есть пункт меню в котором рассказано о достижениях педагога, а также о его образовании.

2.4    Joomla. Ее принципы работы

! - система редактирования и управления содержимымweb-сайта, написанная на языках PHP и JavaScript, использующая в качестве хранилища базу данных MySQL. Joomla! является гибкой настраиваемой системой, с помощью которой можно решать широкий круг задач в сфере создания и администрирования web-сайта. Является свободным программным обеспечением, распространяемым под лицензией GNU GPL.

Название «Joomla!» (произносится «Джу́мла») фонетически идентично слову «Jumla», которое в переводе с языка суахили означает «все вместе» или «единое целое», что отражает подход разработчиков и сообщества к развитию системы.

Система управления содержимым Joomla! является ответвлением широко известной CMS Mambo. 16 сентября 2005 года в свет вышла первая версия Joomla!, являющаяся по сути переименованной Mambo 4.5.2.3 и включающая в себя исправления найденных на тот момент ошибок и уязвимостей. В настоящее время актуальна версия 1.5. [26]Joomla! включает в себя различные инструменты для изготовления web-сайта. Важной особенностью системы является минимальный набор инструментов при начальной установке, который дополняется по мере необходимости. Это снижает загромождение административной панели ненужными элементами, а также снижает нагрузку на сервер и экономит место на хостинге.! позволяет отображать интерфейс фронтальной и административной части на любом языке. Каталог расширений содержит множество языковых пакетов, которые устанавливаются штатными средствами администрирования. Доступны пакеты русского, украинского и ещё некоторых языков стран СНГ.

Основные возможности

·        Функциональность можно расширять с помощью дополнительных модулей (расширений, плагинов).

·        Модуль безопасности для многоуровневой аутентификации пользователей и администраторов.

·        Система шаблонов позволяет легко изменять внешний вид сайта.

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

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

Возможности администрирования:

·        для каждой динамической страницы можно создать своё описание и ключевые слова в целях повышения рейтинга в поисковых системах;

·        начало и окончание публикации любых материалов можно запрограммировать по календарю;

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

·        настраиваемые схемы расположения элементов по областям шаблона

·        различные модули (последние новости, счётчик посещений, подробная статистика посещений, гостевая книга, форум и другие);

·        возможность создания не одной, а нескольких форм обратной связи для каждого контакта;

·        модуль приёма от удалённых авторов новостей, статей и ссылок;

·        иерархия объектов;

·        менеджер рассылки новостей. Поддержка более чем 360 служб рассылки новостей по всему миру;

·        встроенный визуальный редактор TinyMCE;

·        ЧПУ - «человекопонятный URL»

·        около 4000 готовых модулей и компонентов.

2.5    Использование MySQL

- компактный многопоточный сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании. MySQL был разработан компанией TcX для внутренних нужд, которые заключались в быстрой обработке очень больших баз данных. Компания утверждает, что использует MySQL с 1996 года на сервере с более чем 40 БД, которые содержат 10,000 таблиц, из которых более чем 500 имеют более 7 миллионов строк.является идеальным решением для малых и средних приложений. Исходники сервера компилируются на множестве платформ. Наиболее полно возможности сервера проявляются на Unix-серверах, где есть поддержка многопоточности, что дает значительный прирост производительности. [1]сервер является бесплатным для некоммерческого использования. Иначе необходимо приобретение лицензии.

2.6    Возможности MySQL

поддерживает язык запросов SQL в стандарте ANSI 92, и кроме этого имеет множество расширений к этому стандарту, которых нет ни в одной другой СУБД.

Краткий перечень возможностей MySQL:

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

·        Количество строк в таблицах может достигать 50 млн.

·        Быстрое выполнение команд. Возможно MySQL самый быстрый сервер из существующих.

·        Простая и эффективная система безопасности.действительно очень быстрый сервер, но для достижения этого разработчикам пришлось пожертвовать некоторыми требованиями к реляционным СУБД. [22]

В MySQL:

·        Не реализована поддержка транзакций. Взамен предлагается использовать LOCK/UNLOCK TABLE.

·        Нет поддержки внешних (foreign) ключей.

·        Нет поддержки триггеров и хранимых процедур.

·        Нет поддержки представлений (VIEW).

Работа с MySQL (сохранение данных в базе данных). Для начала создаем базу данных и таблицу. Входим в MySQL, и выполняем команды:

>CREATE DATABASE products;

>CREATE TABLE clients (name VARCHAR(25), email VARCHAR(25), choise VARCHAR(8));

Для общения с MySQL из PHP понадобятся следующие функции:

intmysql_connect (string hostname, string username, string password);

Создаем соединение с MySQL.

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

Функция возвращает параметр типа int, который больше 0, если соединение прошло успешно, и равен 0 в противном случае.

intmysql_select_db (string database_name, intlink_identifier);

Выбираем базу данных для работы.

Параметры:_name - имябазыданных._identifier - ID соединения, которое получено в функции mysql_connect. (параметр необязательный, если он не указывается, то используется ID от последнего вызова mysql_connect)

Функция возвращает значение true или false

intmysql_query (string query, intlink_identifier);

Функция выполняет запрос к базе данных.

Параметры:- строка, содержащая запрос_identifier - аналогично предыдущей функции.

Функция возвращает ID результата или 0, если произошла ошибка._close (intlink_identifier);

Функция закрывает соединение с MySQL.

Параметры:_identifier - аналогично предыдущему

Функция возвращает значение true или false.

Работа с MySQL (получение данных из базы данных). Здесь работают функции:_num_rows (int result);

Функция возвращает количество строк в результате запроса.

Параметр result - содержит ID результата запроса.

intmysql_result (int result, int i, column);

Функция возвращает значение поля в столбце column и в строке i. [12]

2.7    Язык PHP

- это язык обработки гипертекста (HTML), используемый на стороне сервера (serversidescriptinglanguage), конструкции которого вставляются в HTML-текст. Его цель - позволить максимально быстро создавать динамически генерируемыеweb-страницы. PHP является открытым программным продуктом, что означает его бесплатность и возможность создавать свои собственные расширения языка.

В нескольких словах - на PHP можно обрабатывать данные из форм, генерировать динамические страницы, получать и посылать куки (cookies). Кроме этого в PHP включена поддержка многих баз данных (databases), что делает написание web-приложений с использованием БД до невозможности простым. [16]является самым молодым, перспективным и быстроразвивающимся из языков программирования для Интернет, доля его использования по сравнению с другими языками быстро растет.позволяет отделить HTML-текст от выполняемой части, за счет чего можно добиться значительного снижения затрат времени на разработку проекта. Во многих случаях удается отделить программную часть проекта от разработки страниц на HTML, что облегчает работу и дизайнеру, и программисту. [3]

Основные характеристики:

·        совместимость с различными серверами и платформами;

·        поддержка технологий COM, XML, Java, CORBA, WDDX, MacromediaFlash;

·        поддержка взаимодействия с различными сервисами посредством соответствующих протоколов (LDAP, SNMP, IMAP, NNTP, POP3, HTTP и др.);

·        развитая функциональность для работы с сетевыми соединениями;

·        наличие функций для работы с текстовыми данными любых форматов, включая XML;

·        поддержка свыше 20 баз данных, развитая функциональность для работы с ними;

·        возможность создания полноценных объектно-ориентированных приложений;

·        сравнительно простой синтаксис и удобство в практическом использовании;

·        бесплатность;

·        открытость кода, благодаря которой можно создавать собственные расширения языка.

Синтаксис. PHP-скрипты встраиваются в HTML-код с помощью открывающего тега <? php и закрывающего тега?>. Такого вида специальные теги позволяют переключаться между режимами HTML и PHP. Программа на РНР - это набор команд (инструкций). Обработчику программы необходимо как-то отличать одну команду от другой. Для этого используются специальные символы - разделители. В PHP инструкции разделяются так же, как и в Cи или Perl, - каждое выражение заканчивается точкой с запятой.

Закрывающий тег?> также подразумевает конец инструкции, поэтому перед ним точку с запятой не ставят.

Часто при написании программ возникает необходимость делать какие-либо комментарии к коду, которые никак не влияют на сам код, а только поясняют его. PHP поддерживает несколько видов комментариев: в стиле Cи, C++ и оболочки Unix. Символы // и # обозначают начало однострочных комментариев, /* и */ - соответственно начало и конец многострочных комментариев. [9]

Переменные и константы. Важным элементом каждого языка являются переменные, константы и операторы, применяемые к этим переменным и константам.

Переменные. Переменная в PHP обозначается знаком доллара, за которым следует ее имя (например: $my_var). Имя переменной чувствительно к регистру, т.е. переменные $my_var и $My_var различны.

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

В PHP 3 переменные всегда присваивались по значению. В PHP 4, кроме этого, предлагает еще один способ присвоения значений переменным: присвоение по ссылке. Для того чтобы присвоить значение переменной по ссылке, это значение должно иметь имя, т.е. оно должно быть представлено какой-либо переменной. Чтобы указать, что значение одной переменной присваивается другой переменной по ссылке, нужно перед именем первой переменной поставить знак амперсанд &.

Константы. Для хранения постоянных величин, т.е. таких величин, значение которых не меняется в ходе выполнения скрипта, используются константы. Такими величинами могут быть математические константы, пароли, пути к файлам и т.п. Основное отличие константы от переменной состоит в том, что ей нельзя присвоить значение больше одного раза и ее значение нельзя аннулировать после ее объявления. Кроме того, у константы нет приставки в виде знака доллара и ее нельзя определить простым присваиванием значения. Для определения константы существует специальная функция define(). Ее синтаксис таков: define («Имя_константы», «Значение_константы», [Нечувствительность_к_регистру]).

По умолчанию имена констант чувствительны к регистру. Существует соглашение, по которому имена констант всегда пишутся в верхнем регистре. Получить значение константы можно, указав ее имя. В отличие от переменных, не нужно предварять имя константы символом $. Кроме того, для получения значения константы можно использовать функцию constant() с именем константы в качестве параметра.

Кроме переменных, объявляемых пользователем, в PHP существует ряд констант, определяемых самим интерпретатором. Например, константа FILE хранит имя файла программы (и путь к нему), которая выполняется в данный момент, FUNCTION содержит имя функции, CLASS - имя класса, PHP_VERSION - версия интерпретатора PHP. [35]

Управляющие конструкции. Управляющие конструкции в РНР представлены условными операторами, циклами, операторами передачи управления, операторами включения.

Условные операторы:

·        if. Это один из самых важных операторов многих языков, включая PHP. Он позволяет выполнять фрагменты кода в зависимости от условия. Структура оператора: if (выражение) блок_выполнения;

·        else. Оператор else расширяет if на случай, если проверяемое в if выражение является неверным, и позволяет выполнить какие-либо действия при таких условиях. Структура оператора: if (выражение) блок_выполнения else блок_выполнения1;

·        elseif. Еще один способ расширения условного оператора if. elseif - это комбинация else и if. Как и else, он расширяет if для выполнения различных действий в том случае, если условие, проверяемое в if, неверно. Но в отличие от else, альтернативные действия будут выполнены, только если elseif-условие является верным. Структура оператора:

·        if (выражение) блок_выполнения else if (выражение 1) блок_выполнения

·        else блок_выполнения N

·        switch. Еще одна конструкция, позволяющая проверять условие и выполнять в зависимости от этого различные действия. В зависимости от того, какое значение имеет переменная, switch переключается между различными блоками действия. switch очень похож на оператор if…elseif…else или набор операторов if.

Циклы:

·   while. Простой цикл, предписывающий PHP выполнять команды блока_выполнения до тех пор, пока выражение вычисляется как True. Значение выражения проверяется каждый раз в начале цикла, так что, даже если его значение изменилось в процессе выполнения блока_выполнения, цикл не будет остановлен до конца итерации (т.е. пока все команды блока_выполнения не будут исполнены). Структура цикла: while (выражение) {блок_выполнения};

·        do… while. Очень похож на цикл while, с той лишь разницей, что истинность выражения проверяется в конце цикла, а не в начале. Благодаря этому блок_выполнения цикл do…while гарантированно выполняется хотя бы один раз. Структура цикла: do {блок_выполнения} while (выражение);

·        for. Структура цикла: for (выражение1; выражение2; выражение3) {блок_выполнения}

·        foreach. Предназначен исключительно для работы с массивами. Структура: foreach ($arrayas $value) {блок_выполнения}.

·   Операторы передачи управления:

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

·        continue. Позволяет пропустить дальнейшие инструкции из блока_выполнения любого цикла и продолжить выполнение с нового круга.

Операторы включения:

·        include. Позволяет включать код, содержащийся в указанном файле, и выполнять его столько раз, сколько программа встречает этот оператор. Включение может производиться любым из перечисленных способов: include 'имя_файла'; include $file_name; include («имя_файла»);

·        require. Действует примерно так же, как и include. Основное отличие require и include заключается в том, как они реагируют на возникновение ошибки: include выдает предупреждение, и работа скрипта продолжается; ошибка в require вызывает фатальную ошибку работы скрипта и прекращает его выполнение. [24]

Обработка запросов. Формы. Любой запрос клиента к серверу должен начинаться с указания метода. Метод сообщает о цели запроса клиента. Протокол HTTP поддерживает достаточно много методов, но реально используются только три: POST, GET и HEAD. Метод GET позволяет получить любые данные, идентифицированные с помощью URL в запросе ресурса. Если URL указывает на программу, то возвращается результат работы программы, а не ее текст (если, конечно, текст не есть результат ее работы). Дополнительная информация, необходимая для обработки запроса, встраивается в сам запрос (в строку статуса). При использовании метода GET в поле тела ресурса возвращается собственно затребованная информация (текст HTML-документа, например).

Метод HEAD аналогичен методу GET, только не возвращает тело ресурса и не имеет условного аналога. Метод HEAD используют для получения информации о ресурсе. Это может пригодиться, например, при решении задачи тестирования гипертекстовых ссылок.

Метод POST разработан для передачи на сервер такой информации, как аннотации ресурсов, новостные и почтовые сообщения, данные для добавления в базу данных, т.е. для передачи информации большого объема и достаточно важной. В отличие от методов GET и HEAD, в POST передается тело ресурса, которое и является информацией, получаемой из полей форм или других источников ввода.

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

Для обращения к переменным, переданным с помощью HTTP-запросов существует специальный массив - $_REQUEST. Он содержит данные, переданные методами POST и GET, а также с помощью HTTP cookies. Это суперглобальный ассоциативный массив, т.е. его значения можно получить в любом месте программы, используя в качестве ключа имя соответствующей переменной (элемента формы).

2.8    Функции


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

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

С помощью аргументов данные в функцию можно передавать тремя различными способами. Это передача аргументов по значению (используется по умолчанию), по ссылке и задание значения аргументов по умолчанию.

Когда аргумент передается в функцию по значению, изменение значения аргумента внутри функции не влияет на его значение вне функции. Чтобы позволить функции изменять ее аргументы, их нужно передавать по ссылке. Для этого в определении функции перед именем аргумента следует написать знак амперсанд «&». [41]

В РНР существует несколько встроенных функций: echo(), print(), date(), include. Все, кроме date(), являются языковыми конструкциями. Они входят в ядро PHP и не требуют никаких дополнительных настроек и модулей. Функция date() тоже входит в состав ядра PHP и не требует настроек. Но есть и функции, для работы с которыми нужно установить различные библиотеки и подключить соответствующий модуль. Например, для использования функций работы с базой данных MySql следует скомпилировать PHP с поддержкой этого расширения. В последнее время наиболее распространенные расширения и соответственно их функции изначально включают в состав PHP так, чтобы с ними можно работать без каких бы то ни было дополнительных настроек интерпретатора.

2.9    Классы и объекты


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

Имя класса должно удовлетворять правилам именования объектов в языке PHP, но есть ряд имен, которые зарезервированы разработчиками для своих целей. В первую очередь это имена, начинающиеся с символа подчеркивания «_». Для создания классов и функций нельзя использовать такие имена. Кроме того, зарезервировано имя stdClass, поскольку оно используется внутри движка PHP.

Переменная нужного типа создается из класса с помощью оператора new. Создав объект, мы можем применять к нему все методы и получать все свойства, определенные в описании класса. Для этого используют такой синтаксис: $имя_объекта->название_свойства или $имя_объекта->название_метода (список аргументов). Перед названием свойства или метода знака $ не ставят.

<? php

$art = newArticles;

 // создаем объект $art($art ->title);

// выводим название объекта $art

$another_art = newArticles;

// создаем объект $another_art

$another_art->show_article();
 // вызываем метод для отображения объекта в браузер

Каждый из объектов класса имеет одни и те же свойства и методы. Так, у объекта $art и у объекта $another_art есть свойства title, description, author и методы Articles(), show_article(). Но это два разных объекта. Представим себе объект как директорию в файловой системе, а его характеристики - как файлы в этой директории. Очевидно, что в каждой директории могут находиться одинаковые файлы, но тем не менее они считаются различными, поскольку хранятся в разных директориях. Точно так же свойства и методы считаются различными, если они применяются к разным объектам. Чтобы получить нужный файл из директории верхнего уровня, мы пишем полный путь к этому файлу. При работе с классами нужно указывать полное имя функции, которую мы хотим вызвать. Директорией верхнего уровня в PHP будет пространство глобальных переменных, а путь указывается с помощью разделителя ->. Таким образом, имена $art->title и $another_art->title обозначают две разные переменные. [27]

Работа с файлами. В PHP не существует функции, предназначенной именно для создания файлов. Большинство функций работают с уже существующими файлами в файловой системе сервера. Чтобы создать самый обычный файл, нужно воспользоваться функцией, которая открывает локальный или удаленный файл. Называется эта функция fopen(). Она связывает данный файл с потоком управления программы. Причем связывание бывает различным в зависимости от того, что мы хотим делать с этим файлом: читать его, записывать в него данные или делать и то и другое.

Синтаксис этой функции такой:(имя_файла, тип_доступа

[, use_include_path])

В результате работы эта функция возвращает указатель (типа ресурс) на открытый ею файл. В качестве параметров этой функции передаются: имя файла, который нужно открыть, тип доступа к файлу (определяется тем, что мы собираемся делать с ним) и, возможно, параметр, определяющий, искать ли указанный файл в include_path. [18]

Значения, принимаемые параметром тип_доступа:

·       r - открывает файл только для чтения; устанавливает указатель позиции в файле на начало файла.

·        r+ - открывает файл для чтения и записи; устанавливает указатель файла на его начало.

·        w - открывает файл только для записи; устанавливает указатель файла на его начало и усекает файл до нулевой длины. Если файл не существует, то пытается создать его.

·        w+ - открывает файл для чтения и записи; устанавливает указатель файла на его начало и усекает файл до нулевой длины. Если файл не существует, то пытается создать его.

·       a - открывает файл только для записи; устанавливает указатель файла в его конец. Если файл не существует, то пытается создать его.

·        a+ - открывает файл для чтения и записи; устанавливает указатель файла в его конец. Если файл не существует, то пытается создать его.

·        x - создает и открывает файл только для записи; помещает указатель файла на его начало. Если файл уже существует, то fopen() возвращает false и генерируется предупреждение. Если файл не существует, то делается попытка создать его. Этот тип доступа поддерживается начиная с версии PHP 4.3.2 и работает только с локальными файлами.

·        x+ - создает и открывает файл для чтения и записи; помещает указатель файла на его начало. Если файл уже существует, то fopen() возвращает false и генерируется предупреждение. Если файл не существует, то делается попытка создать его. Этот тип доступа поддерживается, начиная с версии PHP 4.3.2, и работает только с локальными файлами.

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

Для того, чтобы записать данные в файл, доступ к которому открыт функцией fopen(), можно использовать функцию fwrite(). Синтаксис у нее следующий:(указатель на файл, строка [, длина])

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

Если необходимо прочитать данные из существующего файла, одной функции fopen() недостаточно. Она лишь возвращает указатель на открытый файл, но не считывает ни одной строки из этого файла. Поэтому для того, чтобы прочитать данные из файла, нужно воспользоваться одной из специальных функций: file, readfile, fread, fgets и т.п.

Функция fread осуществляет чтение данных из файла. Ее можно использовать и для чтения данных из бинарных файлов, не опасаясь их повреждения. Синтаксис fread():(указатель на файл, длина)

В результате работы функция fread() возвращает строку со считанной из файла информацией. [39]

С помощью функции fgets() можно считать из файла строку текста. Синтаксис этой функции практически такой же, как и у fread(), за исключением того, что длину считываемой строки указывать необязательно:(указатель на файл [, длина])

В результате работы функция fgets() возвращает строку длиной (длина минус 1) байт из файла, на который указывает указатель на файл. Чтение заканчивается, если прочитано (длина минус 1) символов и встретился символ перевода строки или конец файла.

Функция readfile() считывает файл, имя которого передано ей в качестве параметра имя_файла, и выводит его содержимое на экран.

Синтаксис:(имя_файла [, use_include_path])

Функция file() предназначена для считывания информации из файла в переменную типа массив. Синтаксис у нее такой же, как и у функции readfile(), за исключением того, что в результате работы она возвращает массив:

array file (имя_файла [, use_include_path])

Для того, чтобы удалить файл с помощью языка PHP, нужно воспользоваться функцией unlink(). Синтаксис этой функции можно описать следующим образом: boolunlink (имя_файла).

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

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

3. Этапы разработки шаблона сайта учителя

3.1    Применение шаблона сайта учителя начальных классов при помощи CMS «Joomla!»

Шаблоны дизайна. Стандартная тема оформления «Joomla!» подходит для демонстрации возможностей системы, но никак не для создания полноценного веб-сайта.

Для использования собственного графического шаблона, необходимо загрузить в папку «/templates/» свою тему оформления, изготовленную по специальным стандартам. В данном случае, у шаблона «Сайт учителя начальных классов» название темы - «Сайт учителя». Оформление было изготовлено до выполнения проекта стороной заказчика и по его просьбе не изменялось. Применить загруженный шаблон возможно через меню административного интерфейса: «Сайт» - «Шаблоны» - «Шаблоны сайта». Интерфейс выбора шаблона представлен на рис. 3.1. [33]

Рисунок 3.14 - Выбор шаблона дизайна сайта

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

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

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

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

Стоит отметить отдельно, что позиции вывода модулей определяются в шаблоне оформления, действующем на странице. Кроме того, в «Joomla!» существует специальная таблица позиций модулей. Для того, чтобы обозначить в системе позицию модуля, необходимо перейти по следующей ссылке: «#"724862.files/image004.jpg">

Рис. 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;= 76 54 32 10.

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

Потребуются 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= B= C= 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= BB + B= 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)

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

}

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

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

}($article_id == null || $article_id == '' ||! is_numeric ($article_id)) {false;

}

$db =& JFactory:getDBO();

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

$db->setQuery($query);

$rows = $db->loadObjectList();(count($rows) == 0) {false;

}

$created_by = $rows[0]->created_by;('joomla.application.component.helper');

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

$who_can_add = $params->get ('who_can_add', 'author');(($who_can_add == 'author') && ($user->get('id') == $created_by)) {true;

}($who_can_add == 'logged_in') {

return true;

}false;

}

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

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

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

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

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

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

  

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

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

class modClockHelper {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 с.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Приложение А

<script type= «text/javascript»>slideShowSpeed = 5000Pic = new Array()Descr = new Array()URL = new Array()

<? php

$i = 0;

$j = 0;($i < count ($fn_cache) && ($ft_cache)) {«Pic[$i] = '».$fn_cache[$i]. «'\n»;«Descr[$i] = '».$ft_cache[$i]. «'\n»;«URL[$i] = '».$url_cache[$i]. «'\n»;(@$id_cache[$i] == $id) {

$j = $i;

}

$i++;

}

?>tj = <? php echo «$j\n»?>currentLocation = <? php echo «$j\n»?>;p = Pic.lengthpos = jpreLoad = new Array()preLoadPic(index) {(Pic[index]!= «) {.status = 'Loading: ' + Pic[index][index] = new Image()[index].src = Pic[index][index] = ''.status = ''

}

}runSlideShow() {(preLoad[j]) {.images. SlideShow.src = preLoad[j].src.getElementById('ImgText').innerHTML = Descr[j]

}= j;= j + 1(j > (p - 1)) j = 0= setTimeout ('runSlideShow()', slideShowSpeed)(j)}endSlideShow() {= 1= j - 1.location = URL[j]

}(j)

</script>

<? php('_JEXEC', 1);(«Content-type: image/png»);('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'];($i_shield, 5,5,2,$dgrandom,$white);($i_shield);($i_shield);

Приложение Б

EasybookReloadedController extends JController {display() {:display();}publish_mail()                      {

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

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

$model = $this->getModel('entry');($model->publish()) {-1:

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

$type = 'error';;0:

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

$type = 'message';;1:

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

$type = 'message';;}

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

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

$type = 'error';

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

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

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

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

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

$type = 'error';}{

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

$type = 'message';}

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

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

$type = 'error';

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

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

$error = $this->performMail($hashrequest);($error == false)        {:setVar ('view', 'entry');:setVar ('layout', 'commentform_mail');:setVar ('hidemainmenu', 1);:display();}{

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

$type = 'error';

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

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

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

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

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

$type = 'error';}{

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

$type = 'message';}

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

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

$type = 'error';

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

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

$error = $this->performMail($hashrequest);($error == false)        {:setVar ('view', 'entry');:setVar ('layout', 'form_mail');:display();}       {

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

$type = 'error';

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

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

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

$error = $this->performMail($hashrequest);($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');($model->store()) {($params->get ('default_published', true))     {

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

$type = 'message';}{

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

$type = 'notice';}

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

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

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

$type = 'notice';}

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

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

$type = 'error';

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

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

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

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

$error = false;('joomla.utilities.simplecrypt');

$crypt = new JSimpleCrypt();($hashrequest == «) {

$error = true;$error;}

$hash = base64_decode($hashrequest);

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

$hash = unserialize($hash);(isset ($hash['id'])) {

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

$error = true;$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;($date_entry->toUnix() + $valid_time_emailnot <= $date_now->toUnix()) {

$error = true;$error;}(md5 ($gbrow->get('gbmail'))!= $hash['gbmail']) {

$error = true;$error;}($gbrow->get('gbname')!= $hash['username']) {

$error = true;$error;}($hash ['custom_secret']!= $secretword)       {

$error = true;$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);($hash!= $hashrequest) {

$error = true;$error;}$error;}}

Похожие работы на - Создание сайта учителя

 

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