Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx56 / курсач(11).docx
Скачиваний:
41
Добавлен:
01.08.2013
Размер:
69.91 Кб
Скачать

Міністерство освіти і науки України

Національний технічний університет України

«Київський політехнічний інститут»

Фізико-технічний інститут

Курсова робота web – програмування

Інформативний сервіс виявлення та опису можливих хімічних реакцій для заданих речовин

Виконали:

студентки ІІ курсу

ФТІ групи ФІ-12

Гуліта Анна Молоченко Дар’я

Перевірили: Поздняков Є.А.

Шелестов А. Ю.

Київ - 2012

ЗМІСТ

  1. Розробники, їх обов’язки ………………………………………………. 3

  2. Постановка задачі ……………………………………………………….4

  3. Опис прецедентів ………………………………………………………..5

  4. Діаграма прецедентів…………………………………………………….8

  5. Діаграма бази даних ……………………………………………………..9

  6. Вибрані засоби розробки ……………………………………………….10

  7. Керівництво до встановлення. Вимоги до обладнання ……………….11

  8. Код ………………………………………………………………………..12

  1. Розробники, їх обов’язки.

Гуліта Анна - розробка структури бази даних та реалізація бази даних, реалізація перевірок правильності введення даних на стороні клієнта.

Молоченко Дар’я - розробка та реалізація користувацького інтерфейсу для роботи з сервісом, реалізація взаємозв’язків клієнт-сервер-БД.

  1. Постановка задачі

Головним завданням було створити сервіс для виявлення та опису хімічних реакцій для заданих користувачем речовин, проте з певними вимогами:

  1. Для кожної речовини має бути зазначено її назва (повна і символьна), клас, коротка інформація про речовину та особливості її взаємодії з іншими речовинами.

  2. За обраними речовинами (їх кількість має обмежуватися двома) користувач має отримувати інформацію про хімічну реакцію, що відбулася, а зокрема формульний запис вихідних речовин, тип реакції та розгорнутий опис реакції та вихідних речовин.

  3. В сервісі має бути можливість адміністрування, вимоги до неї:

  1. Наявність декількох адміністраторів, які можуть працювати паралельно.

  2. Можливість адміністратора додавати нову речовину до переліку вже існуючих.

  3. Можливість адміністратора додавати нову хімічну реакцію для пар речовин, що вже додані.

  4. Можливість адміністратора видаляти речовину з переліку, а відповідно й усі хімічні реакції з її участю, що були описані раніше.

  5. Можливість адміністратора додавати нового адміністратора.

  1. Інтерфейс сервісу має розділяти права для простих користувачів та адміністраторів.

  2. Інтерфейс має бути приємним на вигляд та зручним у користуванні для пересічного користувача Інтернету.

  3. На сервісі має бути присутнім контроль над введенням даних у формах, як для адміністраторів, так і для користувачів.

  1. Опис прецедентів

Прецедент

Перегляд таблиці речовин та інформації про них

Виконавці

Користувач або адміністратор

Мета

Ознайомитись з наявними речовинамита їхніми властивостями

Опис

Клієнт вивчає інформацію про речовини з якими бажає працювати

Дії виконавця

Відгук системи

Вибір в контекстному меню пункт роботи з сервісом

Робиться запит до БД про всі речовини.

Виводиться перелік речовин

Прецедент

Введення двох конкретних речовин

Виконавці

Користувач або Адміністратор

Мета

Задання бажаних речовин

Опис

Клієнт обирає з перерахованих речовин конкретні елементи і вносить їх в відповідні поля

Дії виконавця

Відгук системи

Задання конкретних речовин в відповідних полях

Згідно з введеними даними робить запит до БД.

Прецедент

Перегляд результату реакції

Виконавці

Користувач або адміністратор

Мета

Переглянути результат вказаної реакції

Опис

Клієнт отримує інформацію про конкретну хімічну реакцію

Дії виконавця

Відгук системи

Перегляд вихідних речовин та інформації про реакцію, що його цікавила

Виводить з БД результат реакції(список вихідник речовин в разі коректного введення вхідних або інформацію про відсутність даного хімічного зв’язку в іншому випадку)

Прецедент

Авторизація

Виконавці

Адміністратор

Мета

Отримати доступ до засобів редагування БД

Опис

Введення логіну та паролю, щоб підтвердити свій рівень доступу

Дії виконавця

Відгук системи

У відведені поля форми авторизації вводить конфіденційні дані адміністратора сервісу (логін та пароль)

Перевіряє істинність введених даних. У випадку вірних даних, відбувається авторизація адміністратора. У випадку невдачі – користувач заходить як гість.

Прецедент

Додавання нової хімічної речовини

Виконавці

Адміністратор

Мета

додати нову хімічну речовину до БД

Опис

доповнення БД новою речовиною, її властивостями та характеристиками

Дії виконавця

Відгук системи

Вводить хімічне позначення речовини, повну її назву, клас, до якого відноситься, та коротку інформацію.

Підтверджує додавання нового елементу.

Виводить форму для введення хімічного позначення нової речовини, повної її назви, класу та короткої інформації.

Перевіряє, чи присутня дана речовина в БД, якщо так – відмова в додаванні нового елементу до БД.

Додає елемент до БД в іншому випадку.

Прецедент

Додавання нових хімічних зв’язків

Виконавці

Адміністратор

Мета

Додати нову хімічну реакцію до БД

Опис

доповнення БД новою реакцією, її властивостями та характеристиками

Дії виконавця

Відгук системи

Вводить вхідні та вихідні речовини для задання нової реакції, тип реакції та коротку інформацію неї.

Підтверджує додавання нової реакції. Визначає хімічний зв’язок.

Виводить форму для введення хімічного позначення реагентів, типу реакції та короткої інформації.

Додає рекцію до БД.

Прецедент

Видалення хімічної речовини та зв’язків, що їй відповідають

Виконавці

Адміністратор

Мета

Видалити хімічну речовину та відповідні реакцій з БД

Опис

Видалення з БД речовини її властивостей та характеристик та хімічних реакцій, що з нею пов’язані

Дії виконавця

Відгук системи

Вводить речовину, що бажає видалити.

підтверджує видалення.

Виводить форму для введення хімічного позначення речовини.

Видаляє хімічну речовину і всі пов’язані з нею реакції з БД

Прецедент

Реєстрація нового адміністратора

Виконавці

Адміністратор

Мета

Зареєструвати нового адміністратора, надати йому унікальні можливості роботи з сервісом

Опис

Доповнення БД інформацією про ще одного адміністротарора

Дії виконавця

Відгук системи

Вводить дані про нового адмістратора

Виводить форму для введення даних про нового адміністратора.

Додає введені дані доо БД.

  1. Діаграма прецедентів

  1. Діаграма бази даних

v

chemistry.administrators

id : int(11)

login : varchar(255)

password : varchar(255)

name : varchar(255)

surname : varchar(255)

age : int(11)

work : varchar(255)

v

chemistry.elements

id : int(11)

short_name : varchar(255)

long_name : varchar(255)

class : varchar(255)

info : text

v

chemistry.result

id1 : int(11)

id2 : int(11)

short_name : varchar(255)

long_name : varchar(255)

info : text


chemistry – база даних для сервісу.

elements – таблиця, що містить дані про хімічні речовини.

result – таблиця, що містить дані про можливі хімічні реакції.

administrators – таблиця, що містить дані про адміністраторів.

Тип таблиць – InnoDB.

  1. Вибрані засоби розробки

Програмне забезпечення:

  1. OpenServer (WAMP - платформа).

  2. NotePad++, Dreamweaver CS6.

  3. PhpMyAdmin.

Використані для розробки мови:

  1. HTML 4.0 – написання інтерфейсу

  2. СSS – для оформлення приємного вигляду сервісу.

  3. PHP 5

  4. JavaScript – перевірки правильності введення даних на стороні клієнта

  1. Керівництво до встановлення. Вимоги до обладнання

Вимоги:

ОС: довільна

Web-сервер: Apache

БД: MySQL 5+

PHP: PHP 5+

Налаштування та встановлення.

  1. Створити базу даних chemistry

  2. Імпортувати в неї дані з файлу cemistry.sql

  3. Скопіювати файли з папки Chemistry-free service на веб-сервер.

  4. Редагувати дані про власника БД в файлі config.php

$dblocation = "localhost"; // сервер БД

$dbname = "chemistry"; // ім’я БД

$dbuser = "root"; // логін

$dbpasswd = ""; // пароль

  1. Код

База даних: `chemistry` (файл chemistry.sql)

--

-- База данных: `chemistry`

--

-- --------------------------------------------------------

--

-- Структура таблицы `administrators`

--

CREATE TABLE IF NOT EXISTS `administrators` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`login` varchar(255) NOT NULL,

`password` varchar(255) NOT NULL,

`name` varchar(255) NOT NULL,

`surname` varchar(255) NOT NULL,

`age` int(11) NOT NULL,

`work` varchar(255) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--

-- Дамп данных таблицы `administrators`

--

INSERT INTO `administrators` (`id`, `login`, `password`, `name`, `surname`, `age`, `work`) VALUES

(1, 'supervisor', 'b59c67bf196a4758191e42f76670ceba', 'Дарья', 'Молоченко', 18, 'КПИ'),

(2, 'white_heart', '934b535800b1cba8f96a5d72f72f1611', 'Анна', 'Гулита', 19, 'КПИ');

-- --------------------------------------------------------

--

-- Структура таблицы `elements`

--

CREATE TABLE IF NOT EXISTS `elements` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`short_name` varchar(255) NOT NULL,

`long_name` varchar(255) NOT NULL,

`class` varchar(255) NOT NULL,

`info` text NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=31 ;

--

-- Дамп данных таблицы `elements`

--

INSERT INTO `elements` (`id`, `short_name`, `long_name`, `class`, `info`) VALUES

(1, 'NaOH', 'гидроксид натрия', 'основы', 'Самая распространённая щёлочь.В год в мире производится и потребляется более 57 миллионов тонн едкого натра.'),

(2, 'KOH', 'гидроксид калия', 'основы', 'Бесцветные, очень гигроскопичные кристаллы, но гигроскопичность меньше, чем у гидроксида натрия. Водные растворы КОН имеют сильнощелочную реакцию. Получают электролизом растворовKCl, применяют в производстве жидких мыл, для получения различных соединений калия.'),

(3, 'Ba(OH)2', 'гидроксид бария', 'основы', 'Гидроксид бария при стандартных условиях представляет собой бесцветные кристаллы[2]. Насыщенный раствор гидроксида бария называют баритовой водой. Гигроскопичен. Не растворим в спирте, но растворим в воде. Образует кристаллогидраты с одной, двумя, семью и восемью молекулами воды. Гидроксид бария токсичен.'),

(4, 'Cu(OH)2', 'гидроксид купрума', 'основы', 'Голубое аморфное или кристаллическое вещество с ромбической кристаллической решеткой. Практически не растворим в воде.'),

(5, 'Fe(OH)2', 'дигидроксид железа', 'основы', 'Амфотерный гидроксид с преобладанием осно́вных свойств. Кристаллическое вещество белого (иногда с зеленоватым оттенком) цвета, на воздухе со временем темнеет.'),

(6, 'Fe(OH)3', 'тригидроксид железа', 'основы', 'Красновато-коричневые кристаллы, не растворяется в воде.В природе встречается минерал лимнит, по составу совпадает сFe(OH)3.'),

(7, 'Ca(OH)2', 'гидроксид кальция', 'основы', 'Представляет собой порошок белого цвета, плохо растворимый в воде.Получают путём взаимодействия оксида кальция с водой.\r\nЭта реакция экзотермическая, идёт с выделением 16 ккал (67 кДж) на моль.'),

(8, 'Mg(OH)2', 'гидроксид магния', 'основы', 'При стандартных условиях гидроксид магния представляет собой бесцветные кристаллы с гексагональной решёткой. При температуре выше 350 °Cразлагается на оксид магния и воду. Поглощает углекислый газ и воду из воздуха с образованием основного карбоната магния. Гидроксид магния практически нерастворим в воде, но растворим в солях аммония.'),

(9, 'Zn(OH)2', 'гидроксид цинка', 'основы', 'Гидроксид цинка при стандартных условиях представляет собой бесцветные кристаллы, является аморфным веществом. В настоящее время известно 5 полиморфных модификаций, из которых устойчивой является только модификация с ромбической сингонией. Гидроксид цинка практически нерастворим в воде, проявляет амфотерные свойства (с преобладанием основных).'),

(10, 'LiOH', 'гидроксид лития', 'основы', 'Гидроксид лития при стандартных условиях представляет собой бесцветные кристаллы с тетрагональной решёткой. При работе с ним необходимо проявлять осторожность, избегать попадания на кожу и слизистые оболочки.'),

(11, 'H2SO4', 'Сульфатная кислота', 'кислоты', 'При обычных условиях концентрированная серная кислота — тяжёлая маслянистая жидкость без цвета и запаха, с кислым «медным» вкусом.'),

(12, 'H2SO3', 'Сульфитная кислота', 'кислоты', 'Неустойчивая двухосновная кислота средней силы, существует лишь в разбавленных водных растворах.'),

(13, 'HNO3', 'нитратная кислота', 'кислоты', 'Висококорозийна кислота, реагирует с большинством металлов, сильный окисляя агент. Имеет тенденцию приобретать желтый оттенок из-за накопления оксидов азота, при долгом збериганни.'),

(14, 'HPO3', 'метафосфорная кислота', 'кислоты', 'В чистом виде представляет собой стекловидную массу, легко растворимую в воде.'),

(15, 'H3PO4', 'ортофосфорная кислота', 'кислоты', 'При стандартных условиях представляет собой бесцветные гигроскопичные кристаллы.\r\nПри температуре выше 213 °Cона превращается в пирофосфорную кислотуH4P2O7. Очень хорошо растворима в воде. Растворима также в этаноле и других растворителях.'),

(16, 'H2CO3', 'карбонатная кислота', 'кислоты', 'В чистом виде неустойчива. Образуется в малых количествах при растворении углекислого газа в воде, в том числе и углекислого газа из воздуха.'),

(17, 'H2SiO3', 'силикатная кислота', 'кислоты', 'Очень слабая, малорастворимая в воде кислота.В воде кремниевые кислоты образуют коллоидные растворы.Соли кремниевых кислот называют силикатами.'),

(18, 'HCl', 'хлорная кислота', 'кислоты', 'Одноосновная кислота, одна из самых сильных,исключительно сильный окислитель, так как содержит хлор в высшей степени окисления. Взрывоопасна.'),

(19, 'H2S', 'сероводород', 'кислоты', 'Бесцветный газ с запахом протухших яиц и сладковатым вкусом. Плохо растворим в воде, хорошо — в этаноле. Ядовит. При больших концентрациях разъедает многие металлы.'),

(20, 'HBr', 'бромоводород', 'кислоты', 'Соединение брома с водородом. Бесцветный газ, образует туман в сыром воздухе.'),

(21, 'NaCl', 'хлорид натрия', 'соли', 'Хлорид натрия известен в быту под названием поваренной соли, основным компонентом которой он является. Хлорид натрия в значительном количестве содержится в морской воде, создавая её солёный вкус. Встречается в природе в виде минерала галита.\r\n'),

(22, 'KNO3', 'нитрат калия', 'соли', 'В кристаллическом состоянии — бесцветное вещество, нелетучее, слегка гигроскопичное, без запаха. Нитрат калия хорошо растворим в воде. Практически не токсичен для живых организмов.'),

(23, 'CaSO4', 'сульфат кальция', 'соли', 'Безводный сульфат кальция — бесцветные кристаллы при нормальных условиях — с ромбической кристаллической решёткой.В индустриальных масштабах добывают в составе природных минералов, например гипса, селенита или алебастра.'),

(24, 'BaCO3', 'карбонат бария', 'соли', 'химическое соединение, бариевая соль угольной кислоты В природе встречается в виде минерала витерита.'),

(25, 'Na2SO3', 'сульфит натрия', 'соли', 'Сильный восстановитель. При обычной температуре из водных растворов кристаллизуется. В водных растворах легко окисляется кислородом воздуха. В водных растворах присоединяет при нагревании серу с образованием тиосульфата натрия.'),

(26, 'Ba3(PO4)2', 'ортофосфат бария', 'соли', 'Соединение представляет собой аморфный белый порошок плохо растворимый в воде, но заметно растворимый в присутствииNH4Cl, уксусной кислоте и хорошо в сильных кислотах.'),

(27, 'K2S', 'сульфид калия', 'соли', 'Бинарное неорганическое химическое соединение калия с серой.Бесцветные кубические кристаллы . Хорошо растворимы в воде (с гидролизом). Растворим в спирте и глицерине. Гигроскопичен.'),

(28, 'CaSiO3', 'силикат кальция', 'соли', 'Неорганическое вещество, соль щелочноземельного металла кальция и метакремниевой кислоты . Бесцветные кристаллы.'),

(29, 'CaCO3', 'карбонат кальция', 'соли', 'В природе встречается в виде минералов — кальцита, арагонита и ватерита, является главной составной частью известняка, мрамора. Нерастворим в воде и этаноле.'),

(30, 'Fe2(SO4)3', 'сульфат железа (III)', 'соли', 'Cветло-желтые, парамагнитные, очень гигроскопичные кристаллы моноклинной сингонии, пространственная группа. Растворим в воде и ацетоне, не растворяется в этаноле.');

-- --------------------------------------------------------

--

-- Структура таблицы `result`

--

CREATE TABLE IF NOT EXISTS `result` (

`id1` int(11) NOT NULL,

`id2` int(11) NOT NULL,

`short_name` varchar(255) NOT NULL,

`long_name` varchar(255) NOT NULL,

`info` text NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--

-- Дамп данных таблицы `result`

--

INSERT INTO `result` (`id1`, `id2`, `short_name`, `long_name`, `info`) VALUES

(1, 11, 'NaSO4+H2O', 'реакция нейтрализации', 'возникает соль натрий сульфат и вода'),

(1, 12, 'Na2SO3+H2O', 'реакция нейтрализации', 'возникает натрий сульфит и вода'),

(1, 13, 'NaNO3+H2O', 'реакция нейтрализации', 'возникает натрий нитрат и вода'),

(1, 14, 'NaPO3+H2O', 'реакция нейтрализации', 'возникает натрий метафосфор и вода'),

(1, 15, 'Na3PO4+H2O', 'реакция нейтрализации', 'возникает натрий ортофосфат и вода'),

(1, 16, 'Na2CO3+H2O', 'реакция нейтрализации', 'возникает натрий карбонат и вода'),

(1, 17, 'Na2SiO3+H2O', 'реакция нейтрализации', 'возникает натрий силикат и вода'),

(1, 18, 'NaCl+H2O', 'реакция нейтрализации', 'возникает натрий хлорид и вода'),

(1, 19, 'Na2S+H2O', 'реакция нейтрализации', 'из большой слабости кислоты и ее неустойчивого поведения в виде водного раствора, реакция возможна только при наличии катализаторов, тогда возникнет натрий сероводород и вода'),

(1, 20, 'NaBr+H2O', 'реакция нейтрализации', 'возникает натрий бромид и вода'),

(2, 11, 'K2SO4+H2O', 'реакция нейтрализации', 'возникает калий сульфат и вода'),

(2, 12, 'K2SO3+H2O', 'реакция нейтрализации', 'возникает калий сульфит и вода'),

(2, 13, 'KNO3+H2O', 'реакция нейтрализации', 'возникает калий нитрат и вода'),

(2, 15, 'K3PO4+H2O', 'реакция нейтрализации', 'возникает калий ортофосфат и вода'),

(2, 18, 'KCl+H2O', 'реакция нейтрализации', 'возникает калий хлорид и вода'),

(2, 20, 'KBr+H2O', 'реакция нейтрализации', 'возникает калий бормид и вода'),

(3, 11, 'BaSO4+H2O', 'реакция нейтрализации', 'возникает барий сульфат и вода'),

(3, 13, 'Ba(NO3)2+H2O', 'реакция нейтрализации', 'возникает барий нитрат и вода'),

(3, 16, 'BaCO3+H2O', 'реакция нейтрализации', 'возникает барий карбонат и вода'),

(3, 18, 'BaCl2+H2O', 'реакция нейтрализации', 'возникает барий хлорид и вода'),

(4, 11, 'CuSO4+H2O', 'реакция нейтрализации', 'возникает купрум сульфат и вода'),

(5, 11, 'FeSO4+H2O', 'реакция нейтрализации', 'возникает сульфат железа (2) и вода'),

(5, 16, 'FeCO3+H2O', 'реакция нейтрализации', 'возникает карбонат железа (2) и вода'),

(6, 15, 'FePO4+H2O', 'реакция нейтрализации', 'возникает ортофосфат железа (3) и вода'),

(7, 11, 'CaSO4+H2O', 'реакция нейтрализации', 'возникает кальций сульфат и вода'),

(7, 13, 'Ca(NO3)2+H2O', 'реакция нейтрализации', 'возникает кальций нитрат и вода '),

(7, 16, 'CaCO3+H2O', 'реакция нейтрализации', 'возникает кальций карбонат и вода'),

(8, 12, 'Mg2SO3+H2O', 'реакция нейтрализации', 'возникает магний сульфит и вода'),

(9, 16, 'ZnCO3+H2O', 'реакция нейтрализации', 'возникает цинк карбонат и вода'),

(11, 21, 'Na2SO4+HCl', 'реакция замещения', 'возникает натрий сульфат и хлоридная кислота'),

(11, 29, 'CaSO4+H2CO3', 'реакция замещения', 'возникает кальций сульфат и карбонатная кислота'),

(12, 22, 'K2SO4+HNO3', 'реакция замещения', 'возникает калий сульфат и нитратная кислота'),

(15, 24, 'Ba3(PO4)2+H2CO3', 'реакция замещения', 'возникает барий ортофосфат и карбонатная кислота'),

(15, 25, 'Na3PO4+H2SO3', 'реакция замещения', 'возникает натрий ортофосфат и сульфитная кислота'),

(18, 29, 'CaCl2+H2CO3', 'реакция замещения', 'возникает кальций хлорид и карбонатная кислота');

style.css

@charset "utf-8";

* {margin: 0px; padding: 0px;}

body {background:url(images/bg.jpg) repeat; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; color:#666666;}

.clear {clear:both;}

#wrap {background:url(images/wrapbg.jpg) repeat-y; width:927px; margin:25px auto 25px auto;}

#wrap #header #sitename {color: #ffffff; font-family: Georgia, "Times New Roman", Times, serif; font-size: 58px; font-weight: normal; display: block; padding-top: 140px; text-align: right; padding-right: 50px;}

#sitename a, #sitename a:visited, #sitename a:active{color:#ffffff; text-decoration:none;}

#sitename a:hover{color:#ffffcc; text-decoration:none;}

#header {background:url(images/header.jpg) no-repeat; height:341px;}

#page {padding:0px 10px 0px 10px;}

#page #menu {float:left; background:url(images/sidemenu1.jpg) no-repeat; width:269px; height:382px;}

#page #content {margin:0px 0px 0px 275px; padding:0px 20px 0px 5px;}

#content p {line-height:22px; margin:0px 0px 25px 0px;}

#content h2 {font-family:Georgia, "Times New Roman", Times, serif; font-weight:normal; font-size:26px; color:#666600; display:block; margin-bottom:20px;}

#content a {color:#999900;}

#content a:visited {color:#666666;}

#content a:active { color:#99CC00;}

#content a:hover {color:#000000; text-decoration:none;}

#content h2 .seo {display:block; text-align:right; font-size:10px; color:#999999; background:#efefef; padding:3px;}

#content blockquote {display:block; padding:5px; margin:10px; text-align:center; font-family:Georgia, "Times New Roman", Times, serif; color:#996600; background:#F8FDBA; border-top:dashed 1px #666666; border-bottom:dashed 1px #666666;}

#content blockquote p {margin:0px;}

#content blockquote cite {color:#000000; display:block; text-align:right; padding:5px; border-top:solid 1px #F3ECBE;}

#content img {background:#efefef; margin:5px; padding:5px; border:solid 1px #999999;}

#content .alignleft {float:left;}

#content .alignright {float:right;}

#content .postmetadata {display:block; padding:3px; background: #E3EDAF;}

#content h1,#content h3,#content h4,#content h5,#content h6 {color:#666600;}

#content ul {list-style:square; padding:5px; margin:10px 10px 10px 20px;}

#content li {padding:5px; margin-bottom:10px;}

#content ol {padding:5px; margin:10px 10px 10px 20px;}

#browse { background:url(images/postbottombg.jpg) no-repeat; padding:40px 5px 10px 5px;}

#browse .subhead{font-family:Georgia, "Times New Roman", Times, serif; font-weight:normal; padding-left:25px; font-size:26px; color:#666600; display:block; margin-bottom:35px;}

#browse .categoryhead {font-family:Georgia, "Times New Roman", Times, serif; font-weight:normal; padding:5px; font-size:22px; color:#666600; display:block; border-bottom:solid 1px #ffffff;}

#browse ul {list-style:none;}

#browse li {display:block; height:25px; border-top:solid 1px #FEFEFC; border-top: solid 1px #EBE6B4;}

#browse ul a {display:block; height:20px; padding:5px 5px 0px 5px; text-decoration:none; color:#000000;}

#browse a:visited,active{display:block; height:20px; padding:5px 5px 0px 5px; text-decoration:none; color:#000000;border-bottom:solid 1px #D7C479;}

#browse a:hover {background:#ffffff; color:#000000;}

.browsecat {float:left; width:30%; padding:5px 6px 8px 6px; margin-left:10px; border:solid 1px #F3ECBE; background:#FBFAF0;}

#menu h2 {display:block; color:#666600; border-bottom:solid 1px #DFCD95; padding:5px; font-family:Georgia, "Times New Roman", Times, serif; font-size:22px; font-weight:normal;}

#wrap #page #menu #sidemenu { padding: 65px 45px 0px 40px; display: block;}

#sidemenu ul { display:block;list-style:none;}

#sidemenu li {display:block; height:26px; border-top:solid 1px #FFFFff;}

#sidemenu a, #sidemenu a:visited, #sidemenu a:active {display:block; height:20px; padding:5px 5px 0px 5px; color:#666666; text-decoration:none; border-bottom:solid 1px #DFCD95;}

#sidemenu a:hover{background:#ffffcc;}

#sidemenu .active a,#sidemenu .active a:visited, #sidemenu .active a:active, #sidemenu .active a:hover {background:#ffffcc;}

#footer {background:url(images/footer.jpg) no-repeat; background-position:bottom; height:100px; text-align:center;}

#footercontent {margin:15px; border-top:solid 1px #EBE6B4; padding-top:15px;}

#footer a, #footer a:visited, #footer a:active {color:#996633; text-decoration:none;}

#footer #credit {font-size:10px;}

.textfield {display: block; float:left; width:65%; background-color: #F3F4E8; margin:3px 3px 3px 30px; padding:3px; border: 1px solid #D6D9AE; clear:right;}

label { display: block; float:left; text-align:right; font-weight:bold; width:20%; margin:3px; padding: 5px;}

.button {display: block; padding:0px; background-color:#E3E6C8; margin:3px; border: 2px solid #efefef; color:#000000;}

.textfield:hover {background:#FBFCF8;}

.textfield:focus {background:#ffffff;}

#content .clear2 {clear:right; width:90%;}

.hide {display:none;}

#content table {margin:10px; width:500px; border:solid 1px #BDDB99;}

#content th {background:#DFEDCD; padding:5px 15px 5px 15px; color:#999933; font-weight:bold; text-align:center; border-bottom:1px solid #BDDB99;}

#content td {border-bottom:1px solid #DFEDCD ; padding:5px 15px 5px 15px; border-right:1px solid #DFEDCD;}

config.php

<?php

// Данные для mysqlсервера

$dbhost= "localhost"; // Хост

$dbuser= "root"; // Имя пользователя

$dbpassword= ""; // Пароль

$dbname= "chemistry"; // Имя базы данных

// Подключаемся к mysqlсерверу

$link=mysql_connect($dbhost, $dbuser, $dbpassword);

//mysql_query("set character_set_client='cp1251'");

//mysql_query("set character_set_results='cp1251'");

//mysql_query("set collation_connection='cp1251_general_ci'");

// Выбираем нашу базу данных

mysql_select_db($dbname, $link);

?>

register.php

<?php

session_start();

if (empty($_SESSION['login'])) {

print <<<HERE

<form action="testreg.php" method="post">

<table width="100%" border="0">

<tr> <td align="center">Login:</td>

</tr> <tr>

<td align="center"> <input name="login" type="text" size="15" maxlength="15"></td>

</tr> <tr>

<td align="center">Password:</label></td>

</tr> <tr>

<td align="center"><input name="password" type="password" size="15" maxlength="15"></td>

</tr> <tr>

<td align="center"><input type="submit" name="submit" value="Enter"></td>

</tr></table>

</form> <center>Hello, <b>guest</b></center><br>

HERE;}

else{

print <<<HERE

<center>Hello,<b>$_SESSION[login]</b><a href='exit.php'><u>Exit</u></a></center><br>

HERE;}?>

testreg.php

<?php

session_start();

$login = $_POST['login'];

$password= $_POST['password'];

if (empty($login) or empty($password))

{

print"<script language='Javascript' type='text/javascript'>

<!--

alert ('Input all data!!');

function reload()

{location = \"index.php\"};

setTimeout('reload()', 0);

-->

</script>";

}

else{

require_once("config.php");

$strSQL = "SELECT `id` FROM `administrators` WHERE `login`='$login'";

$rs = mysql_query($strSQL);

while($row = mysql_fetch_array($rs)) {

$r=$row['id'] ;

}

if ($r==0) {print"<script language='Javascript' type='text/javascript'>

<!--

alert ('You are not an ADMINISTRATOR!!');

function reload()

{location = \"index.php\"};

setTimeout('reload()', 0);

-->

</script>";

}

else {

$strSQL = "SELECT `password` FROM `administrators` WHERE `login`='$login'";

$rs = mysql_query($strSQL);

while($row = mysql_fetch_array($rs)) {

$t=$row['password'] ;

}

if (md5($password)==$t) {

$_SESSION['login'] = $login;

}

else {print"<script language='Javascript' type='text/javascript'>

<!--

alert ('Wrong pass!!');

-->

</script>";}

print"<script language='Javascript' type='text/javascript'>

<!--

function reload()

{location = \"index.php\"};

setTimeout('reload()', 0);

-->

</script>";

}

}

?>

exit.php

<?php

session_start();

unset($_SESSION['login']);

print"<script language='Javascript' type='text/javascript'>

<!--

function reload()

{location = \"index.php\"};

setTimeout('reload()', 0);

-->

</script>";

?>