Цель и назначение разработанного сайта.

Глава 1.

Цель и назначение разработанного сайта.

В этой дипломной работе создана КИС "МТО". Данная КИС разработана только для внутреннего использования ММТП.

Цель КИС - предоставление данных по складу, по отделу МТО, кадровые данные, необходимые пользователям.

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

В данной дипломной работе можно узнать:

- информацию о наличии товара на складе;

- справочный список служащих в ТП: (ФИО, телефонные номера, должности);

- информацию о внутреннем ремонте компьютерной техники;

- информацию о ремонте компьютерной техники отправленной по гарантии;

- и другую информацию.

Целевая аудитория.

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

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

Глава 2.

Сравнение php и ASP.NET

Вопрос о выборе технологий перестаёт быть сугубо техническим, когда один из возможных вариантов — .NET. В случае WEB-приложений речь идёт, конечно же, об ASP.NET. Который, согласно рекламным статьям Microsoft, просто обязан стать стандартом разработки офисных WEB-приложений. Ведь это «управляемый код», MSF-методология, серверные элементы управления...

Я же постараюсь исключить субъективизм. Например, мне очень нравится документация по php; но я в ужасе от MSDN. Но я встречал очень серьёзных специалистов (и не в единственном числе!), которые при мне легко находили нужную информацию в MSDN. Значит, я снимаю аргумент про документацию как субъективный. И также поступаю со многими другими своими аргументами. Оставляю только те, которые не зависят от моих пристрастий и предпочтений.

Очевидные преимущества ASP.NET

Типизация. Языки программирования ASP.NET имеют строгую типизацию данных. Это безусловно выигрышный момент по сравнению с нетипизированным php: меньше будет логических ошибок, которые весьма трудно находить и исправлять. Некоторым утешением для сторонников php является возможность привести переменную к нужному типу — но увы, присвоение переменной, приведённой к целому типу, строкового значения не вызовет даже предупреждения со стороны интерпретатора.

Маркетинговая политика Microsoft. Если Вы пишете на ASP.NET — на Вашей стороне мощная рекламная машина Microsoft, а также партнёрские программы этой фирмы. Без заказов Вы не останетесь.

И результат этой политики Приходится признать: мнение, что офисное WEB-приложение обязано быть на ASP.NET и ни в коем случае не на php, фактически утвердилось в умах руководства большинства компаний. То есть если Вы пишете офисное приложение на ASP.NET — оно будет в явно выигрышном положени по сравнению с приложением на php (пока Вы не начнёте его внедрять и поддерживать, но об этом далее).

Очевидные преимущества php

Доступность дистрибутивов. Дистрибутивы измеряются в десятках мегабайт (а не в DVD-дисках, как Windows/IIS/Visual studio/MS SQL Server) и доступны на сайтах разработчиков. Т.е. php — это «праздник, который всегда с тобой».

Думаю, под влиянием php компания Microsoft пошла на выпуск бесплатных версий (Express Edition) инструментов, нужных для создания ASP.NET-приложений. Но на сайте Microsoft доступны только новые версии, которые требуют последних версий Windows (тут уж Microsoft не переделаешь). Так что в данном случае не получится «праздника, который...».

Open source (открытый код), представляющий возможность для аудита кода. Что особенно важно — аудитом кода занимаются программисты всего мира, способствуя устранению уязвимостей и прочих недостатков.

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

За что я выбираю php

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

Кроссплатформенность. php портирован практически под все распространённые операционные системы, в то время как ASP.NET ориентирован на Windows, и то не всякую, а только 2000/XP/Vista/7. Т.е. мне не нужно беспокоиться, какая операционка стоит на сервере моего клиента.

Истины ради. Существует и развивается (не фирмой MIcrosoft!) проект Mono, призванный обеспечить полноценную работу системы .NET на базе свободного программного обеспечения. Но я бы не рискнул говорить об этом проекте как о надёжной технологии, на которую можно было бы делать ставку в серьёзных проектах. Кстати, Microsoft не несёт никакой ответственности, даже моральной, за то, как будет Ваш ASP.NET-проект работать согласно Mono.

А документация по данному проекту не добавляет уверенности. Вот что, например, она говорит об инструментах разработчика, предлагаемых Mono: No documentation available on this topic (по состоянию на 5 марта 2008 года). А ASP.NET без специальных средств разработки — это солдат без ружья.

Нет чрезмерной привязки к операционной системе. Даже под Windows php может устанавливаться простым копированием, не записывая ничего в многострадальный реестр, не требуя создания специальных групп пользователей и т.п. После переустановки операционной системы Вам не потребуется долго «поднимать» php и проекты, по ним написанные. Скажем, в Windows разумно установить Apache, php и MySQL на не-системном диске. Даже после форматирования системного раздела (C:) и установки Windows заново Вам потребуется не более трёх минут для восстановления: снова инсталлировать Apache как службу
(командой apache -k install) и возобновить список виртуальных хостов (файл %System32%/drivers/etc/hosts). И всё, инцидент исчерпан...

ASP.NET взаимодействует с операционной системой (только Windows, и то не всякой) весьма тесно.

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

Удачный набор функций. php предоставляет WEB-разработчику большое количество функций для решения типовых задач. Создатели php хорошо знают, какие задачи чаще всего решает разработчик WEB-приложений. В ASP.NET я не нашёл полезных функций, необходимых постоянно — при наличии огромного количества методов, которым и применения-то не придумать. Например, в WEB-приложениях часто проиходится очищать текст от тегов (это особенно актуально для форумов и гостевых книг), «квотить» строку для вставки в SQL-запрос, а также убирать этот квотинг при извлечении строки из SQL-запроса. php предоставляет нам эти функции (соответственно strip_tags(), addslashes() , stripslashes()), а вот в ASP.NET я не нашёл соответствующих методов. Разумеется, их можно реализовать на C#. Но я не настолько люблю работать...

Также отдельное спасибо авторам php за функцию var_export(). Этой функцией я легко получаю текстовое представление массива или объекта в тех случаях, когда отладчик был бы бессилен. Приведу пример: платёжная система методом POST отправляет на мою страницу данные об оплате. И если что-то идёт не так — мне легко послать самому себе текстовый дамп этого массива:

$dump=var_export($_POST,true);
mail('[email protected]', 'post',$dump);

Увы, в ASP.NET придётся писать метод, который вернёт мне текстовое представление массива или объекта.

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

Преимущества интерпретации. Кроме недостатков по сравнению с компиляцией, интерпретируемые языки имеют весьма ощутимые преимущества.

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

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

Если переменная $a равна "b", то к переменной $b можно обратиться:
$$a

Если переменная $a равна "p", то к cвойству p можно обратиться:
$object->$p

Если переменная $a равна "m", то метод m можно вызвать:
$object->$m()

Эти возможности мне нужны весьма часто, а использовать их, скажем, в C# затруднительно: приходится создавать unsafe-блоки для указателей на переменные (C# не очень хорошо приспособлен для работы с указателями), а для методов – сочинять классы-делегаты.

Прозрачная привязка проекта к файловой системе. И как следствие — нет необходимости в специальных средствах разработки (вроде Visual Studio). Иными словами, в php-проекте нет конструкций, для визуализации и редактирования которых требовался бы особый редактор.

Что же мы видим в ASP.NET? Не так уж просто сообразить, например, как связаны пространства имён (namespaces) и расположение файлов на диске. В итоге бывает, что классы не видят друг друга. Приведу пример.

Есть ASP.NET хостинг. Пытаемся (для экономии сил и времени) разместить два проекта на одном хостинге. В случае php никакой проблемы нет.

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

Простота настройки Apache, php,MySQL. Все настройки содержатся в тектовых ini-файлах. Все параметры откомментированы. И что особенно ценно: если чтьо-то идёт не так, Вы почти всегда получите сообщение, где ясно изложена проблема, указана строка ini-файла, которая «не понравилась». Есть, увы, исключения, но именно те, которые подтверждают правило: настройки и сообщения об ошибках LAMP понятны.

Несмотря на то, что продукт Visual Studio Express предлагается такой солидной корпорацией, как Microsoft, даже при попытке установки данного приложения возникают различные сбои:

Цель и назначение разработанного сайта. - student2.ru

В сравнении Visual Studio Express более надёжным и простым подходом, не требующим длительной установки и наладки программных сред, является разработка web-страниц на php.

Совместимость «снизу вверх».Переход php-проекта на новую версию php возможен либо вообще без изменений (именно этим мне запомнился переход с php 4.x на php 5.x), либо с минимальными доработками, связанными, как правило, с изменениями настроек по умолчанию (не буду долго останавливаться на том, что полагаться на настройки по умолчанию – дурной тон в программировании). А случае с ASP.NET (о переходе с ASP.NET 1.0 на ASP.NET 2.0) мы видим, что проект надо полностью переделать. Часть этой работы возьмёт на себя «колдун» (насколько хорошо он сработает – не проверял).

Простота формирования текстовых строк. Отдельное спасибо разработчикам php за:

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

· $w='world';

· print "Hello $w!"; //Напечатает Hello world!

или

$this->w='world';

print "Hello $this->w!"; //Напечатает Hello world!

· возможность ввода большого текста с кавычками методом heredoc:

· $html=<<<EOD

· <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

· "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

· <html xmlns="http://www.w3.org/1999/xhtml">

· <head>

· <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

· <title> new document </title>

· <meta name="keywords" content="" />

· <meta name="description" content="" />

· </head>

· EOD;

Жёлтым маркером отмечены делимитеры, в которые заключён текст.

Подведём итоги

Стараясь быть максимально объективным, я изложил причины, по которым предпочитаю разрабатывать проекты на php, а не на ASP.NET. Но я вовсе не желал подвести к выводу, что на ASP.NET очень трудно или невозможно сделать хороший проект. Я лишь хотел предостеречь от рекламных восторгов, от отношения к ASP.NET как к чему-то изумительному, позволяющему быстро и легко делать серьёзные проекты.

Сравнение MySQL и mSQL

Производительность

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

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

· операций INSERT над простыми таблицами, содержащими небольшое количество столбцов и ключей

· CREATE TABLE и DROP TABLE

· операций SELECT чего-нибудь, кроме индексов (очень просто выполняется просмотр таблицы)

Поскольку такие операции очень просты, при больших затратах ресурсов на начальном этапе выиграть в скорости их выполнения достаточно сложно. Поэтому лучшие результаты MySQL может показать лишь после установки соединения. С другой стороны, MySQL значительно превосходит mSQL (и большинство других реализаций SQL) при:

· выполнении сложных операций SELECT.

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

· работе с таблицами, имеющими строки переменной длины, так как обработка данных в MySQL реализована более эффективно и в нем допускается создание индексов для столбцов с типом VARCHAR.

· обработке таблиц, содержащих большое количество столбцов.

· обработке таблиц с длинными записями.

· выполнении операций SELECT с несколькими выражениями.

· выполнении операций SELECT над объемными таблицами.

· одновременной работе с несколькими соединениями. Архитектура MySQL Server является полностью многопоточной. Для каждого соединения создается отдельный поток и, таким образом, ни одному из них не приходится ожидать завершения другого (если, конечно, один из потоков не занимается изменением таблицы, доступ к которой требуется другому потоку). В mSQL же после установки одного соединения остальным приходится ожидать его завершения, вне зависимости от сложности и времени выполнения примененного в этом соединении запроса. По завершении первого соединения начинает обслуживаться второе, а все остальные снова ждут своей очереди.

· связывании таблиц. При изменении порядка таблиц в вызове SELECT, скорость работы mSQL может упасть ниже всяких допустимых пределов. При выполнении комплекта тестов производительности выполнение такой операции заняло в 15000 раз больше времени, чем у MySQL. Причиной столь плачевно низкой производительности является отсутствие в mSQL оптимизатора связей, который обеспечивал бы оптимальность используемого порядка соединения таблиц. Однако если в mSQL2 расположить таблицы в правильном порядке, не перегружать оператор WHERE и использовать индексные столбцы, связывание будет выполнено относительно быстро!

Возможности SQL

· GROUP BY и HAVING.В mSQL функция GROUP BY отсутствует вовсе. В MySQL Server же GROUP BY имеется и работает как с HAVING, так и со следующими функциями: COUNT(), AVG(), MIN(), MAX(), SUM()и STD().
Работа оператора COUNT(*) оптимизирована в расчете на быстрый возврат результатов, если оператор SELECT берет данные из одной таблицы, не используя никаких других столбцов и выражения WHERE. Функции MIN() и MAX() могут принимать строковые аргументы.

· INSERT и UPDATE с вычислениями. MySQL может выполнять вычисления непосредственно в теле вызова INSERT или UPDATE. Вот пример:


mysql> UPDATE SET x=x*10+y WHERE x<20;

· Псевдонимы. В MySQL имеется возможность определения псевдонимов столбцов.

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

Стоимость

Цена лицензии является немаловажным фактором. По гибкости лицензии MySQL Server превосходит mSQL, да и стоит меньше. Вне зависимости от того, какой из продуктов вы выберете, не забудьте принять во внимание стоимость лицензии или технической поддержки по электронной почте.

Perl-интерфейсы

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

Различия в клиент-серверных коммуникационных протоколах mSQL и MySQL

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


Ниже приведены наиболее заметные различия между коммуникационными протоколами MySQL и mSQL:

· В буфере сообщения может находиться несколько столбцов результатов.

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

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

· Все значения столбцов отправляются в виде ASCII. Длины строк и столбцов посылаются в упакованном виде в двоичном виде (1, 2 или 3 байта).

· MySQL может считывать результаты без буферизации (без необходимости сохранения всех данных в клиенте).

· Если одна операция считывания/записи занимает более 30 секунд, сервер закрывает соединение.

· Если соединение бездействует в течение 8 часов, сервер его закрывает.


Различия в синтаксисе SQL между mSQL 2.0 и MySQL

Типы столбцов

MySQL

Имеются следующие дополнительные типы:

· ENUM - тип для одного набора строк.

· SET - тип для нескольких наборов строк.

· BIGINT - тип для 64-битовых целых чисел.

Кроме того, MySQL поддерживает следующие атрибуты дополнительных типов:

· UNSIGNED - опция для целочисленных столбцов и столбцов чисел с плавающей запятой.

· ZEROFILL - опция для целочисленных столбцов.

· AUTO_INCREMENT - опция для целочисленных столбцов, являющихся первичными ключами.

· DEFAULT - значение для всех столбцов.

mSQL2

Типы столбцов в mSQL соответствуют приведенным в таблице типам MySQL:

Тип в mSQL Соответствующий тип в MySQL
CHAR(len) CHAR(len)
TEXT(len) TEXT(len). len - максимальная длина. Работает LIKE.
INT INT. Со множеством опций!
REAL REAL. Или FLOAT. Имеются как 4-битовые, так и 8-битовые варианты.
UINT INT UNSIGNED
DATE DATE. Использует формат ANSI SQL, а не собственный формат mSQL.
TIME TIME
MONEY DECIMAL(12,2). Значение с фиксированной точкой и двумя знаками после нее.

Создание индексов

MySQL

Индексы могут указываться во время создания таблицы при помощи оператора CREATE TABLE.

mSQL

Индексы создаются после создания таблицы с помощью операторов CREATE INDEX.

Сравнение значений NULL

MySQL

MySQL соответствует стандарту ANSI SQL, поэтому сравнение с NULL всегда возвращает результат NULL.

mSQL

В mSQL выражение NULL = NULL имеет значение TRUE. Поэтому при переводе старого кода из mSQL в MySQL =NULL необходимо заменить на IS NULL, а <>NULL - на IS NOT NULL.


Поиск без учета регистра символов

MySQL

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

mSQL

Следует использовать CLIKE.


Обработка концевых пробелов

MySQL

Все пробелы в конце столбцов CHAR и VARCHAR удаляются. Если такое поведение нежелательно, используйте столбцы TEXT.

mSQL

Концевые пробелы сохраняются.

Операторы WHERE

MySQL

MySQL правильно определяет приоритеты действий (AND имеет приоритет перед OR). Заставить MySQL вести себя так, как mSQL, можно при помощи скобок (как можно видеть в соответствующем примере).

mSQL

Все действия производятся слева направо. А это значит, что некоторые логические вычисления, в которых наличествует более трех аргументов, не могут быть выполнены вообще. Кроме того, это означает, что при переносе в MySQL некоторые запросы необходимо менять. Это довольно просто сделать при помощи скобок. Возьмем, к примеру, следующий запрос mSQL:


mysql> SELECT * FROM table WHERE a=1 AND b=2 OR a=3 AND b=4;


Чтобы MySQL вычислил результат этого запроса так же, как это сделал бы mSQL, нужно расставить скобки:


mysql> SELECT * FROM table WHERE (a=1 AND (b=2 OR (a=3 AND (b=4))));

Ограничения доступа

MySQL

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

mSQL

Имеется файл "mSQL.acl", в котором можно определить привилегии чтения/записи для пользователей.

Глава 3.

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

Сайт состоит из десяти главных php файлов, девяти php блоков и одного файла стилей СSS.

На первой странице «index.php» находится о назначении самого сайта, и немного информации о авторе. С главной страницы сайта можно попасть на странички с дополнительной информацией. Так же с главной странички можно попасть на страницу с поиском нужного нам учебного предмета .

3.1 Состав страниц:

1). Файл «index.php» – эта страница является главной и стартовой, она размечена с помощью таблицы созданной с помощью тега «table», состоящая из двух строк. Первая представляет собой «Шапку КИС», этот блок всегда подключен ко всем другим страницам, в которой иметься фон, который добавлен с помощью «<td><img scr=”img/header.jpg”>». Вторая ячейка объединяет в себе три столбца, которые выведены в блоки: «lefttd #.php», «righttd #.php», где # номер блока, подключаемого при определенном действии и центральный блок, в котором выводиться информация. Также существует еще одна таблица, из трех столбцов, которая выведена в блок «nav.php», т.е. верхняя панель навигации.

2). Файл «view_idHobby.php» – страница содержит описание, выводимая из БД об увлечениях моей группы, при помощи оператора mysql_query(“SELECT * From Hobbys WHERE id = ‘$idHobby’”,$db). В левом блоке «lefttd.php», есть возможность выбора одного из 4-х наших увлечений, аналогично, как и в предыдущем случае. В правом же блоке «righttd2.php», выводиться информация из БД, с перечислением тех студентов, которые увлекаются этим хобби mysql_query(“SELECT Foto_mini, St_id, St_FIO, Work, Tel, ExamBook From Student WHERE idHobby = ‘$idHobby’”,$db). Причем при нажатии на фото любого из студентов, пользователь попадает на страницу «view_ррl.php», которая содержит характеристику каждого из студентов, это достигнуто, способом прикрепления ссылки в картинку <a href=’view_ppl.php?id=%s’>, где %s – переменная, которая меняется в зависимости от id студента.

3). Файл «view_ррl.php» – страница содержит характеристику каждого из студентов, это достигнуто, способом запроса из БД из определенной таблицы mysql_query (“SELECT *FROM Student WHERE St_id=’$id’”)

4). Файл «view_cem.php» – страница содержит список пройденных учебных предметов, по которым есть информация в электронном виде. В левом блоке «lefttd.php», есть возможность выбора одного из пройденных семестров. Информация выводиться с помощью mysql_query (“SELECT id, title, description, date, author FROM Lessons WHERE cem=’$cem’”). Причем при выводе на сайт, поле «title», выступает не только в качестве, названия предмета, а так же является ссылкой на страницу «view_post.php», что достигнуто при помощи добавления якоря ссылки <a href = ‘view_post.php?id=%s’>, при выводе информации из БД.

5). Файл «view_post.php» – страница содержит название самого предмета, фотографию преподавателя, небольшую информацию о преподавателе (взятую с сайта mpei.ru), автора этой информации и дату публикации. Информация выводиться с помощью mysql_query (“SELECT title, text, author, date FROM Lessons WHERE id=’$id’”). Одновременно с этим в правом блоке «righttd4.php», выводиться информация из БД, с перечислением тех видов занятий (лабы, семинары, лекции), по которым можно скачать учебную информацию mysql_query(“SELECT description, fotoLec, fotoLab, fotoCem, From Lessons WHERE id = ‘$id’”,$db). При нажатии на фото лекций\лабораторных\семенаров, пользователь попадает на файловый обменник, где будет предложено скачать нужную информацию. Это достигнуто способом, прикрепления ссылки в картинку, в самой базе данных <a href=”http://file.qip.ru/file/sdtegDF/Лабы.html”><img scr=”files/03042011/lab.jpg”></a>

6). Файл «view_search.php» – страница, которая генерируется в том случае, когда было задействовано поле поиска и нажата кнопка «search!» . Это было достигнуто, при помощи mysql_query (“SELECT * FROM Lessons WHERE MATCH(text) AGAINST (‘$search’)”, $db) , из этого можно заметить, что поиск осуществляется, только по одному полю определенной таблицы. Так же в систему поиска включено ограничение на минимальную длину ввода и проверку пустое поле или нет: if (empty($search) or strlen ($search)<4){exit (“Поисковый запрос не введен, либо короче 4-х символов”)}

7). Файл «news.php» – страница на которую выводятся все новости, начиная с самых ранних и заканчивая последними. Достигнуто при помощи: mysql_query (“SELECT * FROM News ”, $db). Справа же подключается блок «righttd5». В котором все эти новости сгруппированы по годам и месяцам, при нажатии на дату, будет сгенерирована страница «view_date.php», в которой будут присутствовать новости по нажатой дате. Что достигнуто при помощи: mysql_query (“SELECT DISTINCT left(date, 7) AS month FROM News ORDER BY month DESC “, $db). Вывод в файл «view_date.php» printf (<href=’view_date.php?date=%s’>)

8). Файл «view_date.php» – страница, которая генерируется при выборке новостей по месяцу из правого блока «righttd5». На ней пользователь может увидеть, выведенные новости по месяцу, которому он выбрал. Достигнуто с помощью:

$date_title = $date;

$date_begin = $date;

$date++; //+ Месяц

$date_end = $date;

$date_begin = $date_begin. "-01";

$date_end = $date_end. "-01";

9). Файл «secret.php» – при переходе на эту страницу, посетитель видит предупреждение, что если он хочет попасть на закрытую страницу «view_events.php», он должны ввести код доступа в поле ввода, и так же нажать на кнопку: Для стимулирования интереса, попасть на эту страницу, под кнопкой, находятся краткое описание новостей, что достигнуто с помощью: mysql_query (“SELECT mini_foto, name, description, foto\autor FROM Events WHERE secret = 1”, $db), Ввод информации на средний блок :

printf (…. <a href=’#’>%s(Доступ закрыт)</a>

<p>Краткое описание: %s</p>

<p>Автор\фотограф: %s </p> ...).

Полные же отчеты с фотографиями о мероприятиях можно прочесть и увидеть, только после перехода на «view_events.php», введя код. Осуществлено с помощью:

if (!isset($code) or $code !=$prcode)

If (mysql_num_rows ($result) > 0)

($myrow = mysql_fetch_array ($result);

Do {printf (… a href=’viev_events.php?id=%s’ …)});

После прохождения цикла, и при правильном вводе кода, попадаем на «view_events.php»

10). Файл «view_events.php» – страница открывается, только после ввода кода, на странице «secret.php». Сама же работает и выкачивает информацию из БД, аналогично файлу «view_post.php».

Защита в php файлах.

В Файлах : «view_idHobby.php», «view_post.php» , «view_ррl.php», «view_events.php», «view_cem.php», «view_date.php» , «view_search.php», осуществляется защита и проверка глобальных переменных с помощью:

if (isset($_GET['id'])) {$id = $_GET ['id']; } //защита глобальных переменных

if (!isset($id)) {$id = 1;} //защита от загрузки без котегории

/*Проверяем, являеться ли переменная числом*/

if (!preg_match("|^[\d]+$|", $id)) {

exit("<p>Неверный формат запроса! Проверьте правльность ссылки!</p>");}

$result = mysql_query("SELECT поле FROM таблица WHERE id='$id'",$db);

if (!result)

{echo "<p>Запрос на выборку данных из БД не прошел. Напишите об этом админу [email protected]<br><strong>Код ошибки:</strong></p>";

exit (mysql_error());}

if (mysql_num_rows($result) > 0)

{$myrow = mysql_fetch_array($result);}

else

{echo "<p>Информация по запросу не может быть извелечена в таблице нет записей.</p>";

exit ();}

Также в файле «view_search.php» существует защита от взлома БД. Осуществлено с помощью :

if (isset($submit_s)) //Проверка, прошли по кнопке, или вбив в ручную. Если в ручную, то выводиться "Вы перешли на страницу без нужных параметров"

{if (empty($search) or strlen($search) < 4) //Проверка пустое или меньше 4-х символов поле для поиска в момент нажатия на кнопку.

{exit ("<p>Поисковый запрос не введен, либо он короче 4-х символов</p>");}

$search = trim ($search); //Обрезка от крайних "случачйных" пробелов

$search = stripslashes ($search); //Удаляет символ "/" в поле ввода

$search = htmlspecialchars ($search); //защита от использования, исполняемых кодов, для того чтоб не влезли в БД.(замена на Мьмоники)}

else

{exit ("<p>Вы перешли на страницу без нужных параметров.</p>");}

Состав базы данных.

В данном документе содержатся ЕR-модель, UML-модель и так же описана структура всех таблиц, входящих в базу КИС.

Графическая ЕR-модель

Цель и назначение разработанного сайта. - student2.ru

Функциональные зависимости

ПоставщикиСклад

idПоставщика ->Телефон idТовара->Кол-во

idПоставщика ->Факс idТовара->Стоимость

idПоставщика ->Почта idТовара->Фото

idПоставщика ->Адрес idТовара->Описание

idПоставщика ->ФИО

ИнформаияМесто_службы

idИнформации ->ТелРабочий idМеста->Дата приема

idИнформации ->ТелЛичный idМеста-> Дислокация

idИнформации ->ДеньРождения idМеста-> Должность

idИнформации ->Факс idМеста-> Выслуга

idИнформации -> Образо idМеста->Отдел

idИнформации -> Адрес idМеста->Фото

НакладнаяСотрудники

idНакладной -> Дата idСотрудника-> Фамилия

idНакладной -> idПоставщика idСотрудника-> Имя

idНакладной -> idТовара idСотрудника-> Отчество

idНакладной -> idСотрудника idСотрудника-> Фото

idСотрудника->idМеста

idСотрудника->idИнформации

Рем.Техники

id Техники -> Название

id Техники -> ДатаПривоза

id Техники -> №Инвентаризационный

id Техники ->Фото

id Техники ->ПричинаПоломки

id Техники ->ДатаКонца

id Техники ->idСотрудника

UML-модель

Цель и назначение разработанного сайта. - student2.ru

Цель и назначение разработанного сайта. - student2.ru

ТАБЛИЦЫ

Главные таблицы:

Таблица Поставщики.

Данные о поставщиках.

Цель и назначение разработанного сайта. - student2.ru

idПоставщика -порядковыйномер (выставляется автоматически)

Телефон –телефон поставщика

Факс –факс поставщика

Почта –электронная почта поставщика

Адрес –юридический адрес поставщика

ФИО –Фио юр.\физ. поставщика

Таблица Склад

Данные о складе.

Цель и назначение разработанного сайта. - student2.ru

idТовара -порядковыйномер (выставляется автоматически)

Кол-во –кол-во товара на складе

Стоимость –закупочная стоимость товара

Фото –фото товара

Описание –описание товара

Таблица Информация

Данные информации.

Цель и назначение разработанного сайта. - student2.ru

idИнформации –порядковыйномер (выставляется автоматически)

ТелРабочий –рабочий телефонный номер сотрудника

ТелЛичный –личный телефонный номер сотрудника

ДеньРождения – День Рождения сотрудника

Факс – рабочий номер факса сотрудника

Образование –какое образование имеет сотрудник

Адрес –адрес прописки сотрудника

4. Таблица Место_Службы

Данные о месте службы.

Цель и назначение разработанного сайта. - student2.ru

idМеста - порядковый номер (выставляется автоматически)

Дата приема– дата приема на службу

Дислокация – адрес прохождения службы

Должность - занимаемая должность на месте службы

Выслуга- срок службы

Отдел - название отдела

Фото - Фото сотрудника

Таблица Накладная

Данные о накладных

Цель и назначение разработанного сайта. - student2.ru

idНакладной –порядковыйномер (выставляется автоматически)

Дата –дата оформления накладной

idПоставщика -порядковый номер поставщика (связь с таблицей Поставщики)

idТовара - порядковый номер товара (связь с таблицей Слад)

idСотрудника - порядковый номер сотрудника (связь с таблицей сотрудники)

Таблица Сотрудники

Содержит данные о сотрудниках

Цель и назначение разработанного сайта. - student2.ru

idСотрудника –порядковыйномер (выставляется автоматически)

Фамилия –Фамилия сотрудника

Имя –Имя сотрудника

Отчество - Отчество сотрудника

Фото - фото сотрудника

idМеста - порядковый номер (связь с таблицей Место_службы)

idИнформации –порядковыйномер (связь с таблицей Информация)

Таблица Рем.Техники

Содержит данные о ремонте техники.

Цель и назначение разработанного сайта. - student2.ru

id Техники –порядковыйномер (выставляется автоматически)

Название –полное название ремонтируемой техники

ДатаПривоза –дата привоза техники на ремонт

№Инвентаризационный - Инвентаризационный номер ремонтируемой техники

Фото -фото ремонтируемой техники

ПричинаПоломки -Причина поломки ремонтируемой техники(со слов)

ДатаКонца -приблизительное время окончания ремонта

idСотрудника - порядковый номер сотрудника (связь с таблицей сотрудники)

Связующие таблицы:

Содержит пароль для входа в закрытый раздел

Цель и назначение разработанного сайта. - student2.ru

Id –порядковыйномер (выставляется автоматически)

Str –длина кода доступа

Prcode –код доступа

Заключение

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

1. Была собранна и анализирована информация обо всех доступных и существующих СУБД, а также языков разработки Web-приложений.

2. Были проанализированы Web-серверы, и возможность доступа к БД через эти сервера.

3. На основе этих анализов, был выбран наиболее оптимальный способ решения поставленной задачи, что привело к разработке и реализации баз данных с доступом к БД через Web-приложение.

4. В итоге КИС обладает хорошей информативностью, как и о самих служащих, так и о мониторинге склада и выполнения ремонта компьютерной техники.

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

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

Глава 1.

Цель и назначение разработанного сайта.

В этой дипломной работе

Наши рекомендации