Социальная сеть
Анализ структуры социальной сети. Рассмотрение основных функций автоматизированной информационной системы: регистрация и аутентификация пользователей, администрирование. Этапы разработки программно-информационного компонента. Назначение web-сервисов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 27.10.2012 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
социальный сеть автоматизированный администрирование
В настоящее время Интернет занимает огромное место в жизни человека. В отличие от Интернета «раннего» периода, в настоящий момент он не представлен просто сайтами, на которых размещена та или иная информация, а также ссылки на прочие ресурсы либо каталоги файлов. Это уже и не просто совокупность сервисов наподобие онлайн-переводчиков, электронных словарей или web-интерфейсов для электронных почтовых ящиков.
В современном Интернете web-сервисы начинают интегрироваться с «настольными» приложениями, перенимая типичные для них интерфейс, поведение и возможности. Среда Интернет позволяет также организовать многопользовательскую работу с документами, проектами, обмениваться различной информацией в едином сервисе с людьми, зарегистрированными в нем и разделенными большими расстояниями.
Одним из видов сервисов коллективной работы пользователей являются социальные сети. Социальная сеть - это совокупность социальных элементов (людей, групп, организаций, сообществ), которые обмениваются между собой различными данными. Такими данными могут быть как простые текстовые сообщения, так и изображения, видео- и аудиофайлы.
Переходя к теме простых сообщений, следует отметить, что в большинстве случаев они не несут значимой смысловой нагрузки и сводятся к простому диалогу между пользователями, который мог бы быть произойти, к примеру, при личной встрече. Возникает закономерный вопрос: почему бы не использовать социальную сеть для обмена действительно полезной информацией? Причем информация эта необязательно должна быть полезна определенному кругу людей - знакомых, коллег, учащихся одного учебного заведения: можно давать информацию, которая была бы полезна более широким группам людей, в конечном итоге - их социуму. Это могут быть как программисты, студенты, так и люди, не объединенные каким-либо занятием, но имеющие общие интересы, к примеру, в истории или в выращивании комнатных растений.
Однако, так как объемы информации по интересующим тематикам достаточно велики, можно давать ссылки на ресурсы в Интернете, на которых находится необходимая информация. Обычно человек, часто пользующийся Интернетом, имеет набор любимых ресурсов, которые сохранены средствами браузера в «Избранном», «Закладках» и т.п. Но при работе на другом компьютере возникает проблема синхронизации любимых ссылок. В этом деле может помочь web-ресурс, на котором человек может сохранить свои ссылки, а затем, зайдя в свой профиль, найти нужную. Связав это с возможностью просмотра ссылок прочих пользователей, их разделением по категориям, возможностью отправки личных сообщений (для консультаций или простого общения), мы получим социальную сеть - обменник ссылками. В современном мире эта возможность будет весьма актуальна -поиск информации в поисковых сервисах не дает хороших результатов по причине отсутствия качественного искусственного интеллекта в системах релевантности и большого количества т.н. «поискового спама». В социальной же сети пользователи сами отбирают только лучшие ресурсы с необходимыми материалами, что позволяет легко рекомендовать эти же ресурсы другим людям, интересующимся данной тематикой.
Дипломный проект проводится с целью:
- систематизации и закрепления полученных теоретических знаний и практических умений по общепрофессиональным и специальным дисциплинам («Операционные системы и среды», «Основы алгоритмизации и программирования», «Архитектура ЭВМ и вычислительных систем», «Базы данных», «Автоматизированные информационные системы») а также практики по эксплуатации программных средств информационных систем;
- углубления теоретических знаний в соответствии с заданной темой;
- формирования умений применять теоретические знания при решении поставленных вопросов;
- формирования умений использовать справочную, нормативную и правовую документацию;
- подтверждения квалификации выпускника.
Назначение и цели создания системы
Данная система создана для упрощения коммуникации большой группы пользователей, интересующихся определенной предметной областью. Она позволит этим людям общаться между собой, автоматически выдавать рекомендуемые ссылки по принципу «сходности мышлений», а также эффективно управлять личной коллекцией ссылок, при необходимости имея быстрый поиск интересующей информации.
Создание подобного ресурса в сети Интернет имеет следующие преимущества:
- уменьшение затрат времени на поиск необходимой информации в Интернете;
- отсутствие необходимости установки дополнительных программ для обмена сообщениями с другими пользователями;
- расширение кругозора конечных пользователей, выраженное в виде обмена ссылками на источники информации;
- решение проблемы синхронизации «Избранного»;
- возможность получать доступ с экрана карманного компьютера либо подобного мобильного устройства.
Уменьшение затрат времени на поиск информации происходит благодаря тому, что пользователь не ищет ее на поисковых серверах, отсеивая бесполезные страницы или страницы, содержащие комбинации слов поискового запроса, но не соответствующих его тематике, а находит ссылки у других пользователей по ключевым словам либо по категориям.
Для обмена сообщениями необходим только веб-браузер, причем пользователь продолжает находиться в системе и может продолжить работу, ожидая ответного сообщения.
Функция «рекомендации ссылок» позволит людям, интересующимся некоторым ресурсом, находить подобные ему, причем эти ссылки должны присутствовать и у иных пользователей, чтобы исключить материалы, интересные лишь одному человеку. Данная функция не исключает, тем не менее, возможности найти эти материалы посредством поиска или просто просматривая профили других пользователей.
Человеку, имеющему несколько компьютеров или просто выходящему в Сеть из места, где нет доступа к его ПК, больше не нужно вспоминать нужные ссылки либо вновь их искать на поисковых серверах. Посредством единого сервера достаточно лишь помнить свой ID пользователя и адрес ресурса данной социальной сети.
На современных карманных компьютерах средства просмотра web-страниц (Safari на iPhone, Opera на Windows Mobile-коммуникаторах) позволяют работать с ними почти так же, как и на настольной системе. Различие лишь в том, что пользователь видит «макет» страницы и может приближать для детального просмотра некоторые ее части. Благодаря простой и логичной структуре пользовательского интерфейса сделать необходимое будет очень просто.
Описание предметной области
В социальной сети присутствуют два типа пользователей: администраторы (также выполняющие роль модераторов) и обычные пользователи. Между обычными пользователями нет никаких различий и никто из них не обладает большими, чем другие, возможностями и полномочиями. Администратор также может иметь свой профиль, который для прочих пользователей не будет ничем отличаться. Но, находясь внутри системы, администратору будут доступны некоторые дополнительные возможности.
Таким образом, структуру социальной сети и взаимодействие процессов в ней можно представить в виде, изображенном на рисунке 1.
Рис. 1
Как видно из рисунка, основой социальной сети является «личный кабинет». Он присутствует как у администратора, так и у простых пользователей, и различается лишь возможностями. Отметим, что администратор может влиять на содержимое личных кабинетов других пользователей, исключая личные сообщения, т.к. законы РФ предполагают наказание за нарушение тайны личной переписки.
Процесс работы в системе можно описать следующим образом:
- пользователь регистрируется в системе, придумывая себе логин и пароль, если у него еще нет учетной записи;
- он авторизуется в системе и получает полный доступ к своему личному кабинету;
- после этого он может начать управлять списком своих закладок, личными сообщениями, своими анкетными данными.
- перемещаясь по кабинетам прочих пользователей, он может просматривать их закладки, добавлять их в свой список, читать данные в их профилях.
- если пользователь является администратором, то он может редактировать учетные данные прочих пользователей, блокировать их и делать изменения в списках ссылок; также он может редактировать внешний вид ресурса.
- в конце работы с системой пользователь может выйти, стирая тем самым сохраненные для авторизации данные либо просто закрыть браузер, после чего при следующем входе на сайт он автоматически зайдет в свой личный кабинет авторизованным, если установил параметр «запомнить меня».
Описание постановки задачи. Функциональная структура АИС
В результате анализа предметной области была составлена функциональная структура АИС, приведенная на рисунке 2.
Рис. 2
В АИС выделены три основные функции:
- регистрация и аутентификация пользователей - выполняет задачи доступа пользователей к необходимым возможностям системы, тогда как незарегистрированным пользователям допускается только просмотр и поиск данных;
- работа с личными кабинетами - выполняет задачи обеспечения пользователей всеми необходимыми возможностями, является центральной частью системы;
- администрирование - выполняет задачи по управлению учетными данными пользователей, а также содержимым, находящимся внутри их личных кабинетов.
Характеристика комплекса задач
Описание выявленных задач данной АИС:
1) функция «Авторизация и аутентификация» должна решать следующие задачи:
- регистрация нового пользователя;
- сохранение его учетных данных в БД, причем пароль должен храниться в надежно зашифрованном виде;
- доступ к функциям системы посредством авторизации;
- смена пароля пользователя;
- защита от атак типа SQL-Injection.
2) функция «Личный кабинет» должна решать следующие задачи:
- доступ к возможностям системы в своем кабинете;
- доступ в режиме чтения к частям личных кабинетов других пользователей;
- управления личными сообщениями;
- управления закладками;
- управления личными настройками пользователя.
3) функция «Администрирование» должна выполнять задачи:
- редактирование шаблонов оформления сайта;
- работы с учетными записями пользователей;
- работы с их анкетными данными;
- работы с данными их закладок.
Выходная информация
В виду специфики системы вся выходная информация представлена в виде экранных форм, технически реализованных как web-страницы.
При выполнении задач системы с правами обычного пользователя ему выдаются следующие экранные формы, перечисленные в таблице 1.Таблица 1
ID |
Наименование |
Задача |
Периодичность |
|
Э1 |
Главная страница |
Приглашение входа в систему, ссылка для регистрации |
При каждом входе пользователей в систему |
|
Э2 |
Страница регистрации |
Форма для ввода придуманных пользователем логина и пароля |
При первом запуске системы |
|
Э3 |
Страница профиля |
Отображение ссылок для входа в возможности системы, на ней выводятся также анкетные данные |
При успешных авторизациях и по требованию пользователя |
|
Э4 |
Страница закладок |
Содержит список закладок, разделенный на части, с возможностью перемещения между ними, а также элементами управления для их поиска, редактирования, добавления и удаления |
По требованию пользователя, после создания или изменения/удаления закладки |
|
Э5 |
Страница личных сообщений |
Содержит списки входящих и исходящих сообщения, а также их текст |
По требованию пользователя |
|
Э6 |
Страница поиска |
Содержит элементы управления для выбора категории закладок либо поля ввода ключевых слов (для названия ссылки, части адреса, описания) |
По требованию пользователя для поиска своих ссылок или нахождения новых |
|
Э7 |
Страница рекомендаций |
Выводит список рекомендуемых ссылок с возможностью добавления |
По требованию пользователя |
|
Э8 |
Страница анкетных данных |
Содержит поля ввода для анкетных данных. Ни одно из полей не является обязательным |
По требованию пользователя |
|
Э9 |
Страница смены пароля |
Содержит поля ввода для ввода старого пароля (в целях безопасности) и нового |
По требованию пользователя |
|
Э10 |
Страница загрузки аватара |
Содержит элемент управления выбором файла и текущий аватар |
По требованию пользователя |
|
Э11 |
Страница управления пользователями |
Содержит элемент ввода ID пользователя и элемент управления для редактирования его анкеты, а также возможность его блокировки |
По требованию администратора |
|
Э12 |
Страница работы с закладками |
Позволяет удалять нежелательные закладки или редактировать их описания по соображениям цензуры. Содержит элементы для поиска описаний и адресов. |
По требованию администратора |
|
Э13 |
Работа с шаблонами сайта |
Позволяет редактировать содержимое верхней и нижней частей ресурса, а также таблицу стилей |
По требованию администратора |
В состав выходных сообщения входят структурные единицы, перечисленные в таблице 2.
Таблица 2
Наименование |
Формат |
ID выходного сообщения |
|
Псевдоним |
Строка символов, до 20 символов |
Э8, Э3, Э11 |
|
Интересы |
Текст, до 2 Кб |
Э8, Э3, Э11 |
|
Логин и пароль |
Строки текста, до 20 символов |
Э2, Э9 |
|
Заголовок и адрес закладки |
Строки текста, до 1 Кб |
Э4, Э7, Э11, Э6, Э12 |
|
Дата рождения, дата сообщения |
Временной с поддержкой дат |
Э8, Э3, Э11, Э5 |
|
Текст сообщения |
Строки текста, до 1 Кб |
Э5 |
|
Аватар |
Изображение, до 1 Мб |
Э10, Э3, Э11 |
|
Исходный код |
Текст, до 20 Кб |
Э13 |
Входная информация
Входной информацией являются данные учетной записи пользователя, которые он придумывает сам, данные анкеты, вводимые по собственному желанию, данные ссылок, сообщения, а также исходный код, который как вводится администратором, так и отображается ему. Входная информация перечислена в таблице 3.
Таблица 3
ID |
Наименование |
Форма получения |
Источник |
Срок получения |
|
Q1 |
Анкета пользователя |
Электронная |
Пользователь |
После заполнения |
|
Q2 |
Личное сообщение |
Электронная |
Пользователь |
После заполнения |
|
Q3 |
Данные закладки |
Электронная |
Пользователь |
После заполнения |
|
Q4 |
Код шаблонов |
Электронная |
Администратор |
После заполнения |
Ввиду двусторонней связи пользователя и системы, структурные единицы входной информации являются идентичными структурным единицам входной, что обусловлено технической реализацией системы.
Концептуальная модель системы
Автоматизированная система имеет четкую специализацию, поэтому она должна быть сведена к решению конкретных задач. Так как она является системой, предназначенной для работы в Интернете, то работа с ней возможна с клиентских станций, соединяющихся с веб-сервером и сервером БД. Интерфейс системы прост и нагляден, количество элементов управления соответствует минимуму, необходимому для решения задач в ней. После того как были определены назначение и цели создания системы, требования к её концепции, выполнена постановка задачи, можно сделать обоснованный выбор технических средств и программного обеспечения.
Технические средства серверной части должны соответствовать минимальным системным требованиям:
- процессор Pentium 4 3,2 ГГц;
- ОЗУ -2 Гб ;
- 80 Гб свободного пространства на жестком диске;
- видеокарта - 32 Мб с поддержкой разрешения 800х600 и 32-битного цвета или выше;
- клавиатура;
- операционная система - в случае Windows-систем: Windows 2000 Server/Windows XP Professional/Windows 2003 Server/Windows 2008 Server; в случае UNIX-систем: FreeBSD 6.5+, OpenBSD 4+, Linux (любой дистрибутив) с ядром версии 2.6+.
К клиентским машинам предъявляются обычные для работы в Интернете требования:
- процессор Pentium 1000 Гц;
- 128 Мб ОЗУ;
- от 500 до 1000 Мб на жестком диске;
- видеокарта 32 Мб с поддержкой разрешения 800х600 и 32-битного цвета или выше;
- клавиатура;
- мышь;
- операционная система - Microsoft Windows 98/ME/NT/2000/XP/2003/Vista, Linux 2.4+, MacOS 9+, FreeBSD 5+, OpenBSD 3+, NetBSD.
Концептуальная модель данных
Концептуальная модель представляет объекты и их взаимосвязи без указания способов их физического хранения, т.е. представляет собой отражение предметной области. При проектировании концептуальной модели усилия разработчика должны быть направлены в основном на структуризацию данных и выявление взаимосвязей между ними без рассмотрения особенностей реализации и вопросов эффективности обработки. Проектирование концептуальной модели основано на анализе решаемых, на предприятии задач по обработке данных. Концептуальная модель данных представлена на рисунке 3.
Рис. 3
Логическое проектирование. Логическая модель данных
Логическая модель данных разворачивается из концептуальной следующим образом: каждый объект (сущность) характеризуется собственными атрибутами. При этом какой-либо атрибут может стать объектом. Если атрибуты во многих объектах повторяются, то их убирают, оставляя только при одном объекте, а в остальных используют уменьшенный код этого атрибута. Далее для каждой сущности находятся первичные и альтернативные ключи, через которые поддерживается целостность данных.
Логическая модель должна быть оптимизирована путём перегруппировки элементов данных, согласно поставленным задачам, избавления от избыточности данных, в реляционных системах устанавливаются отношения между сущностями.
В представленной выше концептуальной модели выделяются следующие сущности: пользователь, его анкета, сообщения и закладки. Определив атрибуты каждой сущности и исключив повторяющиеся, мы приводим их ко второй нормальной форме. Кроме того, атрибуты необходимо исключать путем глубокого понимания тех задач и ограничений, которые стоят перед системой. Так, не имеет смысла разделять дату и время, т.к. в системе они нигде не обрабатываются, а лишь выводятся, и их запись по отдельности уменьшит производительность и увеличит расходы памяти.
Для описания всех объектов предметной области необходимо определить атрибуты, свойственные данным сущностям. Таким образом мы привели таблицу ко второй нормальной форме, т.е. исключили повторяющиеся группы и для каждого набора связных атрибутов создали отдельную таблицу и снабдили её первичным ключом. Результат можно увидеть в таблице 5.
Таблица 5
Сущность |
Первичный ключ |
Атрибуты |
|
Пользователь |
Уникальный ключ пользователя Номер пользователя |
Номер пользователя Логин Пароль Статус в системе |
|
Анкета пользователя |
Уникальный ключ пользователя Номер пользователя |
Номер пользователя Псевдоним Дата рождения Номер ICQ Интересы Хобби Род занятий Аватар |
|
Сообщения |
Уникальный ключ сообщения Номер сообщения |
Номер сообщения Номер отправителя Номер адресата Тема Текст сообщения Дата и время Статус удаления |
|
Закладки |
Уникальный ключ закладки Номер закладки |
Номер закладки Номер пользователя Название Описание URL-адрес Тип категории |
Для каждой сущности мы задаем первичный и (по условию, предъявляемому к работе системы с данной сущностью) альтернативный ключи, которыми связываем сущности в реляционные отношения. С помощью связей можно организовать видимую связь между данными, которая отражена в описании предметной области. В таблице не отражена сущность «Администратор», т.к. она полностью аналогична и, более того, технически реализована неотделимо от сущности «Пользователь». Логическая модель данных автоматизированной системы отражена на рисунке 4.
Рис. 4
Алгоритм работы автоматизированной системы
Кроме непосредственно разработки логической модели данных, логическое проектирование охватывает построение алгоритмов решения тех типовых задач, которые встречаются в системе и могут быть выделены в целое множество задач подобного рода, которое можно найти практически в любой автоматизированной системе, так или иначе осуществляющей обработку информации и выдачу некоторого результата работы системы, зависящего от произведенных пользователем действий.
Таким образом, большинство задач, стоящих перед автоматизированной системой, должны быть решены посредством типовых либо переработанных алгоритмов решения, измененных под нужды данной системы. Такими алгоритмами являются:
1) добавление данных, происходит посредством оператора языка SQL INSERT;
2) удаление данных - с помощью оператора языка SQL DELETE;
3) изменение данных - посредством оператора языка SQL UPDATE;
4) вывод данных - в поля редактирования, с помощью оператора языка SQL SELECT и средств клиента;
Рассмотрим алгоритм работы автоматизированной системы в укрупненном виде. Он приведен на рисунке 5.
Рис.
Информационная безопасность системы
Специфика системы такова, что она может быть атакована следующими видами атак, характерными для сети Интернет:
1) Отказ в обслуживании. Бывает двух типов: обычный (DoS) и распределенный (DDoS), который гораздо опаснее. Если при обычном типе атаки участие в ней принимают 1 или несколько компьютеров, то подобная атака обычно не может нанести ущерба при наличии достаточно мощного сервера и достаточно широкой пропускной способности его канала. Кроме того, достаточно средствами сервера узнать IP-адрес атакующего (это можно сделать при помощи как специальных пакетов - систем обнаружения атак (IDS), так и при помощи простых программ - анализаторов логов и сетевой активности). Затем можно средствами ОС, МСЭ или специализированными программами запретить подключения с этих адресов. Однако при распределенной атаке злоумышленник имеет большую сеть компьютеров (обычно зараженных вирусами типа «троянский конь», и владельцы их даже не догадываются о сетевой активности этих компьютеров), которым он может отдавать команды для отправки пакетов на ресурс. Такие сети называются «ботнетами» и защититься от их атаки весьма сложно. По достижению суммарной пропускной способности их каналов равенства каналу сервера он начинает заметно сбоить, а в его работе начинаются заметные задержки. По превышению пропускной способности сервер перестает успевать обрабатывать запросы и либо зависает, либо самопроизвольно завершает свою работу с ошибкой. Блокировать приходится целые подсети, что не всегда представляется возможным.
2) Подбор паролей. Данный тип атак производится путем перебора всех возможных комбинаций логина и пароля на какой-либо сервис или для доступа в закрытую часть сайта. Взломщик может воспользоваться как готовыми программами, такими как MyBrute для Windows или консольный переборщик hydra для UNIX-систем, так и программами собственного написания, сделанными специально для подбора пароля для входа на конкретный ресурс. Атака производится либо одним из трех типов (по словарю, посимвольный перебор, перебор с учетом известной части пароля), так и комбинированным методом. Защититься от атак можно, блокируя подключения с IP-адресов proxy-серверов, которыми пользуется взломщик, а также используя сложные пароли типа kF1pwZ86NG3t!
3) Атаки на уязвимые сервисы. Посредством специальных программ (например, nmap) взломщик может сделать сканирование сервисов системы («fingerprinting»), узнать их версии. Имея на руках описание свежей ошибки в одном из сервисов, взломщик может дождаться появления программы взлома под эту версию (т.н. эксплоит) либо написать подобную программу сам, что предполагает его высокую квалификацию. Наиболее профессиональные хакеры самостоятельно ищут ошибки в программном обеспечении и создают «0-day»-эксплоиты, находящиеся в распоряжении узкого круга знакомых хакера. Подобные программы являются наиболее опасными, т.к. об ошибках в ПО неизвестно более никому, а уязвимые сервисы имеют тысячи ресурсов по всему миру. Защиты от них, что естественно, найти невозможно. От обычных же эксплоитов можно защититься, постоянно следя за новостями мира информационной безопасности и устанавливая новые, безопасные версии сервисов.
4) Атаки на сценарии. В PHP-сценариях существует угроза локального или удаленного внедрения файлов, а также SQL-инъекции как причина двух типичных недочетов программистов. В первом случае, если программист использует в сценарии файлы, то возможно указать в качестве параметра скрипта такой путь к файлу, который будет прочтен и отображен на экране, к примеру, /etc/passwd. В случае SQL-инъекции взломщик меняет параметры скрипта таким образом, что запрос к БД становится уязвимым.
Если передается числовой параметр, то его можно заменить на -1 OR 1=1, в результате чего выполнится условие 1=1, всегда равное true, и из БД будут выбраны все данные. Также может быть использован оператор UNION, позволяющий задать еще несколько запросов вкупе к тому, который уже выполняется. Защититься от подобного можно, тщательно фильтруя содержимое переменной и приводя ее к числовому типу, после чего проверяя ее на корректность. Также можно обрезать лишние символы, к примеру, если точно известно, что параметр id не может быть более 99999, следует обрезать строку-параметр до 5 символов, после чего уже приводить ее к числу и проверять.
Если же передается строковый параметр, то возможны добавления кавычек и последующих за ними операторов, к примеру, если имеет место быть запрос вида
SELECT id_news, news_date, news_caption, news_text, news_id_author FROM news
WHERE news_caption = LIKE('%Test%'), где Test - строка, передеваемая в качестве параметра скрипту, то взломщик может передать следующий параметр:
text = ')+and+(news_id_author='1')/*
В результате этого внутри сценария появится запрос
SELECT id_news, news_date, news_caption, news_text, news_id_author FROM news
WHERE news_caption = LIKE('%') AND (news_id_author='1')/*%)
В этом запросе комментарий отсечет ненужные символы и будут выведены только статьи под авторством автора № 1 с любыми заголовками.
Защититься от подобных атак можно фильтрацией переменных, удалением из них опасных символов, а также «заслешиванием» всех опасных символов, после чего они экранируются и не воспринимаются как управляющие, а становятся просто частью текста, который корректно воспринимается БД.
Разработка программно-информационного компонента. Обоснование выбора среды разработки
Проанализировав результаты логического проектирования, необходимо определить методы решения поставленных задач.
Основные требования сводятся к следующему:
1) система должна быть надежной;
2) не должна нарушаться целостность данных при внесении изменений;
3) система должна обеспечивать дружественный интуитивный интерфейс, удобное перемещение и быстрый вызов любой функции;
4) должна включать в себя помощь и подсказки по эксплуатации;
В силу специфики разрабатываемой системы и среды ее эксплуатации (Интернет) мы можем рассматривать средства, применяемые при создании web-приложений. Начнем с того, при помощи чего организуется клиентская основа системы.
- HTML - является главной частью клиентской части приложения, обеспечивает возможность создания гипертекстовой разметки веб-страниц. Он позволяет создавать формы (с типичными элементами управления - кнопками, списками, полями ввода), таблицы, внедрять различные объекты (аудио- и видеофайлы, Java-апплеты, Flash-анимацию), вставлять рисунки, работать с шрифтовым оформлением страниц. И, конечно же, одной из важнейших его возможностей является поддержка гиперссылок.
- CSS - данная технология каскадных стилевых таблиц позволяет добиться большей тонкости отображения страниц, чем HTML. Именно благодаря ей возможна более продвинутая, нежели табличная, блочная верстка страниц. Также благодаря CSS можно создавать страницы, отображаемые практически одинаково во всех браузерах, включая достаточно устаревшие версии, однако это требует больших временных затрат и наличие большого опыта у разработчика.
- JavaScript - язык клиентских сценариев, позволяющий организовать диалог с пользователем, проверку вводимых данных, управление содержимым документа. Важным свойством данного языка является встроенная поддержка работы с CSS и моделью документа DOM. При помощи этого языка строятся масштабные пользовательские интерфейсы.
- AJAX - технология (вернее, их совокупность), возникшая на основе JavaScript и XML. Она позволяет добиться полной интерактивности диалога с пользователем, благодаря ей можно обновлять не всю страницу целиком, а лишь необходимые данные, что позволяет веб-приложениям по удобству и надежности вплотную приблизиться к настольным. В проекте эта технология реализуется при помощи JavaScript-фреймворка jQuery. Он имеет поддержку цепочек вызовов, отличную работу с DOM, встроенные эффекты, возможность тонкой надстройки над объект xmlHttpRequest, огромное количество различных плагинов и мощную поддержку, включающую как огромное сообщество программистов, собравшихся над этим проектом, так и удобную и доступную документацию.
- Visual Basic Script - имеет возможности, превосходящие в клиентском плане возможности JavaScript (например, запись и чтение из файлов, навигация по файловой системе), а также является языком серверных сценариев в технологии ASP (позволяя, например, работать с БД), однако его работоспособность на клиентской части ограничена только браузером Internet Explorer, а о недостатках ASP будет изложено ниже.
- Adobe Flash и ActionScript - технологии, позволяющие создать красочное интерактивное клиентское приложение. Однако данным решениям присуща излишняя медлительность (производительность скриптового языка ActionScript слишком мала), большой объем, занимаемый flash-роликом, сильная нагрузка на процессор клиента, а также невозможность отображения при использовании клиентом устаревшей версии flash-плеера, ОС или браузера, не поддерживающего Flash или программ, блокирующих такое содержимое (файрволлы, компрессоры трафика). Кроме того, для создания Flash-приложений требуется коммерческое приложение Flash MX.
Для серверной стороны необходимо рассмотреть выбор языка программирования серверных сценариев, который непосредственно связан с выбором web-сервера и сервера баз данных.
В настоящее время на рынке программного обеспечения лидируют разработки open source - Apache и Internet Information Server от компании Microsoft. IIS обладает меньшей степенью защищенности, чем Apache, что обусловлено большим числом найденных в нем ошибок безопасности. Хотя его и можно загрузить бесплатно или установить сразу вместе с Windows, хостинг с IIS (а, следовательно, и Windows Server) обойдется значительно дороже (в 2-3 раза) хостинга под управлением UNIX. Кроме того, следует отметить, что IIS работает только под Windows, в то время как Apache - практически под любой современной ОС. В то же время Apache имеет весьма сложный конфигурационный файл, который необходимо редактировать вручную, а IIS - удобный графический конфигуратор.
В целом, можно сказать, что оба этих продукта равны по возможностям и отличаются лишь деталями реализации. Однако то, что связка Apache+MySQL+PHP уже давно стала классической, а также практически полное отсутствие затрат на разработку позволяет выбрать Apache как наиболее приемлемый вариант.
Среди серверов баз данных для работы в web на настоящий момент существуют следующие основные продукты:
- PostgreSQL - СУБД, которая имеет достаточно вложный собственный формат данных, из-за чего работа с данными оказывается весьма непроизводительной. Данный формат данных оправдывает себя только при огромных запросах, в которых соединяются десятки таблиц с сотнями тысяч записей в каждой.
- SQLite - нереляционная СУБД, все данные таблиц хранятся в одном файле, а работа с ними поддерживается при помощи удобного интерфейса, поддерживающего ANSI SQL. Также необходимо отметить, что она неявляется демоном (сервисом) в обычном смысле этого слова - это встраиваемая библиотека, и в ее основе не лежит технология «клиент-сервер» - все реализуется как составная часть программного модуля. Благодаря такому устройству потребляет намного меньше памяти, чем прочие СУБД, и дает существенный выигрыш в производительности. Однако на больших объемах данных этот выигрыш исчезает. Применяется главным образом в небольших проектах, хостингах, где нет поддержки СУБД, а также в некоторых настольных приложениях.
- MySQL - СУБД, обеспечивающая высокую надежность, производительность, поддержку расширенного относительно ANSI SQL формата этого языка. Имеет хорошо продуманную внутреннюю организацию, что позволяет удобно и быстро получать данные из таблиц. Используется в средних проектах, так как на очень больших объемах данных начинает проигрывать по производительности PostgreSQL. Однако ее скорости хватает практически во всех случаях. Поддерживает все необходимые функции: разграничение полномочий, тонкое конфигурирование, служебные таблицы.
- Microsoft SQL Server - коммерческая СУБД, работающая только под Windows. Имеет удобный графический конфигуратор, поддержку большого числа форматов данных, отличную призводительность. Однако ее бесплатная версия Express Edition имеет слишком много ограничений и лишена нормального конфигуратора.
Таким образом, я выбрал MySQL, как наиболее соответствующую моим требованиям. Осталось выбрать подходящий язык для серверного программирования.
- Perl - язык, в системах UNIX использующийся для создания автоматизации в системе. Имеет гибкий синтаксис, встроенную поддержку регулярных выражений, являющуюся одним из его главных достоинств, большое количество модулей и целое сообщество, располагающееся на ресурсе cpan.org. Однако его производительность весьма мала, кроме того, для выполнения практически любой обыденной вещи необходимо пользоваться (и искать) новым модулем, множество из которых идут в поставке.
- ASP - скорее не ЯП, а серверная технология. Ее ЯП является VBScript, а выполняться такие сценарии могут лишь под управлением IIS. Ввиду использования Apache данная технология, несмотря на свою мощь и большое количество порталов, построенных на ней, нам не подходит.
- Java - малопроизводительный ЯП, однако также весьма мощен и прост. Но для его работы необходимо установить веб-сервер от Sun Microsystems, что также не подходит.
- PHP - простой и очень мощный ЯП, поддерживающий работу со множеством СУБД, файловой системой, регулярными выражениями. Отлично подходит для работы с MySQL и Apache. Весьма производителен за счет того, что является транслирующим интерпретатором. Также удобен тот факт, что PHP позволяет внедрять HTML-содержимое внутрь сценариев, в том числе разделяя его вывод по условиям, в цикле и т.д.
Физическая модель данных
Физическая модель данных определяет то, как размещены данные в системе, как получить к ним доступ, как проиндексированы данные. Физическая модель данных называется внутренней моделью системы. Она отличается от других моделей данных способом представления взаимосвязей между объектами системы и тем, на каком уровне эти объекты рассматриваются. Концептуальная модель дает общее представление о том, какие данные функционируют в системе и как они связаны с материальным миром и между собой, не вдаваясь ни в подробности хранения, ни в подробности хранения, структуризации и представления данных в системе. Логическая модель представляет взаимодействие данных в виде сущностей с наборами атрибутов, однако не рассматривает физическое представление этих данных. Физическая же модель по сути отражает реальное положение вещей - каким образом программист решил перевести концептуальную и логическую модель в набор таблиц, связанных реляционными отношениями с помощью ключей и заполненных теми данными, что согласно концептуальной модели присутствуют в данной системе или классе систем.
Таблица 6 - аватары (avatars)
Поле |
Тип |
Длина |
Описание |
|
Avatar_id |
INT |
11 |
Уникальный номер аватара |
|
Filename |
VARCHAR |
100 |
Путь к аватару |
Таблица 7 - закладки (bookmark)
Поле |
Тип |
Длина |
Описание |
|
Link_id |
INT |
11 |
Уникальный номер ссылки |
|
User_id |
INT |
11 |
Уникальный номер пользователя |
|
Title |
VARCHAR |
255 |
Название закладки |
|
Url |
MEDIUMTEXT |
65535 |
Адрес закладки |
|
Descr |
MEDIUMTEXT |
65535 |
Описание закладки |
|
Catid |
INT |
11 |
Идентификатор категории |
Таблица 8 - категории (categories)
Поле |
Тип |
Длина |
Описание |
|
Catid |
INT |
11 |
Уникальный идентификатор категории |
|
Name |
VARCHAR |
100 |
Название категории |
Таблица 9 - личные сообщения (pm)
Поле |
Тип |
Длина |
Описание |
|
Id_mess |
INT |
11 |
Номер сообщения |
|
Fid |
INT |
11 |
Идентификатор отправителя |
|
Tid |
INT |
11 |
Идентификатор получателя |
|
Title |
VARCHAR |
30 |
Тема сообщения |
|
Message |
TEXT |
65535 |
Текст сообщения |
|
Dt |
DateTime |
18 |
Дата и время отправки |
|
Rid |
INT |
11 |
Статус удаления, равен ID того, кто удалил сообщение или 0, если оно не удалялось |
Таблица 10 - данные пользователей (user_details)
Поле |
Тип |
Длина |
Описание |
|
Id |
INT |
11 |
Уникальный номер пользователя |
|
Nick |
VARCHAR |
20 |
Псевдоним (никнейм) |
|
FIO |
VARCHAR |
80 |
ФИО |
|
Birth |
INT |
11 |
Дата рождения в формате метки времени UNIX |
|
Hobbie |
TEXT |
65535 |
Любимые занятия |
|
Job |
VARCHAR |
50 |
Работа, должность |
|
ICQ |
VARCHAR |
9 |
Номер ICQ |
|
Avatar_id |
INT |
11 |
Уникальный идентификатор аватара |
Таблица 11 - учетные записи пользователей (users)
Поле |
Тип |
Длина |
Описание |
|
Id |
INT |
11 |
Уникальный номер пользователя |
|
Login |
INT |
11 |
Имя пользователя в системе |
|
Password |
INT |
11 |
Пароль в зашифрованном виде |
|
Salt |
VARCHAR |
30 |
Случайная строка, используется для шифрования пароля |
|
Status |
TEXT |
65535 |
Статус пользователя (обычный, администратор, заблокирован) |
Описание пользовательского интерфейса и программных модулей
При разработке пользовательского интерфейса необходимо учитывать следующие требования:
1) интерфейс должен быть максимально удобен и интуитивно прост;
2) пользователь должен иметь «под рукой» все необходимые средства для типовой работы с данными;
3) информация должна в зависимости от выполняемых задач разбита на логические подгруппы в пределах одной формы (так, кнопки «назад» и «вперед» должны размещаться рядом)
4) информации не должно быть слишком много, чтобы в ней было легко ориентироваться;
5) для визуального оформления и эстетически приятного восприятия информации следует вводить графические элементы - фоновые картинки и прочую графику, использовать различные шрифты;
6) однако шрифтами не стоит злоупотреблять - следует избегать убористого текста, вычурных и трудночитаемых начертаний, цветов, которые плохо воспринимаются, сильного различия в размерах шрифтов в пределах одной формы (желательно в пределах всего проекта).
Исходя из этих требований, необходимо создавать интерфейс программы. Когда проектирование интерфейса и компоновки элементов закончено, идет собственно верстка, когда при помощи средств JavaScript, CSS и HTML создается законченный интерфейс. После отладки макета верстки в различных браузерах идет собственно написание программного кода продукта, его отладка и выдача окончательного варианта в виде совокупности сверстанных страниц и результатов выполнения серверных скриптов.
При входе в систему пользователь видит перед собой форму, показанную на рисунке 6. Пользователь может ввести данные в поля ввода и войти в систему под своим аккаунтом. Если у него еще нет учетной записи, то он может зарегистрироваться в системе или воспользоваться гостевым входом, просматривая профили пользователей, их закладки и имея возможность поиска. Если пользователь при входе поставит галочку «запомнить», то сценарий запишет на его ПК cookies (cookie-набор), в котором в зашифрованном виде будет сохранен пароль и логин. При следующем входе в систему пользователю не нужно будет их вводить заново. Запоминание пользователя длится две недели.
Рис. 6
Код аутентификации на сайте выглядит следующим образом:
<?php
session_start();
include ('mysql.php');
if (isset($_GET['logout']))
{
if (isset($_SESSION['user_id']))
{
unset($_SESSION['user_id']);
unset($_SESSION['adm']);
}
setcookie('login', '', 0, "/");
setcookie('password', '', 0, "/");
// и переносим его на главную
header('Location: index.php');
exit;
}
if (isset($_SESSION['user_id']))
{
// юзер уже залогинен, перекидываем его отсюда на закрытую страницу
header('Location: profile.php');
exit;
}
$error = false;
$ert = '';
if (!empty($_POST))
{
$login = (isset($_POST['login'])) ? mysql_real_escape_string($_POST['login']) : '';
$query = "SELECT `salt`
FROM `users`
WHERE `login`='{$login}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) == 1)
{
$row = mysql_fetch_assoc($sql);
// итак, вот она соль, соответствующая этому логину:
$salt = $row['salt'];
// теперь хешируем введенный пароль как надо и повторям шаги, которые были описаны выше:
$password = md5(md5($_POST['password']) . $salt);
// и пошло поехало...
// делаем запрос к БД
// и ищем юзера с таким логином и паролем
$query = "SELECT `id`, `status`
FROM `users`
WHERE `login`='{$login}' AND `password`='{$password}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
// если такой пользователь нашелся
if (mysql_num_rows($sql) == 1)
{
// то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)
$row = mysql_fetch_assoc($sql);
$_SESSION['user_id'] = $row['id'];
if ($row['status'] == 1)
$_SESSION['adm'] = 1;
else if ($row['status'] >= 20)
{
$error = true;
$ert .= 'Вы заблокированы';
unset($_SESSION['user_id']);
unset($_SESSION['adm']);
}
// если пользователь решил "запомнить себя"
// то ставим ему в куку логин с хешем пароля
if (!$error)
{
$time = 86400*7*2; // ставим куку на 2 недели
if (isset($_POST['remember']))
{
setcookie('login', $login, time()+$time, "/");
setcookie('password', $password, time()+$time, "/");
}
// и перекидываем его на закрытую страницу
header('Location: profile.php?id='.$_SESSION['user_id']);
exit;
}
// не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
}
else
{
$ert .= 'Пользователь не найден';
$error = true;
}
}
else
{
$error = true;
$ert .= 'Пользователь не найден';
}
}
include 'header.php';
?>
<script type="text/javascript" language="JavaScript">
<!--
function roll(obj, n)
{
if (n)
obj.style.backgroundImage = 'url("html-bg-hover.gif")';
else
obj.style.backgroundImage = 'url("html-bg-normal.gif")';
}
//-->
</script>
<?
print '
<form action="login.php" method="post" class="loginform" name="f">
<b style="position:relative;top:15px;left:5px;">Вход в систему</b>
<div style="position:relative;top:30px;left:10px;">
<div style="position:relative;top:10px;">Логин: <input type="text" name="login" style="position:absolute;left:60px;width:130px;" /></div>
<div style="position:relative;top:20px;">Пароль: <input type="password" name="password" style="position:absolute;left:60px;width:130px;"/></div>
<div style="position:relative;top:30px;">Запомнить: <input type="checkbox" name="remember" /></div>
<div style="position:relative;top:40px;left:40px;">
<div style="cursor:pointer;cursor:hand;background:url(\'html-bg-normal.gif\') no-repeat;color:#fff;width:70px;height:24px;text-align:left;line-height:24px;padding-left:15px;" onClick="f.submit()"onMouseOver="roll(this, 1)" onMouseOut="roll(this, 0)">
Вход
</div>
<div style="position:relative;left:100px;top:-20px;"><a href="register.php">регистрация</a></div>
</div>
</div>
</form>';
if ($error)
{
echo '<div style="position:relative; top: 20px;">';
echo nl2br($ert);
echo '</div>';
}
include 'footer.php';
?>
Форма регистрации нового пользователя показана на рисунке 7. Из-за простоты системы и ограничений пакета Denwer, на котором представляется система, подтверждение по e-mail не реализовано.
Рис. 7
Код регистрации приведен далее.
<?php
session_start();
include ('mysql.php');
/*
** Функция для генерации соли, используемоей в хешировании пароля
** возращает 3 случайных символа
*/
function GenerateSalt($n=3)
{
$key = '';
$pattern = '1234567890abcdefghijklmnopqrstuvwxyz.,*_-=+';
$counter = strlen($pattern)-1;
for($i=0; $i<$n; $i++)
{
$key .= $pattern{rand(0,$counter)};
}
return $key;
}
include 'header.php';
if (empty($_POST))
{
?>
<script language="JavaScript" type="text/javascript" src="jquery.js"></script>
<script language="JavaScript" type="text/javascript" src="jquery.corner.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
$("document").ready(function()
{
$("#reg").corner("round");
});
//-->
</script>
<div style="margin:100px auto;width:300px;background:#ccc;padding-left:15px;padding-bottom:10px;" id="reg">
<h3>Регистрация</h3>
<form action="register.php" method="post">
<table>
<tr>
<td>Логин:</td>
<td><input type="text" name="login" /></td>
</tr>
<tr>
<td>Пароль:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td>Повторите пароль:</td>
<td><input type="password" name="repassword" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Зарегистрироваться" /></td>
</tr>
</table>
</form>
</div>
<?php
}
else
{
// обрабатывае пришедшие данные функцией mysql_real_escape_string перед вставкой в таблицу БД
$error = false;
$errort = '';
$login = (isset($_POST['login'])) ? mysql_real_escape_string($_POST['login']) : '';
$password = (isset($_POST['password'])) ? mysql_real_escape_string($_POST['password']) : '';
$repassword = (isset($_POST['repassword'])) ? mysql_real_escape_string($_POST['repassword']) : '';
if ( !empty( $login ) and !preg_match( "#^[A-Za-z][- _0-9A-Za-z]+$#i", $login ) )
{
$errort = $errort.'Поле "Логин" содержит недопустимые символы<br />';
$error = true;
}
if ( !empty( $password ) and !preg_match( "#^[-_!@0-9A-Za-z]+$#i", $password ) )
{
$errort = $errort.'Поле "Пароль" содержит недопустимые символы<br />';
$error = true;
}
if ($password !== $repassword)
{
$error = true;
$errort.='Введенные пароли не совпадают<br />';
}
// проверяем на наличие ошибок (например, длина логина и пароля)
if (strlen($login) < 2)
{
$error = true;
$errort .= 'Длина логина должна быть не менее 2х символов.<br />';
}
if (strlen($password) < 6)
{
$error = true;
$errort .= 'Длина пароля должна быть не менее 6 символов.<br />';
}
// проверяем, если юзер в таблице с таким же логином
$query = "SELECT `id`
FROM `users`
WHERE `login`='{$login}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql)==1)
{
$error = true;
$errort .= 'Пользователь с таким логином уже существует в базе данных, введите другой.<br />';
}
// если ошибок нет, то добавляем юзаре в таблицу
if (!$error)
{
// генерируем соль и пароль
$salt = GenerateSalt();
$hashed_password = md5(md5($password) . $salt);
$query = "INSERT
INTO `users`
SET
`login`='{$login}',
`password`='{$hashed_password}',
`salt`='{$salt}'";
$sql = mysql_query($query) or die(mysql_error());
$i = mysql_insert_id();
$query = "insert into user_details values($i, '','',0,'','','',0)";
//echo $query;
$sql = mysql_query($query);
print '<div class="OKMessage">Поздравляем, Вы успешно зарегистрированы!<br /><a href="login.php">Авторизоваться</a></div>';
}
else
{
print '<div class="errMessage">Возникли следующие ошибки<br />' . nl2br($errort).'<br /><a href="register.php">попробуйте еще раз</a></div>';
}
}
include 'footer.php';
?>
После успешной авторизации пользователь попадает в свой личный кабинет. На рисунке 8 показан личный кабинет администратора, а на рисунке 9 - обычного пользователя системы.
Рис. 9
Рис. 10
Код личного кабинета выглядит так:
<?
session_start();
$guest = false;
if (!isset($_SESSION['user_id']))
{
// header('Location: /soc/index.php?page='.$_SERVER["PHP_SELF"]);
$guest = true;
//die('Доступ закрыт, даём ссылку на авторизацию. -- <a href="login.php">Авторизоваться</a>');
}
include 'mysql.php';
$id = (int)$_GET['id'];
if (empty($id))
{
if (!$guest) $id = $_SESSION['user_id']; else $id = 0;
}
$same_user = false;
if ($id == $_SESSION['user_id']) $same_user = true;
//echo 'user: '.$same_user.' id'.$id.' sessid '.$_SESSION['user_id'];
$no_user = false;
//echo "select nick, fio, birth, hobbie, job, icq, filename from `user_details`, `avatars` where id={$id} and avatars.avatar_id=user_details.avatar_id";
$q = "select login from users where id = {$id}";
$r = mysql_query($q);
if (mysql_num_rows($r) == 0) $no_user = true;
$r = mysql_query("select nick, fio, birth, hobbie, job, icq, avatar_id from `user_details` where id={$id}");
if (mysql_num_rows($r) > 0) $ud = mysql_fetch_array($r, MYSQL_ASSOC); else
{
$ud = array('nick'=>'',
'fio'=>'',
'birth'=>0,
'hobbie'=>0,
'job'=>'',
'icq'=>'',
'avatar_id'=>0);
}
if (!$no_user)
{
foreach ($ud as $k => $v)
{
//echo $ud[$k-1].'+'.empty($ud[$k-1]);
if (empty($v)) $ud[$k] = 'Нет данных';
}
$ud['avatar_id'] = (int)$ud['avatar_id']; // хитрый план
if (isset($ud['avatar_id']))
{
$q = "select filename from avatars where avatar_id = {$ud['avatar_id']}";
//echo $q;
$r = mysql_query($q);
if (mysql_num_rows($r) > 0)
$ava = mysql_fetch_row($r);
else $ava[0] = 'avatars/anon.jpg'; }
}
include 'head.php';
include 'menu.php';
?>
<div id="rightCol">
<? if (!$no_user) { ?>
<h3><?if ($ud['fio']!='Нет данных') echo $ud['fio']; else echo 'Пользователь '.$id ?></h3>
<table class="profileTable" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td colspan="2" class="title">
Общая информация
</td>
</tr>
<tr>
<td class="label">Никнейм</td>
<td><?echo $ud['nick'];?></td>
</tr>
<tr>
<td class="label">Дата рождения</td>
<td><?if ($ud['birth']!='Нет данных') echo date('d.m.Y', $ud['birth']);else echo 'не указана';?></td>
</tr>
<tr>
<td colspan="2" class="title">
Контактная информация
</td>
</tr>
<tr>
<td class="label">ICQ</td>
<td><?echo $ud['icq'];?></td>
</tr>
<tr>
<td colspan="2" class="title">
Персональная информация
</td>
</tr>
<tr>
<td class="label">Деятельность</td>
<td width="300"><? echo $ud['job']; ?></td>
</tr>
<tr>
<td class="label">Интересы</td>
<td width="300"><? echo $ud['hobbie']; ?></td>
</tr>
</tbody>
</table>
</div>
<? } else {
echo '<div class="errMessage">Такого пользователя не существует.<br />Убедитесь, что вы ввели верный ID</div>';
}?>
<div id="bottom"></div>
</div>
<?
include 'foot.php';
?>
Пользователь имеет возможность работы с личными сообщениями. Просматривая страницы пользователей, он может написать им. Следует отметить, что предусмотрена фильтрация пользовательского ввода. Форма ввода нового сообщения показана на рисунке 11.
Рис. 11
Код отправки личного сообщения приведен ниже:
<?
session_start();
if (!isset($_SESSION['user_id']))
{
header('Location: /soc/index.php?page='.$_SERVER["PHP_SELF"]);
//die('Доступ закрыт, даём ссылку на авторизацию. -- <a href="login.php">Авторизоваться</a>');
}
include '../mysql.php';
Подобные документы
Свойства социальных сетей. Функционирование информационной сети объекта управления как среды информационного влияния, управления и противоборства. Обеспечение социальной безопасности сетей. Создание теоретико-игровой модели информационного противоборства.
курсовая работа [837,1 K], добавлен 17.07.2012Идентификация и аутентификация пользователей в системах защиты информации. Порядок установки программно-аппаратного комплекса аккорд. Регистрация администратора безопасности информации. Установка платы контроллера. Подсоединение контактного устройства.
курсовая работа [31,9 K], добавлен 15.03.2016Детализация функций системы и требования к информационной системе. Анализ категорий пользователей. Этапы внедрения автоматизированной информационной системы на предприятии. Описание таблиц базы данных. Защита данных от несанкционированного доступа.
дипломная работа [1,0 M], добавлен 22.07.2015Характеристика особенностей инфраструктурных серверов, построенных на основе Linux. Создание и конфигурация рабочей станции сети предприятия. Установка операционной системы и ее первоначальная настройка. Администрирование сервисов, пользователей и групп.
курсовая работа [1,4 M], добавлен 07.01.2014Функциональная модель процесса проектирования сети. Технико-экономическое обоснование разработки сети. Проектирование структурной схемы и перечень функций пользователей сети. Планирование информационной безопасности. Расчет капитальных вложений.
практическая работа [345,0 K], добавлен 09.06.2010Особенности построения сети доступа. Мониторинг и удаленное администрирование. Разработка структурной схемы сети NGN. Анализ условий труда операторов ПЭВМ. Топология и архитектура сети. Аппаратура сетей NGN и измерение основных параметров сети.
дипломная работа [5,7 M], добавлен 19.06.2011Рассмотрение социальной сети как автоматизированной среды, позволяющей общаться в группе пользователей, объединенных общим интересом. Две группы программных инструментов внутри социального программного обеспечения: коммуникационные и интерактивные.
презентация [2,1 M], добавлен 03.05.2015Анализ систем организационного управления, их функции и компоненты. Функциональность, администрирование, регистрация пользователей, настройка и управление информационной системой SAP R/3. Преимущества и экономическая эффективность от ее внедрения.
курсовая работа [4,0 M], добавлен 11.12.2013Характерные особенности работы современных социальных сетей. Набор предлагаемых ими стандартных сервисов. История их развития. Проблемы информационной безопасности для пользователей сети. Вредоносные программы для кражи паролей и персональных данных.
презентация [732,7 K], добавлен 03.11.2014Сетевое подключение к компьютеру, настройка общей папки. Создание рабочей группы для всех ПК в сети. Использование окна "Управление сетями и общим доступом". Подключение сетевого диска. Аутентификация пользователей. Поиск объекта в системной базе.
реферат [2,2 M], добавлен 27.11.2014