Міністерство освіти і науки України
Природничо-гуманітарний коледж
ДВНЗ «Ужгородський національний університет»
Циклова комісія «Програмування та інформаційних технологій»
Реєстраційний номер ___________
Дата реєстрації ________________
Пояснювальна записка
до дипломного проекту молодшого спеціаліста
на тему
Веб-додаток для реєстрації аварійних ситуацій та обліку ремонтних робіт ЖРЕРу
Виконав: студент 3 курсу, групи КНз-31
напряму підготовки (спеціальності)
5.05010301 «Розробка програмного забезпечення»
Керівник: викл. Мокрянин Я. І.
Рецензент: кандидат технічних наук, доцент кафедри програмного забезпечення систем, декан факультету інформаційних технологій
Автор проекту: Маховскі Михайло Михайлович
(прізвище, ім’я, по батькові)
Тема дипломного проекту: Веб-додаток для реєстрації аварійних ситуацій та обліку ремонтних робіт ЖРЕРу
Науковий керівник: викл. Мокрянин Я. І.
(науковий ступінь, посада, прізвище, ім’я, по батькові)
Рецензент: кандидат технічних наук, доцент кафедри програмного забезпечення систем, декан факультету інформаційних технологій Повхан Ігор Федорович.
(науковий ступінь, посада, прізвище, ім’я, по батькові)
Дата захисту: "_____"_____________2014 року
Анотація
Дана робота містить теоретичну частину та практичні аспекти розробки програмного засобу під назвою «Веб-додаток для реєстрації аварійних ситуацій та обліку ремонтних робіт ЖРЕРу».
У теоретичній частині описано загальні відомості про використані технології.
У практичній частині описано архітектуру та роботу елементів виконаного проекту і наведено приклад інтерфейсу користувача.
Економічна частина містить різноманітні розрахунки, які показують кількість витрат, повну собівартість і гуртову ціну програмного продукту.
Розділ «Охорона праці», який містить правила техніки безпеки при роботі з ЕОМ, характеристику приміщення та план евакуації із приміщення, у якому відбувалась реалізація проекту.
Ключові слова: реєстрація аварійних ситуацій, облік ремонтних робіт ЖРЕРу, PHP, .Dat, CSS, HTML.
Обсяг пояснювальної записки: 76 сторінок.
Перелік додатків: функціональна схема роботи проекту, лістинг програми.
Project author: Mahovski Misha Mihajlovic
Project subject: Web application for registration of accidents and accounting repairs ZRERy
Supervisor: lect. Mokryanin Y. I.
Reviewer: Candidate of Technical Sciences, Associate Professor of Software Systems, Dean of the Faculty of Information Technology Povhan Igor Fedorovich.
Date: "_____"_____________2014
Annotation
This paper provides a theoretical and practical aspects of developing software called "Web application for registration of accidents and accounting repairs ZhRERu."
In the theoretical part describes general information about the use of technology.
In the practical part describes the architecture and operation of the project and element is an example of the user interface.
The economic part contains various calculations that show the amount of expenses, total cost and the wholesale price of the product.
Section "Health", which contains safety precautions when working with computers, characterization facilities and plan for the evacuation of the premises in which the project took place.
Keywords: registration of accidents, accounting repairs ZhRERu, PHP,. Dat, CSS, HTML.
The volume of Explanatory Note: 76 pages.
List of applications: functional circuit, listing.
Анотація 2
Annotation 3
Перелік умовних позначень, символів, одиниць і термінів 6
ВСТУП 7
1 ТЕОРЕТИЧНА ЧАСТИНА 8
1.1 Загальні відомості про використані технології 8
1.1.1 HTML 8
1.1.2 CSS 10
1.1.3 JavaScript 12
1.1.4 PHP 13
1.2 Огляд аналогів 15
1.3 Обґрунтування вибору методу розв’язку задачі. Особливості розробки 17
2 ПРАКТИЧНА ЧАСТИНА 18
2.1 Інформаційна структура моделі та алгоритму 18
2.2 Вхідні-вихідні дані окремих модулів 18
2.3 Інтерфейс користувача 19
2.4 Інтерфейс адміністратора 28
2.5 Тестування робочої системи 32
3 ЕКОНОМІЧНА ЧАСТИНА 35
3.1 Характеристика та призначення роботи 35
3.2 Витрати на створення продукту 36
3.3 Обчислення собівартості програмного продукту 40
3.4 Розрахунок гуртової ціни програмного продукту 40
3.5 Висновки економічної доцільності продукту 41
4 ОХОРОНА ПРАЦІ 42
4.1 Правила ТБ при експлуатації ЕОТ та ВДТ 42
4.2 Характеристика приміщення 45
4.3 Аналіз стану охорони праці 46
4.4 Заходи щодо поліпшення умов праці 49
Висновки 50
Перелік літературних джерел 51
Додаток 1. Функціональна схема роботи проекту 53
Додаток 2. Лістинг програми 54
Перелік умовних позначень, символів, одиниць і термінів
PHP — Personal Hypertext Processor, скриптова мова програмування, була створена для генерації HTML-сторінок на стороні веб-сервера.
HTML — мова розмітки гіпертексту (HyperText Markup Language) стандартна мова розмітки документів у всесвітній павутині.
CSS — Каскадні таблиці стилів (англ. Cascading Style Sheets або скорочено CSS) — спеціальна мова, що використовується для відображення сторінок, написаних мовами розмітки даних.
ПЕОМ — персональна електронно-обчислювальна машина.
ЕОМ — електронно-обчислювальна машина.
ТБ — техніка безпеки.
ЕОТ — електронно-обчислювальна техніка.
Url — Uniform Resource Locator.
Ремонтні роботи — процес зміни, відновлення, покращення будь-чого, доведення об'єкта до початкових характеристик.
Аварійна ситуація — стан потенційно небезпечного об'єкта, що характеризується порушенням меж та умов безпечної експлуатації, але не перейшов у аварію, і за якого всі несприятливі впливи джерел небезпеки на персонал, населення та довкілля утримуються у прийнятних межах за допомогою відповідних технічних засобів, передбачених проектом.
У сучасному інформаційному суспільстві велика кількість послуг забезпечується за допомогою як локальних комп’ютерних мереж, так і глобальних, себто за допомогою Інтернету. Надзвичайно динамічний розвиток останнього з кінця минулого століття дає чимало можливостей для спрощення та скорочення у часі тієї чи іншої дії.
Наприклад, сервіс інтернет-банкінгу «Приват24» від «Приватбанк» розпочав роботу в 2008 році, і з цього часу уявлення про банківські платежі в Україні кардинально змінилися. Тепер сидячи вдома за комп’ютером, який підключений до Інтернету, ви маєте можливість за декілька натискань мишки відправити гроші в будь-яку точку земної кулі або здійснити іншу валютно-фінансову операцію без черги чи додаткових очікувань, пов’язаних з людським фактором.
Подібних сервісів, які суттєво спрощують наше повсякденне життя, є багато, і один з них є предметом дослідження мого дипломного проекту, а саме реєстрація аварійних ситуацій та обліку ремонтних робіт у вашому будинку.
Уявіть собі, що ви можете за декілька хвилин, сидячи за комп’ютером, який підключений до Інтернету, подати заявку щодо певної аварійної ситуації у вашому будинку, яку оперативно опрацює адміністратор сайту та передасть працівникам ЖРЕРу чи іншій компетентній установі для усунення поломок, тощо.
Такий сервіс, як і у випадку з інтернет-банкінгом, допоможе вам заощадити час, зусилля, гроші та здоров’я, адже ви зможете обійтись без черг, суперечок, нагадувань та інших моментів, пов’язаних з типовим українським сервісом.
1.1 Загальні відомості про використані технології
1.1.1 HTML
HTML (англ. HyperText Markup Language — Мова розмітки гіпертексту) — стандартна мова розмітки веб-сторінок в Інтернеті. Більшість веб-сторінок створюються за допомогою мови HTML (або XHTML). Документ HTML оброблюється браузером та відтворюється на екрані у звичному для людини вигляді.
HTML є похідною мовою від SGML, успадкувавши від неї визначення типу документу та ідеологію структурної розмітки тексту.
HTML разом із каскадними таблицями стилів та вбудованими скриптами — це три основні технології побудови веб-сторінок.
HTML впроваджує засоби для:
- створення структурованого документу шляхом позначення структурного складу тексту: заголовки, абзаци, списки, таблиці, цитати та інше;
- отримання інформації із Всесвітньої мережі через гіперпосилання;
- створення інтерактивних форм;
- включення зображень, звуку, відео, та інших об'єктів до тексту.
1980 року фізик Тім Бернерс-Лі, який на той час був співробітником CERN, запропонував і прототипував систему ENQUIRE, яка мала полегшити сумісне користування документами для дослідників CERN.
1989 року Бернерс-Лі запропонував впровадити на базі Internet гіпертекстову систему документів.
Вже наприкінці 1990 року він розробив HTML і написав браузер та серверне програмне забезпечення для запропонованої системи. У цьому ж році Тім Бернерс-Лі та Роберт Кайо, інженер інформаційних систем CERN, подали спільну заявку на фінансування проекту, проте цей проект не був офіційно прийнятий CERN.
Наприкінці 1991 року Тім Бернерс-Лі опублікував в Інтернеті перший загальнодоступний опис мови розмітки HTML, відомий як документ «HTML теги» (HTML Tags). В ньому були описані 20 елементів первісної, відносно простої схеми розмітки HTML. За винятком тегу гіперпосилання, який був жорстко підпорядкований внутрішньому SGML-формату документації CERN. Тринадцять із тих елементів ще й досі існують у HTML4.
Бернерс-Лі розглядав HTML як похідну мову від SGML, і в середині 1993 року Спеціальна Комісія Інтернет-розробок (IETF) офіційно визначила її такою, опублікувавши першу специфікацію HTML: «Hypertext Markup Language (HTML)» Internet-проект, авторами якої були Тім Бернерс-Лі та Ден Конолі. Ця специфікація вже містила визначення типу документу, яке чітко зазначало граматику HTML.
Проект втратив силу через 6 місяців, проте був відомий за офіційне визнання в ньому, створеного для браузера NCSA Mosaic, тега додавання зображень, не розділяючи філософію IETF щодо заснування стандартів на успішних прототипах. Так само пізніше в 1993 році в конкуруючому Інтернет-проекті Дейва Раджетта «HTML+ (Hypertext Markup Format)», було запропоновано стандартизувати вже запроваджені браузерами сенсаційні на той час можливості, такі як таблиці та перші інтерактивні форми.
На початку 1994 року, після того, як проекти «HTML» і «HTML+» втратили свою силу, IETF створив Робочу групу HTML (HTML Working Group). 1995 року Робоча група HTML завершила роботу над документом «HTML 2.0» (опублікований як RFC із номером 1866), першою специфікацією, що мала бути використана як базовий стандарт для подальших вдосконалень HTML. Версія 2.0 окреслювала чіткі відмінності між новим виданням специфікації та попередніми проектами.
Подальші розробки під заступництвом IETF зіштовхнулися з конкуруючими інтересами. З 1996 року специфікації HTML затверджувались Консорціумом W3C, враховуючи доповнення до розмітки, що впроваджувалися компаніями-розробниками браузерів. Тим не менш, у 2000 році HTML стала міжнародним стандартом (ISO/IEC 15445:2000).
Остання специфікація HTML, опублікована W3C наприкінці 1999 року, має назву «HTML 4.01 Recommendation». Усі спірні питання та помилки цієї специфікації були офіційно визнані у списку друкарських помилок, опублікованому в 2001 році [1].
1.1.2 CSS
Каскадні таблиці стилів (англ. Cascading Style Sheets або скорочено CSS) — спеціальна мова, що використовується для відображення сторінок, написаних мовами розмітки даних. Найчастіше CSS використовують для візуальної презентації сторінок, написаних HTML та XHTML, але формат CSS може застосовуватися до інших видів XML-документів.
Специфікації CSS були створені та розвиваються Консорціумом Всесвітньої мережі.
CSS має різні рівні та профілі. Наступний рівень CSS створюється на основі попередніх, додаючи нову функціональність або розширюючи вже існуючі функції. Рівні позначаються як CSS1, CSS2 та CSS3. Профілі — сукупність правил CSS одного або більше рівнів створені для окремих типів пристроїв або інтерфейсів. Наприклад, існують профілі CSS для принтерів, мобільних пристроїв тощо.
CSS (каскадна або блочна верстка) прийшла на заміну табличній верстці веб-сторінок. Головна перевага блочної верстки — розділення змісту сторінки (даних) та їх візуальної презентації.
CSS використовується авторами та відвідувачами веб-сторінок для того, щоб визначити кольори, шрифти, верстку та інші аспекти вигляду сторінки. Одна з головних переваг — можливість розділити зміст сторінки (або контент, наповнення, зазвичай HTML, XML або подібна мова розмітки) від вигляду документу (що описується в CSS).
Таке розділення може покращити сприйняття та доступність контенту, забезпечити більшу гнучкість та контроль за відображенням контенту в різних умовах, зробити контент більш структурованим та простим, прибрати повтори та ін. CSS також дозволяє адаптувати контент до різних умов відображення (на екрані монітора, мобільного пристрою (КПК), у роздрукованому вигляді, на екрані телевізора, пристроях з підтримкою шрифту Брайля або голосових браузерах та ін.)
Один і той самий HTML або XML документ може бути відображений по-різному в залежності від використаного CSS. Стилі для відображення сторінки можуть бути:
Стилі автора (інформація надана автором сторінки):
- зовнішні таблиці стилів (англ. stylesheet), частіше за все окремий файл або файли .css;
- внутрішні таблиці стилів, включені як частина документу або блоку;
- стилі для окремого елементу.
Стилі користувача
- локальний .css-файл, вказаний користувачем для використання на сторінках і вказаний в налаштуваннях браузера (наприклад Opera);
Стилі переглядача (браузера)
- стандартний стиль переглядача, наприклад стандартні стилі для елементів, визначені браузером, використовуються коли немає інформації про стиль елемента або вона неповна.
Стандарт CSS визначає порядок та діапазон застосування стилів, те, в якій послідовності і для яких елементів застосовуються стилі. Таким чином, використовується принцип каскадності, коли для елементів вказується лише та інформація про стилі, що змінилася або не визначена загальнішими стилями [2].
1.1.3 JavaScript
JavaScript — назва реалізації стандарту мови програмування ECMAScript компанії Netscape, базується на принципах прототипного програмування. Найпоширеніше і найвідоміше застосування мови — написання сценаріїв для веб-сторінок, але, також, використовується для впровадження сценаріїв керування об’єктами вбудованими в інші програми.
Незважаючи на схожість назв, JavaScript та мова програмування Java мають дуже мало спільного. Права на назву Java належать компанії Sun Microsystems.
JavaScript розроблений у компанії Netscape. На сьогоднішній день підтримується більшістю браузерів. Текст програми включається безпосередньо в HTML-документ і інтерпретується самим браузером (точніше, вбудованим у браузер рушієм JavaScript). Застосовується в основному для часткової автоматизації обробки і маніпуляції даними, які використовує сторінка.
Станом на 2006 рік, останній стандарт мови — JavaScript 1.7. Якщо спрощено, то ECMA-262 є стандартизованим варіантом мови JavaScript. Стандартом ECMA-357 визначено E4X, розширення мови для роботи з XML.
JavaScript має низку властивостей об’єктно-орієнтованої мови, але завдяки концепції прототипів підтримка об’єктів в ній відрізняється від традиційних мов ООП. Крім того, JavaScript має ряд властивостей, властивих функціональним мовам, — функції як об’єкти першого рівня, об’єкти як списки, каррінг (currying), анонімні функції, замикання (closures) — що додає мові додаткову гнучкість.
JavaScript має C-подібний синтаксис, але в порівнянні з мовою Сі має такі корінні відмінності:
- об’єкти, з можливістю інтроспекції і динамічної зміни типу через механізм прототипів;
- функції як об’єкти першого класу;
- обробка винятків;
- автоматичне приведення типів;
- автоматичне прибирання сміття;
- анонімні функції.
JavaScript містить декілька вбудованих об’єктів: Global, Object, Error, Function, Array, String, Boolean, Number, Math, Date, RegExp. Крім того, JavaScript містить набір вбудованих операцій, які, строго кажучи, не обов’язково є функціями або методами, а також набір вбудованих операторів, що управляють логікою виконання програм. Синтаксис JavaScript в основному відповідає синтаксису мови Java (тобто, зрештою, успадкований від C), але спрощений порівняно з ним, щоб зробити мову сценаріїв легкою для вивчення. Так, приміром, декларація змінної не містить її типу, властивості також не мають типів, а декларація функції може стояти в тексті програми після неї [3].
PHP (англ. PHP: Hypertext Preprocessor — PHP: гіпертекстовий препроцесор), попередня назва: Personal Home Page Tools — скриптова мова програмування, була створена для генерації HTML-сторінок на стороні веб-сервера. PHP є однією з найпоширеніших мов, що використовуються у сфері веб-розробок (разом із Java, .NET, Perl, Python, Ruby). PHP підтримується переважною більшістю хостинг-провайдерів. PHP — проект відкритого програмного забезпечення.
PHP інтерпретується веб-сервером в HTML-код, який передається на сторону клієнта.
На відміну від скриптової мови JavaScript, користувач не бачить PHP-коду, бо браузер отримує готовий html-код. Це є перевага з точки зору безпеки, але погіршує інтерактивність сторінок. Але ніщо не забороняє використовувати РНР для генерування і JavaScript-кодів які виконуються вже на стороні клієнта.
PHP — мова, яка може бути вбудована безпосередньо в html-код сторінок, які, в свою чергу коректно будуть оброблені PHP -інтерпретатором. Механізм РНР просто починає виконувати код після першої екрануючої послідовності (<?) і продовжує виконання до того моменту, коли він зустріне парну екрануючу послідовність (?>).
Велика різноманітність функцій PHP дають можливість уникнути написання багаторядкових призначених для користувача функцій на C або Pascal.
У PHP вбудовані бібліотеки для роботи з MySQL, PostgreSQL, mSQL, Oracle, dbm, Hyperware, Informix, InterBase, Sybase.
через стандарт відкритого інтерфейсу зв'язку з базами даних (Open Database Connectivity Standard — ODBC) можна підключатися до всіх баз даних, до яких існує драйвер.
Мова РНР здаватиметься знайомою програмістам, що працюють в різних областях. Багато конструкцій мови запозичені з С, Perl. Код РНР дуже схожий на той, який зустрічається в типових програмах на С або Pascal. Це помітно знижує початкові зусилля при вивченні РНР. PHP — мова, що поєднує переваги Perl і С і спеціально спрямована на роботу в Інтернеті, мова з універсальним і зрозумілим синтаксисом. І хоча PHP є досить молодою мовою, вона здобула таку популярність серед web-програмістів, що в наш час є мало не найпопулярнішою мовою для створення веб-застосунків (скриптів).
Стратегія Open Source, і розповсюдження початкових текстів програм в масах, безсумнівно справили благотворний вплив на багато проектів, в першу чергу — Linux хоч і успіх проекту Apache сильно підкріпив позиції прихильників Open Source. Сказане відноситься і до історії створення РНР, оскільки підтримка користувачів зі всього світу виявилася дуже важливим чинником в розвитку проекту РНР.
Ухвалення стратегії Open Source і безплатне розповсюдження початкових текстів РНР надало неоціниму послугу користувачам. Додатково, користувачі РНР в усьому світі є свого роду колективною службою підтримки, і в популярних електронних конференціях можна знайти відповіді навіть на найскладніші питання.
Ефективність є дуже важливим чинником при програмуванні для середовищ розрахованих на багато користувачів, до яких належить і web.
Важливою перевагою PHP є те, що ця мова належить до інтерпретованих. Це дозволяє обробляти сценарії з достатньо високою швидкістю. За деякими оцінками, більшість PHP-сценаріїв (особливо не дуже великих розмірів) обробляються швидше за аналогічні їм програми, написані на Perl. Проте, щоб не робили розробники PHP, виконувані файли, отримані за допомогою компіляції, працюватимуть значно швидше — в десятки, а іноді і в сотні разів. Але продуктивність PHP цілком достатня для створення цілком серйозних веб-застосунків [4].
1.2 Огляд аналогів
Пошуки аналогового сервісу в мережі Інтернеті закінчилися невдачею – нічого подібного досі нема. Навіть у великих містах не було знайдено подібних сервісів, тому програмний продукт є унікальним.
Для того, щоб зрозуміти, яким шляхом продовжувати дослідження, в рамках написання дипломної роботи було знайдено відповідні матеріали, які вказують на те, як правильно реєструвати аварійну ситуацію в ЖРЕРі.
Як виявилося, у журналі реєстрації аварійної ситуації необхідно вказати:
- Дата і час настання аварії;
- Категорія і характер аварії;
- Причини і стислий опис обставин аварії;
- Економічні втрати від аварії (тис. гривень) ;
- Тривалість простою об'єкта від початку аварії до введення в експлуатацію, годин (діб) ;
- Заходи, запропоновані комісією з розслідування причин аварії;
- Відмітка про виконання заходів.
На цьому етапі стало зрозуміло, які текстові форми для заповнення необхідно зробити. Також, для зручності було зроблені категорії для сортування аварійних ситуацій. Так як аналогів немає, категорії для сортування були взяті з диспетчеризації.
Диспетчеризація — сукупність технічних засобів і програмних продуктів, за допомогою яких здійснюється централізація контролю та діагностики стану інженерних систем, управління ними та невідкладне прийняття адекватних заходів у разі аварійних ситуацій. Постійна реєстрація та фіксація всіх подій в системі дає можливість встановити справжню причину аварії, безпомилково визначити осіб, винних в аварійній ситуації, а також запобігти її повторенню в майбутньому.
У загальному випадку, подібна система включає в себе наступні підсистеми:
- Кондиціонування і вентиляція повітря;
- Теплопостачання (котельні установки або індивідуальні теплові пункти (ІТП));
- Водопостачання, каналізації, водопідготовки, дренажу (різні станції управління насосами);
- Пожежна та охоронна сигналізації;
- Електропостачання та електроосвітлення (дизель-генераторна установка, трансформаторна підстанція, розподільні пристрої, електрообігрів трубопроводів, лотків водостоку і воронок, потужні джерела безперебійного живлення);
- Ліфтове обладнання;
- Можливі додаткові підсистеми.
Тому для найменування категорій було використано забов’язанення диспетчеризації.
1.4 Обґрунтування вибору методу розв’язку задачі. Особливості розробки
Посилаючись на тему дипломного проекту, основним завданням було створити власний сервіс для реєстрації аварійних ситуацій і обліку ремонтних робіт ЖРЕРу, за допомогою якого користувачі зможуть реєструвати та подавати заяву аварійної ситуації в своєму домі, а також дізнаватися про її розгляд.
Даний проект написаний із використанням таких технологій як: HTML, CSS, JavaScript, PHP, а також із використанням баз даних DAT файлів.
У даному програмному продукті дотримано усі звичні стандарти, які зазвичай використовуються у веб-продуктах. Також великою перевагою сервісу є легке додавання нового модулю, який буде виконувати свій певний функціонал та доповнювати сервіс.
Стосовно обраних технологій, то одним словом, вони найбільш підходять для виконання даного проекту, так як з самого початку було задумало виконати даний сервіс як онлайн для того, щоб він був доступний людям по адресі, а також не змушував користувача завантажувати його собі на комп’ютер та був швидкодоступним.
2 ПРАКТИЧНА ЧАСТИНА
2.1 Інформаційна структура моделі та алгоритму
Реалізацію дипломного проекту можна поділити на декілька частин, так як сам проект містить графічну та функціональну частину.
Графічна частина дуже просто поєднується з всією функціональною частиною та реалізована як звичайний каркас, який обгортає кожен модуль і надає йому загального виду, який був наперед виконаний та надається модулю практично автоматично. Подібна річ налаштовується дуже просто та швидко.
Стосовно функціональної частини, вона реалізовується окремо, а саме можна написати якийсь скрипт, який виконує певні свої функції, а далі просто під’єднати до самої системи.
2.2 Вхідні-вихідні дані окремих модулів
Для того, щоб переглядати поточні аварійні ситуації не обов’язково реєструватися. Але для того, щоби подати заявку, необхідно зареєструватися. Для реєстрації користувачеві потрібно ввести певні дані: логін, пароль, e-mail, ім’я, телефон, і після реєстрації користувач може реєструвати аварійну ситуацію в своєму будинку.
Якщо розібратись у роботі сервісу, то можна помітити що він використовує вхідні та вихідні дані.
Вхідними даними є:
Усі дані, які користувач повинен ввести у форми, наступні:
- логін, пароль, e-mail, ім’я, телефон, організація, коротко про себе;
- назва, причини і стислий опис обставин аварії;
- дата і час настання аварії;
- відмітка про виконання заходів
Вихідні дані:
- усі дані, які виводяться користувачам на дисплей.
Рисунок 2.1 Головна сторінка
На рисунку 2.1 можна побачити головну сторінку веб-сайту, що має світлий фон, на якому спочатку не можна побачити кнопку для реєстрації заявки але інші розділи будуть доступні. Стосовно того, що не усі сервіси можуть бути доступні для вільного користування, все що потрібно зробити для цього – лише зареєструватись. Реєстрація аккаунта займе не більше хвилини, потрібно ввести лише ім’я, логін, пароль і e-mail, також за бажанням ввести номер мобільного телефону, після реєстрації користувач матиме змогу додавати заявки на аварійні ситуації.
На головній сторінці зображено також блок з категоріями аварійних ситуацій, останні 10 зареєстрованих аварійних ситуацій, та кнопки: «головна сторінка», «зареєструвати аварійну ситуацію», «правила», «пошук», «вхід», «реєстрація».
Рисунок 2.2 Форма реєстрації користувача
Далі користувач повинен просто авторизуватись. Форма авторизації на сайті наведена на русинку 2.2 і містить такі форми для заповнення: ім.’я та пароль, також ви зможете відновити ваш загублений пароль завдяки формі «забули пароль?», для того щоби відновити пароль достатньо вписати ваш e-mail, який ви вказали при реєстрації та натиснути кнопку «отримати пароль», і через декілька секунд на ваш e-mail прийдуть дані для авторизації на сайті.
Рисунок 2.3 Форма авторизації на сайті
Рисунок 2.4 Головна сторінка, авторизований користувач
На рисунку 2.4 можна побачити головну кнопку сайту «Зареєструвати аварійну ситуацію», яка дозволяє додавати аварійну ситуацію на сайт, після цього користувач чекає коли адміністратор перегляне його заявку і відповість йому.
Рисунок 2.5 Форма реєстрації аварійної ситуації
На рисунку 2.5 наведена форма реєстрації аварійної ситуації, користувач повинен спочатку вибрати категорію аварії, назвати свою заявку, описати стисло причини та обставини аварії, і вказати дату і час настання аварії, всі наступні колонки не обов’язкові для заповнення. Також вказати відмітку і термін розміщення заявки (максимально 90 днів), після закінчення терміну розміщення, заявка автоматично видаляється, це зроблено для оптимізації сайту.
Рисунок 2.6 Форма перегляду заяви аварійної ситуації
На рисунку 2.6 показано як виглядає правильно заповнена форма заявки. Після правильного заповнення форми, користувач повинен чекати відповідь від адміністратора.
Рисунок 2.7 Форма перегляду заяви аварійної ситуації
На рисунку 2.7 зображено відредаговану заявку адміністратором, можно помітити, що заявка успішно переглянута та аварійну ситуацію виправлено, що підтверджує синя відмітка «виконано», також адміністратор вказав необхідні дані для обліку: дата і час настання аварії, економічні втрати від аварії, тривалість простою об’єкта від початку аварії до введення в експлуатацію і заходи запропоновані комісією з розслідування причин аварії.
Рисунок 2.8 Форма перегляду заяви аварійної ситуації
На рисунку 2.8 зображено відкритий розділ категорії «водопостачання, каналізації, водопідготовки дренажу». Якщо в розділі більше семи заявок, то створюється нова сторінка. Також при перегляді розділу можно, побачити, скільки всього заявок є в цьому розділі, скільки з них позначені з міткою «виконано» та «не виконано», також користувачеві пропонується додати заявку в цей розділ.
Рисунок 2.9 Реєстраційна форма
На рисунку 2.9 зображено форму, яка викликається кнопкою «ваш профіль» для редагування профайлу. Користувач може в довільному порядку змінювати свою інформацію, крім логіна.
Рисунок 2.10 Форма перегляду розділу правила
Який сайт без правил? На рисунку 2.10 зображено правила поведінки на сайті, що дозволено на сайті, та що заборонено.
На сайті дозволено:
- додавати заяву грамотно і без помилок;
- додавати заяви на термін від 7 до 90 днів.
На сайті заборонено:
- додавати одну і ту саму заяву в різні розділи;
- додавати заяву яка не відповідає тематиці розділу;
- додавати заяву без вказівки ваших контактних даних (емайл, телефон) ;
- додавати заяву яка містить ненормативну лексику;
- додавати заяву яка містить рекламних характер.
2.4 Інтерфейс адміністратора
Адмін панель – це серце кожного сайту. На рисунку 2.11 зображено адмін панель сайта.
Рисунок 2.11 Адмін панель
В адмін панелі є багато функцій, зверху розмістилися кнопки навігації, по-центру розмістився блок настройки категорій і додання нової категорії, знизу розмістилися підказки по редагуванню категорій.
В навігації є декілька цікавих функцій, наприклад «перерахувати лічильники», ця функція перераховує лічильники в категоріях.
Кнопка «Параметри» – настройки сайту
Кнопка «Користувачі» – редагування та перегляд зареєстрованих користувачів
Рисунок 2.12 Додати категорію
Для того щоби додати нову категорію, необхідно ввести назву категорії і нажати кнопку «додати» в адмін панелі.
Рисунок 2.13 Список і настройка категорій
Операції для категорій:
- Вв. - перемістити ВВЕРХ;
- Нз. - перемістити ВНИЗ;
- .Р. - редагувати;
- .Х. – видалити.
Якщо ви хочете перемістити якусь категорію вверх, то необхідно натиснути кнопку «Вв.».
Якщо ви хочете перемістити якусь категорію вниз, то необхідно натиснути кнопку «Нз.».
Якщо ви хочете змініти ім’я категорії, то необхідно натиснути кнопку «.Р.».
Якщо ви хочете видалити категорію з БД, то необхідно натиснути кнопку «.Х.»
Рисунок 2.14 Перерахувати лічильники
Для того, щоби перерахувати лічильники категорій необхідно натиснути кнопку «перерахувати лічильники», після цього ви зможете переглядати успішне завершення перерахування лічильника.
Рисунок 2.15 Параметри сайту
Для точної настройки сайту ви зможете скористатись розділом «параметри сайту», цей розділ має багато параметрів для редагування сайту.
Рисунок 2.16 Перегляд та редугування користувачів
В розділі користувачі адміністратор має право переглядати ІP-адресу користувача, змінювати його данні та видаляти користувача з БД.
Рисунок 2.17 Перегляд розділа та редагування заявки
В цьому розділі адміністратор може переглядати список заявок, редагувати іх за допомогою кнопки «.Р.» та видаляти «.Х.».
Рисунок 2.18 Форма редагування заявки
Користувач додає заявку на реєстрацію аварійної ситуації в своєму домі, адміністратор через певний проміжок часу переглядає через адмін панель нові заявки, передає цю інформацію працівникам і після усунення аварійної ситуації заповняє необхідну форму для обліку та змінює мітку заявки на синій цвіт «Виконано», також додає коментарій, що аварійну ситуацію усунено.
2.5 Тестування робочої системи
Кожна частина сервісу була повністю протестована на вміст помилок:
- переключення між сторінками;
- авторизація, реєстрація;
- відкриття та перегляду нових заявок;
- ввід правильних та неправильних посилань;
Рисунок 2.19 Не вірний логін і пароль
Рисунок 2.20 Користувача з таким e-mail не здайдено
Рисунок 2.21 Ваші дані успішно змінено
Рисунок 2.21 Не вірний номер заяви в URL
Усі недоліки, які були помічені під час тестування, були по можливості виправлені. Звичайно ж кожен проект може містити безліч помилок, які згодом будуть виправлені, а сам проект більш вдосконалений.
3 ЕКОНОМІЧНА ЧАСТИНА
3.1 Характеристика та призначення роботи
Для даного дипломного проекту було реалізовано інтернет-сервіс, за допомогою якого кожен бажаючий буде мати можливість зареєструвати аварійну ситуації в своєму будинку та оцінити роботу працівників ЖРЕРу. І саме головне, ця можливість надається будь-якому користувачеві безкоштовно за допомогою мережі Інтернет.
Основою роботи сервісу є постійне оновлення інформації та забезпечення користувача лише актуальною її частиною, а також представлення затребуваних послуг.
Основним завданням ресурсу, це постійне оновлення, та забезпечення користувача лише актуальною інформацією.
Інернет-сервіс допоможе вам заощадити час, зусилля, гроші та здоров’я, адже ви зможете обійтись без черг, суперечок, нагадувань та інших моментів, пов’язаних з типовим українським сервісом.
3.2 Витрати на створення програмного продукту
Розрахунок вартості витрат на матеріали.
Розрахунки щодо допоміжних матеріалів знаходяться в таблиці 3.1.
Таблиця 3.1 - Допоміжні матеріали
Найменування матеріалу |
Виробник і марка |
Одиниця виміру |
Норма затрат |
Ціна за одиницю, грн |
Вартість, грн |
Ручка кулькова |
Piano PT-175 |
шт. |
1 |
3 |
3 |
Файл А4 |
Economix E31107 |
шт. |
10 |
1.5 |
15 |
Чорнила |
Lexmark 10N0016 Black |
шт. |
1 |
5 |
35 |
Лазерний диск DVD-R |
HP DVD+R |
шт. |
4 |
3 |
12 |
Офісний папір формату А4 |
Maestro Standart А4 |
пач. |
1 |
33 |
33 |
Всього |
98 |
Загальна вартість допоміжних матеріалів складає Звм = 98 грн.
Розрахунок витрат на оплату праці програміста.
Оплату праці розраховуємо за формулою (3.1):
, |
(3.1) |
де t - трудомісткість створення програмного продукту, год.;
ТЗПГОД - середня оплата програміста за годину праці, грн./год.;
Дані про трудомісткість операцій, виконуваних в процесі створення програмного продукту, приведені в таблиці 3.2.
Таблиця 3.2 - Трудомісткість операцій
Найменування операції |
Витрати, год |
Постановка задачі |
10 |
Підготовка та опис завдання |
10 |
Розробка алгоритму |
15 |
Реалізація програмних модулів |
38 |
Реалізація додаткового функціоналу |
15 |
Відлагодження |
10 |
Тестування |
25 |
Оформлення документації, інструкції користувача |
20 |
Всього |
143 |
Тарифна ставка за годину програміста 16 розряду становить 13.6 грн/год, згідно з єдиною тарифною сіткою в 2013 році відповідно до постанови Кабінету Міністрів України від 27.03.2013 № 197 [8]. Виходячи з цього, витрати на оплату праці програміста згідно з вищезазначеною формулою (3.1) дорівнюватимуть:
= 143*13.5 = 1930.5 грн.
Виконую обчислення нарахувань на заробітну плату, які складають 36.67%
Знарах= * 0.3667= 1930.5 * 0.3667 = 707.91 грн,
Тоді загальні витрати на оплату праці складають:
ЗПзаг= + Знарах= 1930.5 + 707.91 = 2638.41 грн.
Розрахунок річного фонду часу роботи ПЕОМ.
Розрахунки проводимо за формулою (3.2):
ТЕОМ = ТГОД * (ТДН – ТВИХ) – ТТИЖ * ТПРОФ , |
(3.2) |
де TГОД - кількість робочих годин, год./добу;
TГОД = 8 год./добу;
ТДН - загальна кількість днів у році, діб;
ТДН = 365 діб;
ТВИХ - кількість святкових і вихідних днів, діб;
ТВИХ = 114 діб;
ТТИЖ - число робочих тижнів у році, тижнів;
ТТИЖ = 251/7 = 35;
ТПРОФ - час профілактики по кожному тижню, год./тиждень.
ТПРОФ = 1 год./тиждень.
Таким чином, річний фонд часу роботи ПЕОМ складає:
ТЕОМ = 8 * (365 - 114) – 35 * 1 = 1973 год.
Розрахунок балансової вартості ПЕОМ.
Розраховуємо за формулою (3.3):
СБАЛ = СРИН * ЗУСТ , |
(3.3) |
де СРИН - ринкова вартість ПЕОМ, грн.;
ЗУСТ - витрати на доставку й встановлення ПЕОМ, грн.
Витрати на доставку й встановлення ПЕОМ складають 10% від ринкової вартості ПЕОМ. Покладаю ринкову вартість ПЕОМ рівною СРИН = 3452 грн, тоді отримуємо балансову вартість ПЕОМ:
С БАЛ = 3452 * 1.1 = 3797.2 грн.
Розрахунок амортизаційних відрахувань.
Розрахунок проводимо за формулою (3.4):
ЗАМ = СБАЛ * НАМ , |
(3.4) |
де СБАЛ - балансова вартість ПЕОМ, грн.;
НАМ - норма амортизації, %.
НАМ = 35 %.
Таким чином річні амортизаційні відрахування складають:
ЗАМ = СБАЛ * 0.35 = 3797.2 * 0.35 = 1329.02 грн.
Розрахунок вартості електроенергії.
Визначаємо за формулою (3.5):
ЗЕЛ = PПЕОМ * ТПЕОМ * СЕЛ * А , |
(3.5) |
де PПЕОМ - сумарна потужність ПЕОМ, кВт;
ТПЕОМ - річний час роботи ПЕОМ, год.;
СЕЛ - вартість 1 кВт * год. електроенергії, грн.;
для бюджетних організацій
СЕЛ = 0.36 грн.;
Для підприємств не бюджетної сфери
Сел = 1.22 грн;
А - коефіцієнт інтенсивного використання потужності ПЕОМ.
Сумарна потужність ПЕОМ PПЕОМ = 0.06 кВт. Приймаємо коефіцієнт інтенсивного використання потужності ПЕОМ рівним А = 0.09 і обчислюємо вартість електроенергії, споживаної за 143 год:
ЗЕЛ = 0.06 * 143 * 1.22 * 0.09 = 9.42 грн.
Розрахунок Інших витрат на експлуатацію ПЕОМ.
Інші витрати (в тому числі й витрати на поточний та профілактичний ремонт) складають 10 % від балансової вартості ПЕОМ і дорівнюють:
ЗПР = СБАЛ * 0.1 = 3797.2 * 0.1 = 417.69 грн.
Розрахунок загальних витрат на експлуатацію ПЕОМ.
Загальні витрати визначаємо за формулою (3.6):
ЗПЕОМ = ЗЗП + ЗАМ + ЗЕЛ + ЗПР , |
(3.6) |
Де ЗЗАГ - витрати на заробітну плату, грн;
ЗАМ - амортизаційні відрахування, грн;
ЗЕЛ - витрати на електроенергію, грн;
ЗПР - інші витрати на експлуатацію ПЕОМ, грн.;
тоді:
ЗПЕОМ = 2638.41 + 1329.02 + 9.42 + 417.69= 4394.54 грн.
Розрахунок вартості машинної години.
Вартість машинної години визначаємо за формулою (3.7):
СГОД = ЗПЕОМ / ТПЕОМ , |
(3.7) |
де ЗПЕОМ - повні витрати на експлуатацію ПЕОМ, грн.;
ТПЕОМ - час роботи ПЕОМ, год.
СГОД = 4394.54 / 143 = 30.73 грн./год.
Витрати на оплату машинного часу при відлагодженні програми.
Витрати на оплату машинного часу при відлагодженні програмного продукту визначаємо за формулою (3.8):
= СГОД * ТВ , |
(3.8) |
Де СГОД - вартість машинної години, грн./год.;
ТВ - фактичний час відлагодження програмного продукту на ПЕОМ, год.
З таблиці 3.2 видно, що ТВ = 20 год., тоді:
= 30.73 * 10 = 307.3 грн.
Витрати на освітлення, опалення та комунальні послуги.
Витрати, що стосуються освітлення та опалення становлять 30% від загальної витрати на оплату праці. Загальні витрати визначаємо згідно формули (3.9):
ЗЗАГ = * 30%/100% , |
(3.9) |
де - витрати на оплату праці програміста, грн.
ЗЗАГ = 2638.41* 0.3 = 791.52 грн.
3.3. Обчислення собівартості програмного продукту.
Обчислення за статтями витрат виконані в таблиці (3.3), в результаті чого буде обрахована повна собівартість програмного продукту.
Таблиця 3.3 - Собівартість програмного продукту за статтями витрат
Статті витрат |
Сума, грн. |
Сировина та матеріали |
98 |
Основна заробітна плата |
1930.5 |
Нарахування на зарплату |
707.91 |
Витрати на оплату машинного часу |
307.3 |
Загальновиробничі витрати |
791.52 |
Повна собівартість |
3835.23 |
3.4 Розрахунок гуртової ціни програмного продукту.
Визначаємо за формулою (3.10):
ЦРЕАЛ = СПОВ * (1 + РН / 100%) , |
(3.10) |
де СПОВ - повна собівартість виробу, грн.;
РН - нормативний рівень рентабельності, 20%.
ЦРЕАЛ = 3835.23 * 1.2 = 4602.27 грн.
3.5 Висновки економічної доцільності проекту
Реалізація веб-додатку для реєстрації аварійних ситуацій та обліку ремонтних робіт ЖРЕРу засобами мови PHP дозволяє додавати будь-яку заяву легко і швидко. Кожна частина сервісу була повністю протестована на вміст помилок:
- переключення між сторінками;
- авторизація, реєстрація;
- відкриття та перегляду нових заявок;
- ввід правильних та неправильних посилань;
Усі недоліки, які були помічені під час тестування, були по можливості виправлені. Звичайно ж кожен проект може містити безліч помилок, які згодом будуть виправлені, а сам проект більш вдосконалений.
За економічними підрахунками повна собівартість проекту складає 4602.27 грн., а гуртова ціна програмного продукту 3835.23 грн.
4 ОХОРОНА ПРАЦІ
4.1 Правила ТБ при експлуатації ЕОТ та ВДТ
- Вимоги стосовно освітлення, оптимальних умов мікроклімату, ергономічних характеристик основних елементів робочого місця, рівнів шуму, вібрації, електромагнітного, ультрафіолетового та інфрачервоного випромінювання та електростатичного поля викладено у ДСанПіН 3.3.2-007-98 (v0007282-98).
- Виробничі об'єкти повинні відповідати проектній документації, затвердженій в установленому порядку.
- Під час експлуатації будівель та споруд, де розміщені робочі місця операторів, повинні забезпечуватись вимоги:
а) Положення про безпечну та надійну експлуатацію виробничих будівель і споруд, затвердженого наказом Державного комітету будівництва, архітектури та житлової політики України і Держнаглядохоронпраці України від 27.11.97 N 32/288 ( z0423-98, z0424-98 ), зареєстрованого в Міністерстві юстиції України 06.07.98 за N 424/2864 (НПАОП 45.2-4.01-98); [20]
б) Правил обстежень, оцінки технічного стану та паспортизації виробничих будівель і споруд, затверджених наказом Державного комітету будівництва, архітектури та житлової політики України і Держнаглядохоронпраці України від 27.11.97 N 32/288 (z0423-98), зареєстрованих у Міністерстві юстиції України 06.07.98 за N 423/2863 (НПАОП 45.2-1.01-98).
- Електробезпека будівель та приміщень, де розміщені робочі місця операторів, повинна відповідати вимогам Правил безпечної експлуатації електроустановок споживачів, затверджених наказом Держнаглядохоронпраці від 09.01.98 N 4 (z0093-98), зареєстрованих у Міністерстві юстиції України 10.02.98 за N 93/2533 (далі - НПАОП 40.1-1.21-98).
- Вимоги щодо пожежної безпеки будівель та приміщень, де розміщені робочі місця, обладнані ЕОМ з ВДТ і ПП, повинні відповідати вимогам, встановленим:
а) Державними будівельними нормами "Пожежна безпека об'єктів будівництва", затвердженими наказом Держбуду України від 03.12.2002 N 88 ( va088509-02 ) (далі - ДБН В.1.1.7-2002);
б) ГОСТ 12.1.004-91 "ССБТ. Пожарная безопасность. Общие требования безопасности";
в) Правилами пожежної безпеки України, затвердженими наказом Міністерства України з питань надзвичайних ситуацій від 19.10.2004 N 126 ( z1410-04 ), зареєстрованими в Міністерстві юстиції України 04.11.2004 за N 1410/10009 (далі - НАПБ А.01.001-2004).
- Будівлі та приміщення, де розміщені робочі місця операторів, повинні відповідати вимогам нормативно-технічної та експлуатаційної документації виробника ЕОМ з ВДТ і ПП, чинних санітарних норм, санітарних норм і правил, вказаних у ДСанПіН 3.3.2-007-98 (v0007282-98), та цих Правил.
- Для всіх будівель і приміщень, де знаходяться робочі місця операторів ЕОМ з ВДТ і ПП, повинно бути визначено клас зони згідно з НПАОП 40.1-1.01-97 (z0011-98). Відповідне позначення повинно бути нанесено на вхідних дверях кожного приміщення згідно з ГОСТ 12.4.026-76 "ССБТ. Цвета сигнальные и знаки безопасности".
- Будівлі та приміщення, де розміщені робочі місця операторів, мають бути не нижче II ступеня вогнестійкості згідно з ДБН В.1.1.7-2002.
- Неприпустимим є розташування приміщень категорій А і Б, а також виробництв з мокрими технологічними процесами поряд з приміщеннями, де розташовуються ЕОМ з ВДТ і ПП, а також над ними чи під ними.
- У приміщеннях з джерелами шкідливих виробничих факторів робочі місця операторів мають розміщуватися в ізольованих кабінах, які обладнані повітрообміном.
- Згідно з ДСанПіН 3.3.2-007-98 (v0007282-98) не дозволяється розташування приміщень з робочими місцями операторів у підвалах і цокольних поверхах.
- Площу та об'єм для одного робочого місця оператора визначають згідно з вимогами ДСанПіН 3.3.2-007-98 ( v0007282-98 ). Площа має бути не менше 6,0 кв.м, об'єм - не менше 20,0 куб.м.
- Заземлені конструкції, що знаходяться в приміщеннях, де розміщені робочі місця операторів (батареї опалення, водопровідні труби, кабелі із заземленим відкритим екраном), мають бути надійно захищені діелектричними щитками або сітками з метою недопущення потрапляння працівника під напругу.
- Приміщення, де розміщені робочі місця операторів, крім приміщень, у яких розміщені робочі місця операторів великих ЕОМ загального призначення (сервер), мають бути оснащені системою автоматичної пожежної сигналізації відповідно до вимог:
а) Переліку однотипних за призначенням об'єктів, які підлягають обладнанню автоматичними установками пожежогасіння та пожежної сигналізації, затвердженого наказом Міністерства України з питань надзвичайних ситуацій та у справах захисту населення від наслідків Чорнобильської катастрофи від 22.08.2005 N 161 (z0990-05), зареєстрованого в Міністерстві юстиції України 05.09.2005 за N 990/11270 (далі - НАПБ Б.06.004-2005);
б) Державних будівельних норм "Інженерне обладнання будинків і споруд. Пожежна автоматика будинків і споруд", затверджених наказом Держбуду України від 28.10.98 N 247 (далі - ДБН В.2.5-13- 98), з димовими пожежними сповіщувачами та переносними вуглекислотними вогнегасниками. В інших приміщеннях допускається встановлювати теплові пожежні сповіщувачі.
- Приміщення, де розміщені робочі місця операторів, крім приміщень, у яких розміщені робочі місця операторів великих ЕОМ загального призначення (сервер), мають бути оснащені вогнегасниками, кількість яких визначається згідно з вимогами Типових норм належності вогнегасників, затверджених наказом Міністерства України з питань надзвичайних ситуацій та у справах захисту населення від наслідків Чорнобильської катастрофи від 02.04.2004 N 151 (z0554-04), зареєстрованих у Міністерстві юстиції України 29.04.2004 за N 554/9153 (далі - НАПБ Б.03.001-2004), і з урахуванням граничнодопустимих концентрацій вогнегасної рідини відповідно до вимог НАПБ А.01.001-2004 (z1410-04).
- Приміщення, в яких розміщуються робочі місця операторів сервера загального призначення, обладнуються системою автоматичної пожежної сигналізації та засобами пожежогасіння відповідно до вимог НАПБ Б.06.004-2005 (z0990-05), ДБН В.2.5-13-98, НАПБ А.01.001-2004 (z1410-04) і вимог нормативно-технічної та експлуатаційної документації виробника.
- Проходи до засобів пожежогасіння мають бути вільними.
4.2 Характеристика приміщення
Відповідно до теми дипломного проекту, а також бази проходження предипломної практики, для аналізу взято комп’ютерний кабінет «Міського виконавчого комітету».
Кабінет знаходиться на першому поверсі, площа приміщення становить 60 , висота – 2,50 м. Кількість працюючих у приміщенні - 6 чол. Отже на одного працюючого в приміщенні припадає: 60/6=10M2/чол. робочої площі.
Згідно із СНиП 2.09.04 – 87 [9] на кожного працюючого в управлінських приміщеннях повинно припадати не менше 4 (м2/чол.) робочої площі. Для працюючих із комп’ютерною технікою дана площа має становити не менше 6 м2. Висота приміщення – не менше 2,5 м. Приміщення має два вікна.
У приміщенні розташовано 6 комп’ютерів. Напруга джерела живлення комп’ютерів у приміщенні – 220 В з частотою зміни різниці потенціалів 50 Гц. У приміщенні розташовано 6 комп’ютерних столів, 3 шафи для комп’ютерних запчастин.
За небезпекою ураження електричним струмом управлінське приміщення відділу належить до приміщень без підвищеної небезпеки ураження електричним струмом працюючих.
План приміщення наведений на рис. 4.1.
Рисунок 4.1 Комп’ютерний кабінет
4.3 Аналіз стану охорони праці
Провівши аналіз приміщення, в якому відбувалось проходження практики, слід вказати, що за небезпекою виникнення пожежі згідно з ОНТП 24-86 його слід віднести до приміщень категорії В, тобто пожежонебезпечне, оскільки в ньому знаходяться такі легкозаймисті речовини, як папір, дерево та ін.
Беручи до уваги вище написане, можливими причинами пожежі в приміщенні можуть бути:
- В приміщенні може виникнути коротке замикання в електричній мережі, що може спричинити загоряння наявних легкозаймистих речовин;
- Можливе займання паперу або дерева через необережне поводження з вогнем біля них;
- Загоряння легкозаймистих речовин в сусідніх приміщеннях може поширитись на аналізоване приміщення.
Для того, щоб запобігти виникненню пожежі, слід розробити правила поведінки з вогнем та прийняти заходи щодо усунення можливості виникнення короткого замикання.
Встановивши в приміщенні пожежну сигналізацію та достатню кількість вогнегасників, з’явиться можливість своєчасно загасити пожежу, що виникла, при цьому зазнавши мінімальних її наслідків.
Крім того, важливу роль відіграє план евакуації працівників та матеріальних цінностей на випадок пожежі. Він наведений на рисунку 4.2.
Рисунок 4.2 План евакуації із приміщення
де - позначення розташування вогнегасників в приміщенні;
- позначення шляхів евакуації.
Таким чином, проаналізувавши план евакуації при пожежі та врахувавши розміщення вогнегасників і шляхів евакуації, надається можливість чітко визначити небезпечні зони, де підвищена можливість отримання шкоди від пожежі.
4.4 Заходи щодо поліпшення умов праці
Сучасне виробництво характеризується, як правило, дією на працюючу людину цілого комплексу небезпечних та шкідливих виробничих факторів.
Особливо це стосується користувачів комп'ютерів, для яких притаманний вплив цілої низки слабо виражених несприятливих виробничих факторів, що належать до сфери виробничого середовища, організації робочих місць, конструктивних особливостей комп'ютера, програмного забезпечення, змісту праці, соціальних аспектів.
Вимоги до організації режиму праці та відпочинку при роботі з ЕОТ та ВДТ:
- Режими праці та відпочинку при роботі з ЕОТ та ВДТ повинні організовуватися в залежності від виду категорії трудової діяльності;
- Для забезпечення оптимальної працездатності і збереження здоров'я професійних користувачів, протягом робочої зміни повинні встановлюватися регламентовані перерви;
- Тривалість безперервної роботи з ЕОТ та ВДТ без регламентованого перерви не повинна перевищувати 2 годин.
При роботі на ЕОТ та ВДТ для попередження розвитку перевтомлення необхідно здійснювати комплекс профілактичних заходів:
- Проводити вправи для очей через кожні 20-25 хвилин роботи на ПК, а при появі зорового дискомфорту, що виражається у швидкому розвитку втоми очей, різі, мерехтінні точок перед очима і т.п., вправи для очей проводяться індивідуально, самостійно і раніше зазначеного часу;
- Для зняття локального стомлення повинні здійснюватися фізкультурні хвилинки цілеспрямованого призначення індивідуально;
- Для зняття загального стомлення, покращення функціонального стану нервової, серцево-судинної, дихальної систем, а також м'язів плечового поясу, рук, спини, шиї і ніг, слід проводити фізкультпаузи.
Висновки
Для даного дипломного проекту було реалізовано інтернет-сервіс, за допомогою якого кожен бажаючий буде мати можливість зареєструвати аварійну ситуації в своєму будинку та оцінити роботу працівників ЖРЕРу. І саме головне, ця можливість надається будь-якому користувачеві безкоштовно за допомогою мережі Інтернет.
Основою роботи сервісу є постійне оновлення інформації та забезпечення користувача лише актуальною її частиною, а також представлення затребуваних послуг.
Електронна база обліку в сервісі дає можливість контролювати поставлені завдання, опрацьовувати їх та організовувати колективне користування цією інформацією певним колом споживачів.
Електронна база обліку також істотно збільшує можливості й полегшує каталогізацію та ведення великих обсягів інформації, що зберігається у табличній формі. Саме остання і є найелементарнішим представленням великої інформації в організованій формі.
В економічній частині дипломного проекту обраховані всі можливі витрати, пов’язані з даним проектом. У частині «Охорона праці» здійснено аналіз пожежної безпеки у приміщенні, де відбувалось написання програмного продукту.
Звичайно ж, кожен проект на початковій стадії може містити в собі різноманітні види недоліків та переваг, цей проект, не є винятком, та оцінюється по таким самим критеріям.
Переваги проекту:
- просте додавання нового модулю;
- достатня кількість різних інструментів;
- описова допомога для користувачів;
- простий інтерфейс;
- комунікаційна підтримка.
- http://uk.wikipedia.org/wiki/HTML
- http://uk.wikipedia.org/wiki/CSS
- http://uk.wikipedia.org/wiki/JavaScript
- https://uk.wikipedia.org/wiki/PHP
- Розміри посадових окладів за тарифними розрядами Єдинох тарифної сітки в 2013 році відповідно до постанови Кабінету Міністрів України від 27.03.2013 №197.
- СНиП 2.09.04 – 87 – Административние и бытовые здания.
- СНиП 2.09.02-85. Производственные здания промышленых предприятий. Нормы проектирования.
- Методичні вказівки до написання дипломного проекту.
- Ленгсторф Джейсон – PHP и jQuery для профессионалов.: Пер.с англ. – М.:ООО “И.Д. Вильямс”, 2011. – 352c. : ил. – Парал. Тит. Англ.
- Джонс, Дон – Создание Web-сайтов на бесплатном движке PHP-NUKE: пер. с англ. Яз. / Дон Джонс. – М.: Изд-во Триумф, 2005. – 304 с.: илю – Серия GARAGE. – Доп. Тит. Л. Англ.
- Томсон Лаура – Разработка Web-приложений на PHP: Пер. с англ. /Лаура Томсон, Люк Велинг. – 2-е изд., испр. – СПб: ООО «ДиаСофтЮП», 2003 – 672 с.
- Зольников. Д. С. – PHP 5 / Д. С. Зольников. – М.: НТ Пресс, 2007. – 256 с. :ил – (Полная версия).
- Дари К., Бринзаре Б., Черчез-Тоза Ф., Бусинка М. – AJAX и PHP: разработка динамических веб приложений. – СПб.: Символ-Плюс, 2006. – 336 с., ил.
- Кузнецов М.В., Симдянов И. В., Голишев С. В. – PHP на примерах. – СПб.: БХВ-Петербург, 2005. -576 с.: ил.
- Колисниченко Д. Н.- САМОУЧИТЕЛЬ PHP 5 – СПб.: Наука и техника. – 640 с. Ил.
- http://www.php.net
- http://www.php.su
- Томсон Лаура Т77 Разработка Web-приложений на РНР и MySQL: Пер. с англ./Лаура Томсон, Люк Вел-линг. — 2-е изд., испр. — СПб: ООО «ДиаСофтЮП», 2003. — 672 с.
- Мазуркевич А. MB РНР: настольная книга программиста /Александр Мазуркевич, Дмитрий Еловой. — Мн.: Новое знание, 2003. — 480 с.: ил. ISBN 985-475-014-0.
- Томсон Лаура Т77 Разработка Web-приложений на РНР и MySQL: Пер. с англ./Лаура Томсон, Люк Вел-линг. — 2-е изд., испр. — СПб: ООО «ДиаСофтЮП», 2003. — 672 с. ISBN 5-93772-090-3
- Фленов М. Е. Ф69 РНР глазами хакера. — СПб.: БХВ-Петербург, 2005. — 304 с : ил. ISBN 5-94157-673-0
- Джонс, Дон. Д42 Создание Web-сайтов на бесплатном движке PHP-NUKE : пер. с англ. яз. / Дон Джонс. — М. : Изд-во Триумф, 2005. — 304 с.: ил. — Серия GARAGE. - Доп. тит. л. англ. — ISBN 5-89392-119-4.
- http://www.cyberforum.ru/php-beginners/
- Аргерих Л. и др. Профессиональное РНР программирование, 2-е издание. - Пер. с англ. - СПб: Символ-Плюс, 2003. - 1048 с., ил. ISBN 5-93286-049-9
- Журнал реєстрації аварій 2007
- http://uk.wikipedia.org/wiki/диспетчеризація
Додаток 1. Функціональна схема роботи проекту
<?
error_reporting (E_ALL);
include "config.php";
// Функція для ПРОДОЛЖЕННЯ ШАПКИ - закриває ВСі таблиці. Визивається так: addtop();
function addtop() { global $wrboardname;
// якщо в куках є wrboardname, то виводиму імя, або виводимо форму для входа
if (isset($_COOKIE['wrboardname'])) {$wrboardname=$_COOKIE['wrboardname'];}
print"<TD align=right>";
if (isset($wrboardname)) {print "<a href='tools.php?event=profile&pname=$wrboardname'>Ваш Профіль</a> <a href='tools.php?event=clearcooke'>Вихід [<B>$wrboardname</B>]</a> ";}
else {print "<a href='tools.php?event=login'>Вхід в систему</a> | <a href='tools.php?event=reg'>Реєстрація</a> ";}
print"</TD></TR></TABLE></TD></TR></TABLE><TABLE cellPadding=0 cellSpacing=0 width=100%><TR><TD></TD></TR></TABLE>";
return true;}
if (!is_file("images/$brdskin/top.html")) {$topurl="images/top.html";} else {$topurl="images/$brdskin/top.html";}
// Сортування
function prcmp ($a, $b) {if ($a==$b) return 0; if ($a<$b) return -1; return 1;}
print"<TABLE cellSpacing=0 cellPadding=0 width=250 border=0><TR>
<TD width=5><IMG src='images/$brdskin/lt.gif' width=5 height=72 border=0></TD>
<TD width=200 background='images/$brdskin/mt.gif' valign=middle><B>$dt[2]</B></TD>
<TD align=right background='images/$brdskin/mt.gif'><IMG height=17 src='images/$brdskin/k.gif' width=25 border=0></TD>
<TD><IMG src='images/$brdskin/$cm.gif' width=75 height=72 border=0></TD>
</TR><TR>
<TD><img src='images/blank.gif' border=0></TD>
<TD colspan=3><TABLE cellSpacing=0 cellPadding=0 width=100%>";
// Назву пічатаємо
} else {
if (($dt[2]+$dt[3])>"0") {$ok="have.gif";} else {$ok="nohave.gif";}
print"<TR onmouseover=\"trtover(this)\" onmouseout=\"trtout(this)\">
<TD onclick=\"LmUp('$url')\" onmouseover=\"tover(this)\" onmouseout=\"tout(this)\" height=20>
<img src='images/$brdskin/$ok'> <A href='$url'>$dt[1]</A></TD><TD width=20>$it</TD></TR>\r\n";}
$i++;
$itogo=$itogo+$it;
} while($a1 < $u);
// Закритя цент.таблиці
print"</TD></TR></TABLE>
</table></td></tr></table><center>Всього зареєстровано аварійних ситуацій в базі: <B>$itogo</B></center><BR>";
// Показ 10-20 послідніх заявок
$shapka20="<TABLE align=center cellPadding=3 cellSpacing=0 width=98%>";
$shapka10="<TABLE align=center cellPadding=3 cellSpacing=0 width=98%>";
if (is_file("$datadir/newmsg.dat") and $showten>="1") { // перевірка є такий файл
$linesn = file("$datadir/newmsg.dat"); $in=count($linesn);
if ($in > 0) {
$newdat=file("$datadir/newmsg.dat");
$in=count($newdat)-1; $iall=$in; $ia=$in+1;
print"<TABLE cellPadding=2 cellSpacing=1 align=center width=98%>";
if ($showten=="20") {print "<TR class=toptable height=18><TD colspan=4 align=center><B>Останні $ia заявки:</B></TD></TR><TR><TD valign=top>$shapka20";}
else {print "<TR><TD> </td><TD align=center><TABLE align=center cellPadding=3 cellSpacing=0 width=468><TR class=toptable height=18><TD colspan=4 align=center><B>Останні $ia заявки:</B></TD></TR>";}
do {$dtn=explode("|", $newdat[$in]);
$tdt=explode("[ktname]", $dtn[1]);
if (!isset($tdt[1])) {$tdt[1]="";} // БД
$url="index.php?fid=$dtn[8]&id=$dtn[10]";
$dtn[5]=substr($dtn[5],0,150); // до 150 символів обріз
$dtn[5]=str_replace("<br>","\r\n",$dtn[5]);
$dtn[7]=date("H:i",$dtn[7]);
if ($dtn[4]=="Н") {$colorsp="#ff3333";} else {$colorsp="#1414CD";}
if (round($iall/2)==($in+1) & $showten>10) {print"</table></td><td width=50% valign=top>$shapka10";}
if ($dtn[9]=="vip") {$st1="<B>"; $st2="VIP-заявка \r\n";} else {$st1=""; $st2="";}
print"
<TR height=20 onmouseover=trtover(this) onmouseout=trtout(this)>
<TD><FONT color=$colorsp><B>$dtn[4]</B></FONT></TD>
<TD>$dtn[7]</TD>
<TD onclick=LmUp('$url') width=100%>$st1<A href='$url' title='$dtn[5] \r\r\n $tdt[0] --> $tdt[1] \r\r\n $st2\r\n розміщено $dtn[6] р.'>$dtn[3]</A></TD>
<TD onclick=LmUp('$url')><IMG alt='перейти' border=0 src='images/$brdskin/go.gif'></TD>
</TR>";
$in--;
} while($in >"-1");
} print"</table></td></tr></table>";
}
} // кінець головної
// СПИСОК ЗАЯВОК (ЛЕВЕЛ 2)
if (isset($_GET['fid']) and !isset($_GET['id'])) { $fid=$_GET['fid'];
$addbutton="<a href=\"add.php?fid=$fid\">Додати заявку в цей розділ</a>";
// Защиты
$deleted="$back. Немає категорій!";
if (!ctype_digit($fid)) {exit(" <h1>Ошибка, нема прав.</h1>");}
$imax=count(file("$datadir/$datafile")); if (($fid>100) or (strlen($fid)==0)) {exit("$deleted");}
if (!is_file("$datadir/$fid.dat")) {print"$deleted"; exit;} // перевірка є такий файл
else {
$lines=file("$datadir/$fid.dat"); $itogo=count($lines); $n="0";
if ($itogo > 0) {
// Авто-делетед тута!
$tekdate=mktime(); $i=$itogo; $newi="-1"; $pred="0"; $spros="0"; $todelete="0"; $itogos="0";
do {$i--; $dt=explode("|",$lines[$i]);
if ($dt[4]!="Н") {$itogos++;} // підрахуємо Виконано/Не виконано
if ($dt[7]<$tekdate) {$todelete++; if ($dt[4]=="Н") {$pred++;} else {$spros++;}} else {$newi++; $newlines[$newi]=$lines[$i];}
} while($i>0);
// $newlines - масив в яких нема просрочених заявок
if (isset($newlines)) {$newitogo=count($newlines)-1;} else {$newitogo="0"; $newlines[0]="";}
//print "$todelete - todelete; $newitogo/$itogo - newitogo/itogo";
// Блок для чистки бд
if ($todelete>"0") {
// записуємо файл в БД в яким нема просрочених заявок
$fp=fopen("$datadir/$fid.dat","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//удаляємо внутреності файла
for ($i=0; $i <= $newitogo; $i++) {fputs($fp,$newlines[$i]);}
flock ($fp,LOCK_UN);
fclose($fp);
// Мінусуємо 1 при deleted
if (!isset($flagm1)) {$flagm1=1;}
if ($flagm1=="1") {
$lines = file("$datadir/$datafile"); $i=count($lines);
do {$i--; $dt=explode("|", $lines[$i]);
// Находимо в БД розділ, де ми щас находимось
if ($fid==$dt[0]) {
$dt[2]=$dt[2]-$pred; if ($dt[2]<"0") {$dt[2]="0";}
$dt[3]=$dt[3]-$spros; if ($dt[3]<"0") {$dt[3]="0";}
if ($newitogo==0) {$dt[2]="0"; $dt[3]="0";}
$text="$fid|$dt[1]|$dt[2]|$dt[3]|";
$file=file("$datadir/$datafile");
$fp=fopen("$datadir/$datafile","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЄМО внутреності файла
for ($ii=0;$ii< sizeof($file);$ii++) {if ($i!=$ii) {fputs($fp,$file[$ii]);} else {fputs($fp,"$text\r\n");}}
fflush ($fp);//очиска буфера
flock ($fp,LOCK_UN);
fclose($fp);
}
} while($i > 0);
} // кінець
$lines = file("$datadir/$fid.dat");
$itogo=count($lines); $i=$itogo;
} // if ($todelete > 0)
} // if ($itogo > 0)
// авто-делетед!
if ($itogo > 0) {$i=$itogo; $lt=explode("|",$lines[0]); $tdt=explode("[ktname]", $lt[1]);
if (!isset($tdt[1])) {$tdt[1]="";} //
$razdel=$tdt[1]; $rubrika="$tdt[0] .:. $tdt[1]";
include "$topurl"; addtop(); //
$rubrika="$tdt[0]";
//
if (isset($_GET['page'])) {$page=$_GET['page'];} else {$page="0";}
if ($page>=$i) {$page=$i-1;}
if ($i-$page-$qq>=0) {$a1=$i-$page; $u=$a1-$qq;} else {$a1=$i-$page; $u=0;}
$num=0; $ivip=0;
print"<TABLE class=bakfon cellPadding=2 cellSpacing=1 width=98% align=center><TBODY>
<TR class=row1 height=28><TD colspan=6 class=main align=center><strong>$razdel</strong> <small>--></small> <strong>$rubrika</strong></TD></TR>
<TR class=toptable align=center>
<TD><B>№</B></TD>
<TD><B>Відмітка:</B></TD>
<TD width=50%><B>Заголовок</B></TD>
<TD width=15%><B>Ім’я</B></TD>
<TD width=15%><B>Дата подання</B></TD>
<TD width=20%><B>Дата видалення</B></TD></TR>";
do {$a1--; $dt=explode("|", $lines[$a1]);
$num++; $url="index.php?fid=$fid&id=$dt[10]";
if ($dt[4]=="Н") {$colorsp="#ff3333";} else {$colorsp="#1414CD";}
$deldate=date("d.m.Y",$dt[7]);
$tekdt=mktime();
$deldays=round(($dt[7]-$tekdt)/86400);
$dt[5]=str_replace("<br>", "\r\n", $dt[5]);
// день днів і т.п.
$dney="днів"; if ($deldays=="0") {$deldays=1;}
if ($deldays>20) {$ddays=substr($deldays,-1);} else {$ddays=$deldays;}
if ($ddays=="1") {$dney="день";}
if ($ddays=="2" or $ddays=="3" or $ddays=="4") {$dney="дня";}
if ($dt[9]=="vip") {print "<TR height=28 class=vip onmouseout=\"vipout(this)\" onmouseover=\"vipover(this)\">";}
else {print "<TR height=28 class=row1 onmouseover=\"trtover(this)\" onmouseout=\"trtout(this)\">";}
if (stristr($dt[2],"[email]")) {$tdt=explode("[email]", $dt[2]); $dt[2]="$tdt[0]"; $usdat="<TD onclick=\"LmUp('$url')\">$dt[2]";} else {$usdat="<TD onmouseover=\"tover(this)\" onmouseout=\"tout(this)\" onclick=\"LmUp('tools.php?event=profile&pname=$dt[2]')\"><A href='tools.php?event=profile&pname=$dt[2]'>$dt[2]</A>";}
print"
<TD align=center><B>$num</B></TD>
<TD><FONT color=$colorsp><B>$dt[4]</B></FONT></TD>
<TD onmouseover=\"tover(this)\" onclick=\"LmUp('$url')\" onmouseout=\"tout(this)\"><A href='$url' title='$dt[5]'>$dt[3]</A></TD>
$usdat</TD>
<TD align=center onclick=\"LmUp('$url')\"> $dt[6]</TD>
<TD onclick=\"LmUp('$url')\">$deldate - через <B>$deldays</B> $dney </TD></TR>";
if (($dt[9]=="vip") and ($ivip==1)) {print"<TR height=15 class=small bgColor=#FFFFFF><TD colspan=6> </TD></TR>";}
$ivip--;
} while($a1 > $u);
$itogop=$i-$itogos;
print "</TBODY></TABLE><BR><TABLE cellPadding=0 cellSpacing=0 width=98% align=center><TBODY><TR>
<TD width=50%><div class=pgbutt>Сторінки: ";
for($pi="0"; $pi<$i;) {$ii=1+$pi/$qq; if ($page==$pi) {$addp="class=sel";} else {$addp="";}
print "<a style=\"width:10px\" $addp href=\"index.php?fid=$fid&page=$pi\"><B>$ii</B></a> ";
$pi=$pi+$qq;}
print "<TD align=right width=50%>Всього заявок: <B>$i</B>. З них: Не виконано - <B>$itogop</B> Виконано - <B>$itogos</B>.</TD></TR></TBODY></TABLE>
<center>$addbutton";
} else {$rubrika=""; include "$topurl"; addtop(); print"<center><BR><BR><BR><BR><BR><font size=-1><B>Шановні користувачі!</B><BR><BR> В даному розділі поки що нема заявок.<BR><BR> Ви можете <B>$addbutton</B> або <BR><BR> перейти на головну сторінку сайта по <B><a href='index.php'>цій силці</a></B>.<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>";}
}
print "</tr></table><BR>";
}
// (ЛЕВЕЛ 3)
if (isset($_GET['fid']) and isset($_GET['id'])) { $fid=$_GET['fid'];
$error="Ошибка! Сюда напишіть - $adminemail";
$deleted="$back. Файла рубрики нема!";
if (!isset($_GET['id'])) {print"$error"; exit;} $id=$_GET['id'];
if ($_GET['id']==="") {print "$error"; exit;}
if (is_file("$datadir/$fid.dat")) {$lines=file("$datadir/$fid.dat");}
$cy=count($lines)-1; $itogo=$cy; $i=$itogo;
if ($cy>=0) {unset($number); do {$dt=explode("|",$lines[$i]);
if ($dt[10]==$id) {$number=$i;} $i--;} while ($i >= 0);}
if (!isset($number)) {include "$topurl"; addtop(); print"<BR><BR><BR><BR><BR><center><font size=-1><B>Шановний користувач!</B><BR><BR>
Вибачте, но запрошена Вами <B>заявка більше недоступна.</B><BR><BR>
Скоріш за все, <B>закінчився її срок показу</B>, і вона була видалена.<BR><BR>
Ви можете <B><a href='index.php?fid=$fid'>перейти в цей розділ</a></B> де було розміщено заявку.<BR>
<B>Перейти на головну</B> можно <B><a href='index.php'>цій силці</a></B><BR><BR><BR><BR><BR><BR><BR><BR><BR>";
} else {
$dt=explode("|",$lines[$number]);
// titile
$rub=$dt[3]; if (strlen($rub)>98) {$rub=substr($rub,0,98); $rub.="...";}
$tdt=explode("[ktname]", $dt[1]);
if (!isset($tdt[1])) {$tdt[1]="";}
$razdel=$tdt[1]; $rubrika="$rub .:. $tdt[0] .:. $tdt[1]";
include "$topurl"; addtop();
$rubrika=$tdt[0];
$userline=file("$datadir/usersdat.php"); $i=count($userline); $usernum="";
do {$i--; $rdt=explode("|", $userline[$i]);
if ($dt[2]==$rdt[0]) { $usernum="$i";}
} while($i > "1");
if ($usernum!="") {$rdt = explode("|", $userline[$usernum]);} else {$rdt[0]="";$rdt[2]="";$rdt[3]="";$rdt[4]="";$rdt[5]="";$rdt[6]="";}
$deldate=date("d.m.Y",$dt[7]); // конверт
$tekdt=mktime();
$deldays=round(($dt[7]-$tekdt)/86400);
$dt[7]=date("H:i:s",$dt[7]);
$mstek=$number+1;
$numtek=$cy-$number+1;
$dney="днів";
if ($deldays>20) {$ddays=substr($deldays,-1);} else {$ddays=$deldays;}
if ($ddays=="1") {$dney="день";}
if ($ddays=="2" or $ddays=="3" or $ddays=="4") {$dney="дня";}
if ($dt[4]=="Н") {$dt[4]="<font color=#EE2200>Не виконано";} else {$dt[4]="<font color=#1414CD>Виконано";}
if ($usernum!="") {
$foto=""; $tblwidth="500"; $tblheight="370";
$userinfo="<TR class=row2 height=23><TD>Організація:</TD><TD>$rdt[6] </TD></TR>
<TR class=row1 height=23><TD>Автор:</TD><TD><a href='tools.php?event=profile&pname=$dt[2]'>$dt[2]</a></TD></TR>
<TR class=row2 height=23><TD>E-mail:</TD><TD width=220><A href='#' onclick=\"window.open('tools.php?event=mailto&email=$rdt[2]&name=$rdt[0]&fid=$fid&id=$id','email','width=400,height=390,left=100,top=100')\">Отправити листа автору</A></TD></TR>
<TR class=row1 height=23><TD>Місто:</TD><TD>$rdt[11] </TD></TR>
<TR class=row2 height=23><TD>Телефон:</TD><TD>$rdt[5] </TD></TR>";
} else {
$tblwidth="500"; $tblheight="370"; $foto="</tr>";
$userinfo="<TR class=row2 height=23><TD>Автор:</TD><TD>";
if (stristr($dt[2],"[email]")) { $tdt=explode("[email]", $dt[2]); $userinfo.="$tdt[0]</TD></TR><TR class=row1 height=23><TD>E-mail:</TD><TD width=220><A href='#' onclick=\"window.open('tools.php?event=mailto&email=$tdt[1]&name=$tdt[0]&fid=$fid&id=$id','email','width=400,height=390,left=100,top=100')\">Отправити листа автору</A>";} else {$userinfo.="$dt[2]";}
if (!isset($dt[13])) {$dt[13]="";} if (!isset($dt[12])) {$dt[12]="";}
$userinfo.="</td></tr><TR class=row2 height=23><TD>Місто:</TD><TD width=220>$dt[12]</td></tr><TR class=row1 height=23><TD>Телефон:</TD><TD width=220>$dt[13]</td></tr><TR class=row2 height=23><TD>New:</TD><TD width=220>$dt[14]</td></tr>";
}
print "<center><TABLE class=bakfon align=center cellPadding=3 cellSpacing=1 width=$tblwidth height=$tblheight><TBODY>
<TR class=row1 height=28 align=center><TD colspan=3><font style='FONT-SIZE: 15px;'><strong>$razdel</strong> <small>>></small> <strong>$rubrika</strong></font></TD></TR>
<TR HEIGHT=23><TD align=middle class=toptable colSpan=3 width='100%'><table width=100%><TR
align=center><TD><B>$dt[3]</B></TD><TD
width=20><B>$numtek</B></TD></TR></table></TD></TR>
<TR class=row1 height=23><TD width=140>Відмітка про виконання заходів:</TD><TD width=220><B>$dt[4]</B></TD>
$foto
<TR class=row2 height=23><TD>Дата створення заявки:</TD><TD>$dt[6] <small>$dt[7]</small></TD></TR>
<TR class=row1 height=23><TD>Дата видалення заявки:</TD><TD>$deldate (залишилось <B>$deldays</B> $dney)</TD></TR>
$userinfo </TD></TR>
<TR class=row2 height=23><TD>Дата і час настання аварії:</TD><TD>$dt[14] </TD></TR>
<TR class=row1 height=23><TD>Економічні втрати від аварії:</TD><TD>$dt[15] </TD></TR>
<TR class=row2 height=23><TD>Тривалість простою об'єкта від <br>початку аварії до введення<br> в експлуатацію, годин або діб:</TD><TD>$dt[16] </TD></TR>
<TR class=row1 height=23><TD>Заходи, запропоновані комісією<br> з розслідування причин аварії:</TD><TD>$dt[17] </TD></TR>
<TR class=row2 height=23><TD colSpan=2>Причини і стислий опис обставин аварії:</TD></TR>
<TR class=row1><TD bgColor=#FFFFFF colSpan=2 width=500 vAlign=top><BR>$dt[5]<BR><BR></TD>
</TR></TBODY></TABLE>
<BR><table width=300><TR align=center><TD width=70>";
if ($number>0) {$last=$mstek-2; $dtlast=explode("|",$lines[$last]); print "<A href='index.php?fid=$fid&id=$dtlast[10]'><IMG alt='Попередня заявка' border=0 src='images/$brdskin/forward.gif'></A>";}
print "</td><td width=90><A href='index.php?fid=$fid'><IMG alt='Повернутися в розділ $dt[1]' border=0 src='images/$brdskin/back.gif'></A></td><td width=80>";
if ($number<$cy) {$next=$mstek; $dtnext=explode("|",$lines[$next]); print "<A href='index.php?fid=$fid&id=$dtnext[10]'><IMG alt='Наступна заявка' border=0 src='images/$brdskin/next.gif'></A>";}
print "</td></tr></table>";
if (is_file("$datadir/$id.dat")) {
$rlines=file("$datadir/$id.dat"); $ri=count($rlines); $bals=0; $all=0;
print"<BR><table class=bakfon align=center cellPadding=2 cellSpacing=1 width=560><TR><TD class=main align=center height=25 width=560 class=main colspan=3>Комментарии посетителей:</TD></TR>
<TR class=row1 height=20 align=center><TD><B>Ім’я, Емайл, Дата</TD><TD>Текст коменту</TD><TD>Оцінка</TD></TR>";
do {$ri--; $edt=explode("|",$rlines[$ri]);
$edt[3]=date("d.m.Y H:i:s",$edt[3]);
if ($edt[4]!=0) {$bals=$bals+$edt[4]; $all++;} else {$edt[4]="-";}
print"<TR class=row1><TD><B>$edt[0]</B><BR>$edt[1]<BR>$edt[3]</TD><TD>$edt[2]</TD><TD align=center>$edt[4]</TD></TR>";
} while($ri>0);
if ($bals==0) {$itogobals="н/д";} else {$itogobals=round($bals*10/$all)/10;}
print "</TD></TR><TR class=row1><TD colspan=3 align=center height=28><font style='FONT-SIZE: 13px'>Важность заявки: <B>$itogobals</B> / 5</font></TD></TR></TABLE>";
}
}
}
include "images/bottom.html";
?>
<center><small>Powered by KNz-31 Group © 1.0<br></small></center>
</body></html>
Admin.php
<?
error_reporting (E_ALL);
include "config.php";
// Авторізація
if (!isset($_GET['pswrd'])) {echo "<center><form action=\"admin.php\" method=\"get\" name=pass>Ведіть пароль адміна: <BR><input type=password size=\"17\" value=\"\" name=\"pswrd\"><BR><input type=\"submit\" value=\"Вхід\"><SCRIPT language=JavaScript>document.pass.pswrd.focus();</SCRIPT>";}
else {if ($_GET['pswrd']=="$password") { // Успішно пройдена авторізація
// + Блок для видалення категорії
if (isset($_GET['xd'])) { $xd=$_GET['xd'];
// шукаємо файл з заявкою і видаляємо його
$file=file("$datadir/$datafile"); $dt=explode("|",$file[$xd]);
if (is_file("$datadir/$dt[0].dat")) {unlink ("$datadir/$dt[0].dat");}
// видалення строки
$fp=fopen("$datadir/$datafile","w");
flock ($fp,LOCK_EX);
for ($i=0;$i< sizeof($file);$i++) { if ($i==$xd) {unset($file[$i]);} }
fputs($fp, implode("",$file));
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$datafile", 0644);
Header("Location: admin.php?pswrd=$password"); exit; }
// тест комменти, видалення іх
if (isset($_GET['remxd'])) {
$id=$_GET['id']; $flname=$_GET['flname']; $remxd=$_GET['remxd']; $page=$_GET['page'];
$file=file("$datadir/$flname.dat");
// строка з коментом
$fp=fopen("$datadir/$flname.dat","w");
flock ($fp,LOCK_EX);
for ($i=0; $i< sizeof($file); $i++) { if ($i==$remxd) {unset($file[$i]);} }
fputs($fp, implode("",$file));
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$flname.dat", 0644);
if (count($file)==0) {unlink ("$datadir/$flname.dat");}
Header("Location: admin.php?pswrd=$password&event=topic&id=$id&page=$page"); exit;}
// + Блок видалення з останіх 10 заявок
if (isset($_GET['tenxd'])) { $tenxd=$_GET['tenxd'];
$file=file("$datadir/newmsg.dat");
$fp=fopen("$datadir/newmsg.dat","w");
flock ($fp,LOCK_EX);
for ($i=0; $i< sizeof($file); $i++) { if ($i==$tenxd) {unset($file[$i]);} }
fputs($fp, implode("",$file));
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/newmsg.dat", 0644);
Header("Location: admin.php?pswrd=$password"); exit;}
// + блок видалення вибраної заявки
if (isset($_GET['topicxd']))
{
$id=$_GET['id']; $topicxd=$_GET['topicxd']; $msgtype=$_GET['msgtype']; $page=$_GET['page'];
$file=file("$datadir/$id.dat");
// видалення строки заявки
$fp=fopen("$datadir/$id.dat","w");
flock ($fp,LOCK_EX);
for ($i=0; $i< sizeof($file); $i++) { if ($i==$topicxd) {unset($file[$i]);} }
fputs($fp, implode("",$file));
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$id.dat", 0644);
// Віднімання одиниці при видаленні
$lines = file("$datadir/$datafile"); $i = count($lines);
do {$i--; $dt=explode("|",$lines[$i]);
if ($id==$dt[0]) {$fnomer=$i; if ($msgtype=="Н") {$dt[2]--;} else {$dt[3]--;}
if ($dt[2]<0) {$dt[2]="0";} if ($dt[3]<0) {$dt[3]="0";}
$text="$dt[0]|$dt[1]|$dt[2]|$dt[3]|";}
} while($i > 0);
$file=file("$datadir/$datafile");
$fp=fopen("$datadir/$datafile","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
for ($ii=0;$ii< sizeof($file);$ii++)
{ if ($fnomer!=$ii) {fputs($fp,$file[$ii]);} else {fputs($fp,"$text\r\n");} }
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$datafile", 0644);
Header("Location: admin.php?pswrd=$password&event=topic&id=$id&page=$page"); exit;}
// + видалення участника
if(isset($_GET['xduser'])) {
if ($_GET['xduser'] =="") {print"Пустий ГЕТ-запрос"; exit;}
$xduser=$_GET['xduser']-1;
$file=file("$datadir/usersdat.php"); $i=count($file);
if ($xduser<"1") {print "$back. перша строка є захисною! Её <B>НЕМОЖНА ВИДАЛЯТИ!</B>"; exit;}
if ($i<"3") {print "$back. Треба залишити хочаби <B>ОДНОГО</B> користувача!"; exit;}
// видалення строки участника
$fp=fopen("$datadir/usersdat.php","w");
flock ($fp,LOCK_EX);
for ($i=0;$i< sizeof($file);$i++) { if ($i==$xduser) {unset($file[$i]);} }
fputs($fp, implode("",$file));
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/userdat.php", 0644);
Header("Location: admin.php?pswrd=$password&event=userwho"); exit; }
// + блок переміщення вниз і вверх
if(isset($_GET['movetopic'])) { if ($_GET['movetopic'] !="") {
$move1=$_GET['movetopic']; $where=$_GET['where'];
if ($move1=="0" or $move1=="1") {print"Неможливо перемістити!"; exit;}
if ($where=="0") {$where="-1";}
$move2=$move1-$where;
$file=file("$datadir/boardbase.dat"); $imax=sizeof($file);
if (($move2>=$imax) or ($move2<"0")) {exit("Неможливо перемістити!");}
$data1=$file[$move1]; $data2=$file[$move2];
$fp=fopen("$datadir/boardbase.dat","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//очистка
// Міняємо розділи місцями
for ($i=0; $i<$imax; $i++) {if ($move1==$i) {fputs($fp,$data2);} else {if ($move2==$i) {fputs($fp,$data1);} else {fputs($fp,$file[$i]);}}}
fflush ($fp);//очистка
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/boardbase.dat", 0644);
Header("Location: admin.php?pswrd=$password"); exit; }}
// + Перерахування категорій і заявок
if (isset($_GET['event'])) { if ($_GET['event']=="revolushion") {
$lines = file("$datadir/$datafile");
$countmf=count($lines)-1;
$n="0";$i="-1";$u=$countmf-1;$k="0";$it=0;
do {$i++; $dt=explode("|", $lines[$i]);
$fid=$dt[0]; $itogos="0";$itogo="0";$itogop="0";
if (is_file("$datadir/$fid.dat")) {
$msglines=file("$datadir/$fid.dat");
if (count($msglines)>0) {
$itogo=count($msglines); $it="-1"; $itmax=$itogo-1;
do {$it++; $dtt = explode("|", $msglines[$it]);
if ($dtt[4]=="Н") {$itogop++;} else {$itogos++;}
} while ($it<$itmax);
}
}
if ($dt[1]=="R") {$lines[$i]="$dt[0]|$dt[1]|$dt[2]|$dt[3]|\r\n";} else {$lines[$i]="$dt[0]|$dt[1]|$itogop|$itogos|\r\n";}
} while($i < $countmf);
// зберігання даних які получили
$file=file("$datadir/$datafile");
$fp=fopen("$datadir/$datafile","w");
flock ($fp,LOCK_EX);//блокування файлу
for ($i=0;$i< sizeof($file);$i++) {fputs($fp,$lines[$i]);}
flock ($fp,LOCK_UN);//розблокування
fclose($fp);
@chmod("$datadir/$datafile", 0644);
print "<center><BR>Розділи і заявки успішно перераховано.<BR><BR><h3>$back</h3></center>"; exit; }
}
// - Добавити категорію
if (isset($_GET['newrubrika'])) { $zag=$_POST['zag'];
if (strlen($zag)<3) {exit(" Назва категорії, <B> яка містить менше 3 символів </B> - це не серйозно ;)!");}
// пробігаємо по файлам шукаємо найбільче число і +1
$fid="0"; if (is_file("$datadir/$datafile")) { $lines=file("$datadir/$datafile"); $imax = count($lines); $i=0; do {$dt = explode("|", $lines[$i]); if ($fid<$dt[0]) {$fid=$dt[0];} $i++;} while($i < $imax); $fid++;}
$zag=str_replace("|"," ",$zag);
$text="$fid|$zag|0|0|";
$text=stripslashes($text);
$text=htmlspecialchars($text);
$text=str_replace("\r\n", "<br>", $text);
$fp=fopen("$datadir/$datafile","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);//очищення файлого буфера
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$datafile", 0644);
$fp=fopen("$datadir/$fid.dat","a+");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$fid.dat", 0644);
Header("Location: admin.php?pswrd=$password"); exit; }
// - редакт.
if (isset($_GET['event'])) {
if ($_GET['event']=="rdmsgintopic") {
$rubrn=$_POST['rubrn'];
$rubka=$_POST['rubka'];
$name=$_POST['name'];
$id=$_POST['id'];
$fnomer=$_POST['fnomer'];
$newrubrika=$_POST['newrubrika'];
$days=$_POST['days'];
$msg=$_POST['msg'];
$zag=$_POST['zag'];
$type=$_POST['type'];
$vip=$_POST['vip'];
$key=$_POST['key'];
$today=$_POST['today'];
$gorod=$_POST['gorod'];
$phone=$_POST['phone'];
$timez=$_POST['timez'];
$moneyz=$_POST['moneyz'];
$esk=$_POST['esk'];
$zaxodu=$_POST['zaxodu'];
$smallfoto=$_POST['smallfoto'];
$foto=$_POST['foto'];
$fotoksize=$_POST['fotoksize'];
$size0=$_POST['size0'];
$size1=$_POST['size1'];
$newru = explode("|",$newrubrika);
if ($newru[0]==$rubrn) {
$deldt=mktime()+$days*86400; // форматування дати видалення
$msg=str_replace("|","I",$msg);
$text="$rubrn|$rubka|$name|$zag|$type|$msg|$date|$deldt|$id|$vip|$key|$today|$gorod|$phone|$timez|$moneyz|$esk|$zaxodu|$size0|$size1|";
// обрізка лишніх символів
$text=stripslashes($text);
$text=htmlspecialchars($text);
$text=str_replace("\r\n", "<br>", $text);
$file=file("$datadir/$id.dat");
$fp=fopen("$datadir/$id.dat","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//видалення файлу
for ($i=0;$i< sizeof($file);$i++)
{ if ($fnomer!=$i) {fputs($fp,$file[$i]);} else {fputs($fp,"$text\r\n");} }
fflush ($fp);//очищення файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$id.dat", 0644);
print "<BR><BR><BR><center><B>Заявка успішно відредагована.</B><BR><BR><BR><BR><BR><script language='Javascript'>function reload() {location = \"admin.php?pswrd=$password&event=topic&id=$id\"}; setTimeout('reload()', 1000);</script>"; exit;
} else { // if ($newru[0]==$rubrn) // якщо треба перемістити заявку в другу категорію
$topicxd=$fnomer; $idold=$id; // зберігання параметрів
$deldt=mktime()+$days*86400;
$msg=str_replace("|"," ",$msg);
$id=$newru[2];
$rubrn=$newru[0];
$rubka=$newru[1];
$text="$rubrn|$rubka|$name|$zag|$type|$msg|$date|$deldt|$id|$vip|$key|$today|$gorod|$phone|$timez|$moneyz|$esk|$zaxodu|$size0|$size1|";
// обрізка лишніх символів
$text=stripslashes($text);
$text=htmlspecialchars($text);
$text=str_replace("\r\n", "<br>", $text);
$fp=fopen("$datadir/$id.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);//очищення файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$id.dat", 0644);
$file=file("$datadir/$idold.dat");
$fp=fopen("$datadir/$idold.dat","w");
flock ($fp,LOCK_EX);
for ($i=0; $i< sizeof($file); $i++) { if ($i==$topicxd) {unset($file[$i]);} }
fputs($fp, implode("",$file));
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$idold.dat", 0644);
print "<BR><BR><BR><center><B>Категорія і текст успішно відредаговано.<BR><BR><BR></B><script language='Javascript'>function reload() {location = \"admin.php?pswrd=$password&event=topic&id=$id\"}; setTimeout('reload()', 1000);</script>";
exit;
}
}
}
// - редакт. заяв. і тек
if (isset($_GET['event'])) {
if (($_GET['event']=="add") or ($_GET['event'] =="addlink")) {
// якщо вибрано - редакт. категорії $fnomer - номер ячейки, яку треба замінити.
if (isset($_GET['rd'])) { $rd=$_GET['rd']; $fnomer=$_POST['fnomer'];
$zag=$_POST['zag']; $spros=$_POST['spros']; $predl=$_POST['predl']; $idtopic=$_POST['idtopic'];
$text="$zag|$spros|$predl|$idtopic|";
$text=str_replace("\r\n", "", $text);
$file=file("$datadir/$datafile");
$fp=fopen("$datadir/$datafile","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//видалення содержимого
for ($i=0;$i< sizeof($file);$i++) {if ($fnomer!=$i) {fputs($fp,$file[$i]);} else {fputs($fp,"$text\r\n");}}
fflush ($fp);//очищення файлого буфера
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$datafile", 0644);
$linesrdt=file("$datadir/$idtopic.dat");
$fp=fopen("$datadir/$idtopic.dat","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
for ($i=0;$i< sizeof($linesrdt);$i++) {$drdt = explode("|", $linesrdt[$i]); $text1="$drdt[0]|$zag|$drdt[2]|$drdt[3]|$drdt[4]|$drdt[5]|$drdt[6]|$drdt[7]|$drdt[8]|$drdt[9]|$drdt[10]|$drdt[11]|$drdt[12]|$drdt[13]|$drdt[14]|$drdt[15]|$drdt[16]|$drdt[17]|$drdt[18]|"; $text1=str_replace("\r\n", "", $text1); fputs($fp,"$text1\r\n");}
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$idtopic.dat", 0644);
Header("Location: admin.php?pswrd=$password"); exit; }
}
} // if isset($event)
$shapka="<html><head>
<title>Адмін панель - $brdname</title>
<META HTTP-EQUIV='Pragma' CONTENT='no-cache'>
<META HTTP-EQUIV='Cache-Control' CONTENT='no-cache'>
<META content='text/html; charset=windows-1251' http-equiv=Content-Type>
<LINK href='images/$brdskin/style.css' rel=stylesheet type=text/css>
</head><body bgcolor=#F3F3F3><center>
<table width=100% cellpadding=1 cellspacing=0 border=1 bordercolor=#666666>
<TR height=30><TD align=center style='FONT-SIZE: 13px; FONT-WEIGHT: bold'>
<b><a href='admin.php?pswrd=$password'>Головна адмінки</font></a> ::
<a href='admin.php?pswrd=$password&event=revolushion'>Перерахувати лічильники</a> ::
<a href='admin.php?pswrd=$password&event=config'>Параметри</a> ::
<a href='admin.php?pswrd=$password&event=userwho'>Користувачі</a> ::
<a href='index.php'>Головна сторінка сайту</a></b>
</td></tr>
<tr><td width=100%>
";
if(!isset($_GET['event'])) {
// Показ всіх категорій
$lines = file("$datadir/$datafile");
$data1size = sizeof($lines); $i = count($lines);
if ($i>0) {
$toper="
<BR><TABLE align=center cellPadding=2 cellSpacing=1 width=98%>
<TR align=center class=smallest bgColor=#cccccc><TD width=5%><B>№</B></TD><TD width=80%><B>Категорії</B></TD><TD width=5%><B>Кількість</B></TD><TD colspan=4 width=15%><B>Операції</B></TD></TR>";
print"$shapka <TABLE cellPadding=2 cellSpacing=0 width=100%><tr height=25 align=center><TD width=50%> $toper";
if (isset($_GET['page'])) {$page=$_GET['page'];} else {$page="0";}
$a1="0";
do {$dt = explode("|", $lines[$a1]);
$halfrubsize=round($data1size/2); // скільки категорій в кождому столбці
if ($a1==$halfrubsize) {print "</table></td><td align=center width=50%>$toper";}
$a1++;
$numpp=$a1-1;
if ($dt[1]!="R") {$add="<UL><a href=\"admin.php?pswrd=$password&event=topic&id=$dt[0]\">$dt[1]</a>";} else {$add="
<B>$dt[2]</B>";}
$kolvo=$dt[2]+$dt[3];
print"<tr align=center>
<td><font size=-1>$a1</font></td>
<td align=left>$add</td>
<td><font size=-1>$kolvo</font></td>
<td width=10 bgcolor=#A6D2FF><B><a href='admin.php?pswrd=$password&movetopic=$numpp&where=1'>Вв.</a></B></td>
<td width=10 bgcolor=#DEB369><B><a href='admin.php?pswrd=$password&movetopic=$numpp&where=0'>Нз.</a></B></td>
<td bgcolor=#00E600><B><a href='admin.php?pswrd=$password&rd=$numpp'>.P.</a></B></td><td width=5% bgcolor=#FF6C6C><B><a href='admin.php?pswrd=$password&xd=$numpp'>.X.</a></B>
</td></tr>";
} while($a1 < $i);
} else {print"<center><B>Добавити категорії - файл БД пустий!</B></center>";}
print "</table></tr></td></table>";
// мітка .Р.
if (isset($_GET['rd'])) { $rd=$_GET['rd']; $dt = explode("|", $lines[$rd]);
print "<BR><center><table><tr><td valign=top>
<B>Категорія</td><td>
<form action='admin.php?pswrd=$password&event=add&rd=$rd' method=post name=REPLIER>
<input type=text value=\"$dt[0]\" name=zag size=50><br><br>
<input type=hidden name=spros value=\"$dt[1]\">
<input type=hidden name=predl value=\"$dt[2]\">
<input type=hidden name=idtopic value=\"$dt[3]\">
<input type=hidden name=fnomer value=\"$rd\">
<center><input type=submit value='Змінити категорію'></form>
</td></tr></table>
<SCRIPT language=JavaScript>document.REPLIER.zag.focus();</SCRIPT><BR></td></tr></table>"; }
else {
print "<center><BR><form action=?pswrd=$password&newrubrika=add method=post name=REPLIER>
Додати категорію: <input type=text name=zag size=40> <input type=submit value='Додати'></form>
<SCRIPT language=JavaScript>document.REPLIER.zag.focus();</SCRIPT>";
// 10-20 останіх заявок
$shapka20="<TABLE align=center border=1 bordercolor='#E1E1E1' cellPadding=3 cellSpacing=0 width=100%>";
if (is_file("$datadir/newmsg.dat")) { // провірка
$linesn = file("$datadir/newmsg.dat"); $in=count($linesn);
if ($in > 0) {
$newdat=file("$datadir/newmsg.dat");
$in=count($newdat)-1; $iall=$in; $ia=$in+1;
print"<TABLE cellPadding=2 cellSpacing=1 align=center width='98%'>
<TR bgColor=#cccccc height=18><TD colspan=4 align=center><B>Отсанні $ia заявки:</B></TD></TR>
<TR><TD valign=top> $shapka20";
do {$dtn=explode("|", $newdat[$in]);
$url="index.php?event=view&id=$dtn[8]&msnum=$dtn[10]";
$dtn[5]=substr($dtn[5],0,150); // обрізка до 150 символів
$dtn[5]=str_replace("<br>","\r\n",$dtn[5]);
$dtn[7]=date("H:i",$dtn[7]);
if ($dtn[4]=="Н") {$colorsp="#ff3333";} else {$colorsp="#1414CD";}
if (round($iall/2)==($in+1)) {print"</table></td><td valign=top width=50%>$shapka20";}
$st1=""; $st2="";
print"
<TR height=20>
<td width=5% bgcolor=#FF6C6C><B><a href='admin.php?pswrd=$password&tenxd=$in'>.X.</a></B></td>
<TD><FONT color=$colorsp><B>$dtn[4]</B></FONT></TD>
<TD>$dtn[7]</TD>
<TD width=100%>$st1<A href='$url' title='$dtn[5] \r\r\n $st2 розміщено $dtn[6] р.'>$dtn[3]</A></TD>
</TR>";
$in--;
} while($in >"-1");
print"</table></td></tr></table>";
}
}
print"<div align=left> Операції для категорій: <BR>
<B>Вв.</B> - перемістити <B>ВВЕРХ</B>;<BR>
<B>Нз.</B> - перемістити <B>ВНИЗ</B>;<BR>
<B>.Р.</B> - <B>РЕДАГУВАТИ</B>;<BR>
<B>.Х.</B> - <B>ВИДАЛИТИ</B>.<BR><BR>
</td></tr></table>"; }
} // if !isset($event')
else {
if ($_GET['event'] == "topic") {
if (!isset($_GET['id'])) {print "ERROR!"; exit; } else {$id=$_GET['id'];}
if (is_file("$datadir/$id.dat")) {
$lines = file("$datadir/$id.dat"); $i=count($lines);
if ($i > 0) {
$dtsize = sizeof($lines);
$itogos="0"; //
if (isset($_GET['page'])) {$page=$_GET['page'];} else {$page="0";}
if ($i-$page-$qq>="0") {$a1=$i-$page; $u=$a1-$qq;} else {$a1=$i-$page; $u=0;}
print"$shapka <TABLE cellPadding=2 cellSpacing=0 width=100%><tr height=25 align=center><TD width=50%>";
$dtt=explode("|",$lines[0]);
$tdt=explode("[ktname]", $dtt[1]); $razdel=$tdt[1]; $rubrika=$tdt[0];
print"<BR><h3>$razdel --> $rubrika</h3><TABLE bgColor=#aaaaaa cellPadding=2 cellSpacing=1 width=98% align=center><TBODY>
<TR class=small align=center bgColor=#cccccc>
<TD><small><B>№ </B></small></TD>
<TD><IMG height=16 src='images/blank.gif' border=0 width=11></TD>
<TD width=50%><B>Назва / частина заявки</B></TD>
<TD width=15%><B>Ім’я</B></TD>
<TD width=10%><B>Дата створення заявки</B></TD>
<TD width=20%><B>Дата видалення заявки</B></TD>
<TD width=5%><B>Р</B></TD>
<TD width=5%><B>Х</B></TD>
</TR>";
do {$a1--; $dt=explode("|",$lines[$a1]);
if ($a1>=0)
{
$deldate=date("d.m.Y",$dt[7]);
$tekdt=mktime();
$deldays=round(($dt[7]-$tekdt)/86400);
if ($dt[7]<$tekdt) {$listxd="$a1"; exit;}
if ($dt[4]=="Н") {$colorsp="#ff3333";} else {$colorsp="#1414CD";}
$numpp=$a1+1;
$numanti=$i-$numpp+1;
$stroka=substr($dt[5],0,$msglength);
$addvip="#FFFFFF";
print "<TR height=28 class=small bgColor=$addvip>
<TD><B>$numanti</B></TD>
<TD><FONT color=$colorsp><B>$dt[4]</B></FONT></TD>
<TD><A class=listlink href='index.php?fid=$id&id=$dt[10]'>$dt[3]</A><BR><small>$stroka</small></TD>
<TD><A class=listlink href='tools.php?event=profile&pname=$dt[2]'><small>$dt[2]</small></A></TD>
<TD><small>$dt[6]</small></TD>
<TD><small>$deldate - через <B>$deldays</B> днів </small></TD>
<td width=10 bgcolor=#22FF44><B><a href='admin.php?pswrd=$password&event=topic&id=$id&topicrd=$a1'>.P.</a></B></td>
<td width=10 bgcolor=#FF2244><B><a href='admin.php?pswrd=$password&id=$id&msgtype=$dt[4]&topicxd=$a1&page=$page'>.X.</a></B></td>
</TR>
";
if (is_file("$datadir/$dt[10].dat")) { print"<TR class=small bgColor=$addvip><TD> </TD><TD> </TD><TD colspan=7>";
$klines = file("$datadir/$dt[10].dat"); $ik=count($klines);
for ($z=0;$z<sizeof($klines);$z++) {$dtk=explode("|",$klines[$z]); print "
<table><tr><td width=10 bgcolor=#FF2244><B><a href='admin.php?pswrd=$password&id=$id&flname=$dt[10]&remxd=$z&page=$page'>.X.</a></B></td><td>
Ім’я: <B>$dtk[0]</B> Емайл: <B>$dtk[1]</B> Коментарій: <B>$dtk[2]</B> Оцінка: $dtk[4]</td></tr></table>";}
print "</TD></TR>";
}
}
if ($dt[4]=="Н") {$itogos++;}
} while($a1 > $u);
$itogop=$i-$itogos;
print "</TBODY></TABLE><BR><TABLE cellPadding=0 cellSpacing=0 width=98%><TBODY><TR>
<TD align=left width=50%>Сторінки: ";
for($pi=0; $pi<$i;) {$ii=1+$pi/$qq; if ($page==$pi) {print "<B>$ii</B></a> ";} else {print "<a href=\"admin.php?pswrd=$password&event=topic&id=$id&page=$pi\"><B>$ii</B></a> ";} $pi=$pi+$qq;}
print "<TD align=right width=50%>Всього заявок: <B>$i</B>. </TD>
</TD></TR></TBODY></TABLE>";
}
else {print "$shapka <center><font size=2><BR><BR>Заявок немає.<BR><BR><a href='add.php'>Додати заявку</a><BR><BR><a href='admin.php?pswrd=$password'>Повернутися</a><BR><BR><BR>";}
print "</font></center></td></tr></table><center>";
// .P.
if (isset($_GET['topicrd'])) {
$topicrd=$_GET['topicrd'];
$lines = file("$datadir/$id.dat");
$a1=$topicrd+1;
$u=$a1+1;
do {$a1--; $dt = explode("|", $lines[$a1]); $dt[5]=str_replace("<br>", "\r\n", $dt[5]);} while($a1 > $u);
$deldate=date("d.m.Y",$dt[7]);
$tekdt=mktime();
$deldays=round(($dt[7]-$tekdt)/86400);
print"<center><TABLE bgColor=#aaaaaa cellPadding=2 cellSpacing=1>
<FORM action='admin.php?pswrd=$password&event=rdmsgintopic&topicrd=$topicrd' method=post name=addForm>
<TBODY>
<TR><TD align=middle bgColor=#cccccc colSpan=2>Редагувати заявку</TD>
</TR><TR>";
print "<TD bgColor=#eeeeee>Ваше ім’я:</TD><TD bgColor=#eeeeee><B>$dt[2]</B>
</td></tr><tr><TD bgColor=#eeeeee>Категорія:</TD><TD bgColor=#eeeeee><SELECT name=newrubrika style='FONT-SIZE: 12px; WIDTH: 270px'>";
$tdt=explode("[ktname]", $dt[1]);
$lines=file("$datadir/$datafile"); $imax=count($lines); $i="0"; $r="0";
do {$dtt=explode("|", $lines[$i]);
if ($dtt[1]==$tdt[0]) {$fy="selected";} else {$fy="";}
if ($dtt[1]!="R") {print "<OPTION value=\"$i|$dtt[0]|$r|$dtt[1]|\"$fy> - $dtt[1]</OPTION>\r\n";}
else {$r=$dtt[2]; print "<OPTION value='0|||||' style='color: #CD8181;'>$dtt[2]</OPTION>\r\n";}
$i++;
} while($i < $imax);
print "</SELECT></TD></TR>
<TR><TD bgColor=#ffffff>Назва:<FONT color=#ff0000>*</FONT><BR>(не більше 100 символів)</TD>
<TD bgColor=#ffffff><INPUT name=zag value=\"$dt[3]\" style='FONT-SIZE: 14px; WIDTH: 300px'></TD></TR>
<TR><TD bgColor=#eeeeee>Мітка:<FONT color=#ff0000>*</FONT></TD>
<TD bgColor=#eeeeee>";
if ($dt[4]=="Н") {print "<INPUT name=type type=radio value='Н'checked>Не виконано <INPUT name=type type=radio value='В'>Виконано";}
else {print "<INPUT name=type type=radio value='Н'>Не виконано <INPUT name=type type=radio value='В'checked>Виконано ";}
print "</TD></TR>
<TR><TD bgColor=#ffffff name=msg>Текст:</TD>
<TD bgColor=#ffffff><TEXTAREA name=msg style='FONT-SIZE: 14px; HEIGHT: 200px; WIDTH: 300px'>$dt[5]</TEXTAREA></TD></TR>
<TR><TD bgColor=#eeeeee>Дата і час настання аварії:<FONT color=#ff0000>*</FONT><BR></TD>
<TD bgColor=#eeeeee><INPUT name=timez value=\"$dt[14]\" style='FONT-SIZE: 14px; WIDTH: 300px'></TD></TR>
<TR><TD bgColor=#ffffff>Економічні втрати від аварії:<FONT color=#ff0000>*</FONT><BR></TD>
<TD bgColor=#ffffff><INPUT name=moneyz value=\"$dt[15]\" style='FONT-SIZE: 14px; WIDTH: 300px'></TD></TR>
<TR><TD bgColor=#eeeeee>Тривалість простою об'єкта від<br> початку аварії до введення <br>в експлуатацію, годин або діб: <FONT color=#ff0000>*</FONT><BR></TD>
<TD bgColor=#eeeeee><INPUT name=esk value=\"$dt[16]\" style='FONT-SIZE: 14px; WIDTH: 300px'></TD></TR>
<TR><TD bgColor=#ffffff>Заходи, запропоновані комісією<br> з розслідування причин аварії:<FONT color=#ff0000>*</FONT><BR></TD>
<TD bgColor=#ffffff><INPUT name=zaxodu value=\"$dt[17]\"
style='FONT-SIZE: 14px; WIDTH: 300px'></TD></TR>
<TR><TD bgColor=#eeeeee>Термін розміщення заявки:</TD>
<TD bgColor=#eeeeee><SELECT name=days style='FONT-SIZE: 12px'>
<OPTION value=$deldays>ще $deldays днів</OPTION>
<OPTION value=10>7 днів</OPTION>
<OPTION value=15>14 днів</OPTION>
<OPTION value=30>30 днів</OPTION>
<OPTION value=60>60 днів</OPTION>
<OPTION value=90>90 днів</OPTION>
<OPTION value=365>365 днів</OPTION></SELECT>
</TD></TR>
<BR><input type=hidden name=rubrn value=\"$dt[0]\">
<input type=hidden name=rubka value=\"$dt[1]\">
<input type=hidden name=name value=\"$dt[2]\">
<input type=hidden name=id value=\"$id\">
<input type=hidden name=fnomer value=\"$topicrd\">
<input type=hidden name=vip value=\"$dt[9]\">
<input type=hidden name=key value=\"$dt[10]\">
<input type=hidden name=today value=\"$dt[11]\">
<input type=hidden name=gorod value=\"$dt[12]\">
<input type=hidden name=phone value=\"$dt[13]\">
<input type=hidden name=size1 value=\"$dt[18]\">
<TR><TD colspan=2 bgColor=#eeeeee align=middle><INPUT style='FONT-SIZE: 10px; HEIGHT: 20px; WIDTH: 100px' type=submit value=зберегти></TD></TR>
</FORM></TBODY></TABLE>
<SCRIPT language=JavaScript>document.addForm.msg.focus();</SCRIPT><BR>";
}
}
}
//перегляд користувачів
if ($_GET['event']=="userwho") {
$userlines=file("$datadir/usersdat.php");
$ui=count($userlines); $i="1";
$t1="#FFFFFF"; $t2="#EEEEEE";
print"$shapka <BR><table border=1 width=98% align=center cellpadding=3 cellspacing=0 bordercolor=#DDDDDD class=forumline><tr bgcolor=#BBBBBB height=25 align=center>
<td><B>.X.</B></td>
<td><B>Ім’я</B></td>
<td><B>Пароль</B></td>
<td><B>E-mail</B></td>
<td><B>WWW</B></td>
<td><B>Організація</B></td>
<td><B>IP</B></td>
<td><B>Статус</B></td>
</tr>";
do {$tdt=explode("|", $userlines[$i]); $i++;
if ($tdt[10]=="ok") {$user1="<font color=#AAAAAA>звичайний</font>"; $user2="<input type=text name=addvip value='30' style='width: 30px' size=18 maxlength=3><input type=submit name=submit value=' + ' style='width: 20px'>";
} else {
$user1="<font color=#AAAAAA>звичайний</font>";
$vipdays="термін вийшов";
}
print"<tr bgcolor=$t1>
<td align=center><table><tr><td width=10 bgcolor=#FF2244><B><a href='admin.php?pswrd=$password&xduser=$i'>.X.</a></B></td></tr></table></td>
<td><a href=\"tools.php?event=profile&pname=$tdt[0]\">$tdt[0]</a></td>
<td align=center>$tdt[1] </td>
<td><a href=\"mailto:$tdt[2]\">$tdt[2]</a> </td>
<td><a href=\"$tdt[3]\">$tdt[3]</a> </td>
<td>$tdt[6] </td>
<td align=center>$tdt[8] </td>
<td align=center>$user1</td>
</form></tr>";
$t3=$t2; $t2=$t1; $t1=$t3;
} while ($i<$ui);
$ui--;
print "</table><BR>Всього зареєстровано - <B>$ui</B><BR><BR></td></tr></table>";
}
if ($_GET['event'] =="config") { // кфг
if ($sendmail=="1") {$m1="checked"; $m2="";} else {$m2="checked"; $m1="";}
if ($sendmailadmin=="1") {$ma1="checked"; $ma2="";} else {$ma2="checked"; $ma1="";}
if ($flagm1=="1") {$sm1="checked"; $sm2="";} else {$sm2="checked"; $sm1="";}
if ($flagm2=="1") {$sf1="checked"; $sf2="";} else {$sf2="checked"; $sf1="";}
if ($onlyregistr=="1") {$or1="checked"; $or2="";} else {$or2="checked"; $or1="";}
if ($showten>"10") {$st1=""; $st2=""; $st3="checked";} if ($showten=="10") {$st1=""; $st2="checked"; $st3="";} if ($showten<"10") {$st1="checked"; $st2=""; $st3="";}
print "$shapka
<BR><table border=1 width=650 align=center cellpadding=3 cellspacing=0 bordercolor=#DDDDDD class=forumline><tr bgcolor=#BBBBBB height=25 align=center>
<td><B>Змінні</B></td>
<td><B>Значення</B></td></tr>
<form action='admin.php?pswrd=$password&event=confignext' method=post name=REPLIER>
<tr><td>Title<BR> (отображается <B>в title</B>)</td><td><input type=text value='$brdname' name=brdname size=55></tr></td>
<tr><td>Текст на шапці</td><td><input type=text value='$brdmaintext' name=brdmaintext size=55></tr></td>
<tr><td>Відправка "на емайл" листа</td><td><input type=radio name=sendmail value=\"1\"$m1> да <input type=radio name=sendmail value=\"0\"$m2> ні</tr></td>
<tr><td>Емайл адміна / Відправляти листа</td><td><input type=text value='$adminemail' name=adminemail size=30> <input type=radio name=sendmailadmin value=\"1\"$ma1> да <input type=radio name=sendmailadmin value=\"0\"$ma2> ні</tr></td>
<tr><td>Пароль адміна</td><td><input type=text value='$password' name=password size=15></tr></td>
<tr><td>Додавати заявки можно тільки <B>зареєстрованим користувачам?</B></td><td><input type=radio name=onlyregistr value=\"1\"$or1> да <input type=radio name=onlyregistr value=\"0\"$or2> ні - можно всім</td></tr>
<tr><td>при автоделетед корегувати лічильники?</td><td><input type=radio name=flagm1 value=\"1\"$sm1> да <input type=radio name=flagm1 value=\"0\"$sm2> ні</tr></td>
<tr><td>+1 до лічильника при додані заявки</td><td><input type=radio name=flagm2 value=\"1\"$sf1> да <input type=radio name=flagm2 value=\"0\"$sf2> ні</tr></td>
<tr><td>Показувати нові заявки на главній?</td><td><input type=radio name=showten value='0'$st1> ні <input type=radio name=showten value='10'$st2> останні 10 </tr></td>
<tr><td>Скільки символів в категорії макс?</td><td><input type=text value='$maxzag' name=maxzag size=10></tr></td>
<tr><td>Макс символів в імені?</td><td><input type=text value='$maxname' name=maxname size=10></tr></td>
<tr><td>Макс. символів в тексту заяви</td><td><input type=text value='$maxmsg' name=maxmsg size=10></tr></td>
<tr><td>Макс. термін показу</td><td><input type=text value='$maxdays' name=maxdays size=10></tr></td>
<tr><td>Заявок на сторінку</td><td><input type=text value='$qq' name=qq size=10></tr></td>
<tr><td>БД </td><td><input type=text value='$datadir' name=datadir size=20> Завжди: "<B><U>./data</U></B>".</tr></td>
<tr><td>Стовбчики</td><td><input type=text value='$colrub' name=colrub size=10></tr></td>
</select></nobr></tr></td>
<input type=hidden name=addrem value='0'>
<input type=hidden name=fotoadd value='0'>
<input type=hidden name=fotodir value='$fotodir'>
<input type=hidden name=max_file_size value='$max_file_size'>
<tr><td colspan=2><BR><center><input type=submit value='Зберегти'>
<input type=hidden name=datafile value=$datafile>
</form></td></tr></table><BR></td></tr></table>";
}
if ($_GET['event'] =="confignext") { // Сейв КФГ
$configdata="<? ".
"$"."brdname=\"".$_POST['brdname']."\"; // тайтл\r\n".
"$"."brdmaintext=\"".$_POST['brdmaintext']."\"; // перед тайтлом\r\n".
"$"."password=\"".$_POST['password']."\"; // пароль адм\r\n".
"$"."sendmail=\"".$_POST['sendmail']."\"; // тестовий сенд майл\r\n".
"$"."sendmailadmin=\"".$_POST['sendmailadmin']."\"; // отправка адміну листів?\r\n".
"$"."adminemail=\"".$_POST['adminemail']."\"; // Емайл адміна\r\r\n".
"$"."fotoadd=\"".$_POST['fotoadd']."\"; // фото не доробив \r\n".
"$"."fotodir=\"".$_POST['fotodir']."\"; // фото не доробив\r\n".
"$"."max_file_size=\"".$_POST['max_file_size']."\"; // фото не доробив\r\r\n".
"$"."flagm1=\"".$_POST['flagm1']."\"; // корекція 1/0\r\n".
"$"."flagm2=\"".$_POST['flagm2']."\"; // +1 1/0\r\n".
"$"."showten=\"".$_POST['showten']."\"; // топ-10\r\n".
"$"."onlyregistr=\"".$_POST['onlyregistr']."\"; //подавати зареєстрованим або читачам?\r\n".
"$"."maxzag=\"".$_POST['maxzag']."\"; // Макс.символів категорії\r\n".
"$"."maxname=\"".$_POST['maxname']."\"; // Макс символів в імені?\r\n".
"$"."maxmsg=\"".$_POST['maxmsg']."\"; // Макс. символів в тексту заяви\r\n".
"$"."maxdays=\"".$_POST['maxdays']."\"; // Макс. термін показу\r\n".
"$"."qq=\"".$_POST['qq']."\"; // КЗаявок на сторінку\r\n".
"$"."colrub=\"".$_POST['colrub']."\"; // стовбчики\r\n".
"$"."brdskin=\"1-4-lite\"; \r\n".
"$"."addrem=\"".$_POST['addrem']."\"; // фото \r\r\n".
"$"."date=date(\"d.m.Y\"); // число.месяц.год\r\n".
"$"."time=date(\"H:i:s\"); // часы:минуты:секунды\r\n".
"$"."datadir=\"".$_POST['datadir']."\"; // БД\r\n".
"$"."datafile=\"".$_POST['datafile']."\"; // Імя БД\r\n".
"$"."back=\"<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'><meta http-equiv='Content-Language' content='ru'></head><body><center>Поверніться <a href='javascript:history.back(1)'><B>назад</B></a>\"; // назад\r\n".
"$"."rubrika=\"\"; // тимчасова змінна \r\n?>";
$file=file("config.php");
$fp=fopen("config.php","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
fputs($fp,$configdata);
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("config.php", 0644);
Header("Location: admin.php?pswrd=$_POST[password]"); exit; }
}
}
} // if isset $event
print"<BR><small>Сьогодні <b>$date</b></small>";
?>
</td></tr></table></td></tr></table>
</body></html>
Tools.php
<?
error_reporting (E_ALL);
include "config.php";
// Функція для ПРОДОЛЖЕННЯ ШАПКИ - закриває ВСі таблиці. Визивається так: addtop();
function addtop() { global $wrboardname;
// якщо в куках є wrboardname, то виводиму імя, або виводимо форму для входа
if (isset($_COOKIE['wrboardname'])) {$wrboardname=$_COOKIE['wrboardname'];}
print"<TD align=right>";
if (isset($wrboardname)) {print "<a href='tools.php?event=profile&pname=$wrboardname'>Ваш Профіль</a> <a href='tools.php?event=clearcooke'>Вихід [<B>$wrboardname</B>]</a> ";}
else {print "<a href='tools.php?event=login'>Вхід в систему</a> | <a href='tools.php?event=reg'>Реєстрація</a> ";}
print"</TD></TR></TABLE></TD></TR></TABLE>
<TABLE cellPadding=0 cellSpacing=0 width=100%><TR><TD><IMG height=8 src=images/blank.gif></TD></TR></TABLE>";
return true; }
if (!is_file("images/$brdskin/top.html")) {$topurl="images/top.html";} else {$topurl="images/$brdskin/top.html";}
// в tools.php використовуємо усі дії з $event
if(isset($_GET['event'])) {
if ($_GET['event']=="login") {
include "$topurl"; addtop(); //
print"<BR><BR><center>
<TABLE class=bakfon cellPadding=3 cellSpacing=1>
<FORM action='tools.php?event=regenter' method=post>
<TR class=toptable><TD align=middle colSpan=2><B>Вхід в систему</B></TD></TR>
<TR class=row1><TD>Ім’я:</TD><TD><INPUT name=myname class=miniinput></TD></TR>
<TR class=row2><TD>Пароль:</TD><TD><INPUT type=password name=mypassword class=miniinput></TD></TR>
<TR class=row1><TD colspan=2><center><INPUT type=submit class=longok value=Вхід></TD></TR></TABLE></FORM>";
print "<BR><BR><BR>
<TABLE class=bakfon cellPadding=3 cellSpacing=1>
<FORM action='tools.php?event=givmepassword' method=post>
<TR class=toptable><TD align=middle colSpan=3><B>Забули пароль?</B></TD></TR>
<TR class=row1><TD> <B>Введіть EMAIL</B> - ім’я і пароль будуть<BR> відправлені Вам на пошту.</TD>
<TD><INPUT name=myemail class=maininput></TD>
<TD><INPUT type=submit class=longok value='Отримати пароль'></TD></TR></TABLE></FORM><BR><BR>";
}
if ($_GET['event']=="regenter") { // перевірка Логіна/Пароля
$myname=strtolower($_POST['myname']); $mypass=$_POST['mypassword'];
$myname=htmlspecialchars($myname); $mypass=htmlspecialchars($mypass);
$myname=stripslashes($myname); $mypass=stripslashes($mypass);
$myname=str_replace("|","I",$myname); $mypass=str_replace("|","I",$mypass);
$lines=file("$datadir/usersdat.php"); $i=count($lines);
do {$i--; $rdt=explode("|", $lines[$i]);
$emfile=strtolower($rdt[0]);
if ($myname==$emfile & $mypass==$rdt[1]) {
setcookie("wrboardname", $rdt[0], time()+1728000);
setcookie("wrboardpassword", $rdt[1], time()+1728000);
$regenter="$i"; }
} while($i > "1");
if (!isset($regenter)) {print "$back. Ваші данні <B>НЕ вірні</B>!</center>"; exit;}
Header("Location: index.php"); exit; }
// очистка кукі
if ($_GET['event']=="clearcooke") { setcookie("wrboardname", "", time()); setcookie("wrboardpassword", "", time()); print "<script language='Javascript'>function reload() {location = \"index.php\"}; setTimeout('reload()', 0);</script>"; exit;}
if ($_GET['event']=="viewfoto") {$foto=$_GET['foto']; // тест (перегляд фото)
print "<html><head><title>Фото</title></head><body><center><img src='$fotodir/$foto'></body></html>";
exit; }
if ($_GET['event'] =="about") { // ПРАВИЛА
include "$topurl"; addtop();
print "<table align=center width=80%><tr><td><BR><font size=-1>
<center><b>Правила роботи "з сайтом".</b></center><BR><BR>
Зареєструвати аварійну ситуацію в ЖРЕР стало набагато простіше, цей сайт позволяє кожному додати свою заявку на аварійну ситуацію в своєму домі і її обов’язкого переглянуть правцівники ЖРЕРу<BR>
Для розміщення заявки треба"; if ($onlyregistr!=0) {print " <B><a href='tools.php?event=reg'>зареєструватися</a></B>, потім";} print " нажати на силку "<a href='add.php'><B>Зареєструвати аварійну ситуацію</B></a>".<br><br>
Якшо ви забули ім’я або пароль від цього сайту, то треба створити запит на повторну відправку ваших даних через форму <a href='tools.php?event=login'><B>Забули пароль?</B></a>
<br><br><br>
<font color=navy><B>На сайті дозволено:</B></font><BR>
- додавати заяву грамотно і без помилок. <br>
- додавати заяви на термін від <B>7 до 90</B> днів.<BR><BR>
<font color=red></font>
<font color=red><B>На сайті заборонено:</B></font><BR>
- додавати одну і ту саму заяву в різні розділи!<BR>
- додавати заяву яка не відповідає тематиці розділу.<BR>
- додавати заяву без вказівки ваших контактних даних (емайл, телефон).<BR>
- додавати заяву яка містить ненормативну лексику.<BR>
- додавати заяву яка містить рекламних характер.<BR>
<BR>
</td></tr></table>";
}
if ($_GET['event'] =="givmepassword") { // відправка даних на мило
if ($sendmail=="0") {print"$back.<B>Вибачьте, але відправка листів заборонено адміністратором!"; exit;}
$myemail=strtolower($_POST['myemail']);
$lines=file("$datadir/usersdat.php");
$i = count($lines);
$regenter="";
do {$i--; $rdt=explode("|", $lines[$i]);
// свіряємо дані
if ($myemail==$rdt[2]) {$myname=$rdt[0]; $mypassword=$rdt[1];}
} while($i > "1");
// відправка даних на мило
if (isset($myname)) {
$headers=null; // Настройки
$headers.="Content-Type: text/plan; charset=windows-1251\r\n";
$headers.="From: <".$adminemail.">\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
$boardurl="http://$host$self";
$boardurl=str_replace("tools.php", "index.php", $boardurl);
$allmsg=$brdname.' (Дані зареєстрації)'.chr(13).chr(10).
'Ви запросили ім’я і пароль від сайта ЖРЕРу: '.$boardurl.chr(13).chr(10).chr(13).chr(10).
'Ваше ім’я: '.$myname.chr(13).chr(10).
'Ваш пароль: '.$mypassword.chr(13).chr(10).chr(13).chr(10).chr(13).chr(10).
'Цей лист сгенерований роботом, відповідати не обо’язково'.chr(13).chr(10);
mail("$myemail", "$brdname (Ваші дані)", $allmsg, $headers);
$msgtoopr="<B>$myname</B>, на ваш Е-майл відправлено лист з вашими даними.";
}
else {$msgtoopr="<B>Користувача з таким емайлом</B><BR> на нашому сайті <B>не знайдено!</B>";}
print "<html><body><script language='Javascript'>function reload() {location = \"index.php\"}; setTimeout('reload()', 1500);</script>
<BR><BR><BR><center><table border=1 cellpadding=10 cellspacing=0 bordercolor=#224488 width=300><tr><td><center>
$msgtoopr Через декілька секунд ви будете відправлені на головну сторінку.
Якшо цього не відбулось, натисніть <B><a href='index.php'>тут</a></B>.</td></tr></table></center><BR><BR><BR></body></html>";
exit;
}
// відправка користувачу (тест)
if ($_GET['event']=="mailto") {
if ($sendmail!="1") {print"$back. <center><B>Вибачте, відправка листів віключена адміністратором!<BR><BR><BR><a href='' onClick='self.close()'>Закрити вікно</b></a></center>"; exit;}
$uemail=$_GET['email'];
$uname=$_GET['name'];
if (isset($_GET['fid'])) {$fid=$_GET['fid'];}
if (isset($_GET['id'])) {$id=$_GET['id'];}
print "<html><head><title>Відправка листа</title></head><body>
<center><TABLE bgColor=#aaaaaa cellPadding=2 cellSpacing=1>
<FORM action='tools.php?event=mailtogo' method=post>
<TBODY><TR><TD align=middle bgColor=#cccccc colSpan=2>Відправка листа <B>$uname</B></TD></TR>
<TR bgColor=#ffffff><TD>Ваше ім’я:<FONT color=#ff0000>*</FONT><BR></TD>
<TD><INPUT name=name style='FONT-SIZE: 14px; WIDTH: 250px'></TD></TR>
<TR bgColor=#ffffff><TD>Ваш E-mail:<FONT color=#ff0000>*</FONT></TD>
<TD><INPUT name=email style='FONT-SIZE: 14px; WIDTH: 250px'></TD></TR>
<TR bgColor=#ffffff><TD>Повідомлення:<FONT color=#ff0000>*</FONT></TD>
<TD><TEXTAREA name=msg style='FONT-SIZE: 14px; HEIGHT: 250px; WIDTH: 250px'></TEXTAREA></TD></TR>
<INPUT type=hidden name=uemail value=$uemail><INPUT type=hidden name=uname value=$uname>";
if (isset($_GET['id'])) {print"<INPUT type=hidden name=id value=$id><INPUT type=hidden name=fid value=$fid>";}
print"<TR><TD bgColor=#FFFFFF colspan=2><center><INPUT type=submit value=Відправити></TD></TR></TBODY></TABLE>
</FORM>"; exit;
}
// ШАГ 2 відправка юзерам з сайту
if ($_GET['event']=="mailtogo") {
$name=$_POST['name'];
$email=$_POST['email'];
$msg=$_POST['msg'];
if (isset($_POST['fid'])) {$fid=$_POST['fid'];}
if (isset($_POST['id'])) {$id=$_POST['id'];}
$uname=$_POST['uname'];
$uemail=$_POST['uemail'];
if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $email) and strlen($email) > 30 and $email != "") {print "$back введіть коректний Email-адресс!</B></center>"; exit;}
if ($name=="") {print "$back Ви не вказали ваше ім’я!</B></center>"; exit;}
if ($msg=="") {print "$back Повідомлення пусте!</B></center>"; exit;}
$text="$name|$msg|$uname|";
$text=htmlspecialchars($text);
$text=stripslashes($text);
$text=str_replace("\r\n","<br>",$text);
$exd=explode("|",$text); $name=$exd[0]; $msg=$exd[1]; $uname=$exd[2];
$headers=null;
$headers.="Content-Type: text/html; charset=windows-1251\r\n";
$headers.="From: Адміністратор <".$adminemail.">\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
$boardurl="http://$host$self";
if (isset($_POST['fid'])) {$apurl="index.php?fid=$fid&id=$id";} else {$apurl="tools.php?event=profile&pname=$uname";}
$boardurl=str_replace("tools.php", "", $boardurl);
$allmsg="<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'><meta http-equiv='Content-Language' content='ru'>
</head><body>
<BR><BR><center>$uname, це повідомлення відправлено з сайта ЖРЕРу <BR><B>$brdname</B><BR><BR>
<table cellspacing=0 width=700 bgcolor=navy><tr><td><table cellpadding=6 cellspacing=1 width='100%'>
<tr bgcolor=#F7F7F7><td width=130 height=24>Ім’я</td><td>$name</td></tr>
<tr bgcolor=#F7F7F7><td>E-mail:</td><td><font size='-1'>$email</td></tr>
<tr bgcolor=#F7F7F7><td>Повідомлення:</td><td><BR>$msg<BR></td></tr>
<tr bgcolor=#F7F7F7><td>Дата отправки:</td><td>$time - <B>$date г.</B></td></tr>
<tr bgcolor=#F7F7F7><td>Відправлено з сторінки:</td><td><font size=-1><a href='$boardurl$apurl'>$boardurl$apurl</a></font></td></tr>
<tr bgcolor=#F7F7F7><td>Перейти на головну сторінку:</td><td><a href='$boardurl'>$boardurl</a></td></tr>
</table></td></tr></table></center><BR><BR>* Повідомлення сгенеровано автоматично, відповідати не обов’язково
</body></html>";
mail("$uemail", "Отзив на вашу заявку ($brdname) от $name ", $allmsg, $headers);
print "<div align=center><BR><BR><BR>Ваше повідомлення <B>успішно</B> відправлено.<BR><BR><BR><a href='' onClick='self.close()'><b>Закрити вікно</b></a></div>";
exit; }
if ($_GET['event'] =="reg") {
if (isset($_COOKIE['wrboardname'])) {print "<B>Вийдіть з профайла, щоби знову зареєструватись</B></font>"; exit;}
include "$topurl"; addtop(); //
print "<BR><center><TABLE class=bakfon cellPadding=2 cellSpacing=1>
<FORM action='tools.php?event=reguser' method=post>
<TBODY><TR height=25 class=toptable><TD align=middle colSpan=2><B>Реєстрація</B></TD></TR>
<TR class=row2><TD>Ім’я:<FONT color=#ff0000>*</FONT></TD><TD><INPUT name=login class=maxiinput maxlength=25></TD></TR>
<TR class=row1><TD>Пароль:<FONT color=#ff0000>*</FONT></TD><TD><INPUT name=password class=maxiinput type=password maxlength=25></TD></TR>
<TR class=row2><TD>E-mail:<FONT color=#ff0000>*</FONT></TD><TD><INPUT name=email class=maxiinput maxlength=40></TD></TR>
<TR class=row1><TD>Місто:</TD><TD><INPUT name=gorod class=maxiinput maxlength=60></TD></TR>
<TR class=row2><TD>Телефон:</TD><TD><INPUT name=phone class=maxiinput maxlength=20></TD></TR>
<TR class=row1><TD>Організація:</TD><TD><INPUT name=company class=maxiinput maxlength=50></TD></TR>
<TR class=row2><TD>Коротко про себе:</TD><TD><TEXTAREA name=about class=maxiinput></TEXTAREA></TD></TR>
<TR class=row1><TD colSpan=2><INPUT type=checkbox name=rules>З <B><A href='tools.php?event=about'>правилами</A></B> ознайомлений(-на)</TD></TR></TR>
<TR class=row1 height=36><TD colspan=2><center><INPUT class=longok type=submit value=Зареєструватись></TD></TR></TBODY></TABLE>
</FORM>";
}
if ($_GET['event'] =="reguser") {
if (isset($_POST['login'])) {$login=$_POST['login'];} else {$login="";}
$password=$_POST['password'];
$email=$_POST['email']; $email=strtolower($email);
$gorod=$_POST['gorod'];
$url=$_POST['url'];
$icq=$_POST['icq'];
$phone=$_POST['phone'];
$company=$_POST['company'];
$about=$_POST['about'];
if (!isset($_POST['rules'])) {print"$back. Треба <B>погодитися з правилами.</B>"; exit;}
$ip=$_SERVER['REMOTE_ADDR']; // IP юзера
$status="ok";
$login=str_replace("|","I",$login);
$password=str_replace("|","I",$password);
$email=str_replace("|","I",$email);
$gorod=str_replace("|","I",$gorod);
$url=str_replace("|","I",$url);
$icq=str_replace("|","I",$icq);
$phone=str_replace("|","I",$phone);
$company=str_replace("|","I",$company);
$about=str_replace("|","I",$about);
if (isset($_COOKIE['wrboardname'])) {print "<B>Вийдіть з профайла, щоби знову зареєструватись!</B></font>"; exit;}
if (strlen($login)<1 || strlen($login)>$maxname) {print "$back ваше ім’я пусте, або перевищує $maxname символів!</B></center>"; exit;}
if (strlen($password)<1 || strlen($password)>15) {print "$back ви не вказали пароль!</B> Або він перевищує 15 символів.</center>"; exit;}
if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$",$email) and $email != "") {print "$back введіть коректний E-mail адрес!</B></center>"; exit;}
$text="$login|$password|$email|$url|$icq|$phone|$company|$about|$ip|$date|$status|$gorod||||";
$text=str_replace(" ",' ',$text);
$text=str_replace("&",'&',$text);
$text=str_replace("<!--",'<!--',$text);
$text=str_replace("-->",'-->',$text);
$text=preg_replace("/<script/i",'<script',$text);
$text=str_replace(">",'>',$text);
$text=str_replace("<",'<',$text);
$text=str_replace("\"",'"',$text);
$text=preg_replace("/\n\n/",'<p>',$text);
$text=preg_replace("/\n/",'<br>',$text);
$text=preg_replace("/\\\$/",'$',$text);
$text=preg_replace("/\r/",'',$text);
$text=stripslashes($text);
$text=preg_replace( "/\\\/",'\',$text);
$text=str_replace("\r\n","<br>", $text);
$text=str_replace("\n\n",'<p>',$text);
$text=str_replace("\n",'<br>',$text);
$text=str_replace("\t",' ',$text);
$text=str_replace("\r",' ',$text);
$text=str_replace(' ',' ',$text);
$textdt=explode("|", $text);
$login=$textdt[0]; $password=$textdt[1]; $email=$textdt[2]; $url=$textdt[3];
$icq=$textdt[4]; $phone=$textdt[5]; $company=$textdt[6]; $about=$textdt[7];
$ip=$textdt[8]; $gorod=$textdt[11];
$loginsm=strtolower($login);
$lines=file("$datadir/usersdat.php"); $i = count($lines);
do {$i--; $rdt=explode("|", $lines[$i]);
$rdt[0]=strtolower($rdt[0]);
if ($rdt[0]===$loginsm) {$bad="1"; $er="логіном";}
if ($rdt[2]===$email) {$bad="1"; $er="емайлом";}
} while($i > "1");
if (isset($bad)) {print "$back. Користувач з таким іменем <B>$er вже зареєстрований</B>!</center>"; exit;}
$fp=fopen("$datadir/usersdat.php","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);//очистка буфера
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/usersdat.php", 0644);
//кукі
setcookie("wrboardname", $login, time()+1728000);
setcookie("wrboardpassword", $password, time()+1728000);
if ($sendmail=="1") { // відправка даних на мило
$headers=null; // настройки
$headers.="Content-Type: text/html; charset=windows-1251\r\n";
$headers.="From: Адмінітратор <".$adminemail.">\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
$boardurl="http://$host$self";
$boardurl=str_replace("tools.php", "index.php", $boardurl);
$allmsg="<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<style>BODY {FONT-FAMILY: verdana,arial,helvetica; FONT-SIZE: 13px;} TD {FONT-SIZE: 12px;}</style></head>
<body><center><h4>Доска объявлений \"<B><a href='$boardurl'>$brdname</a></B>\"</h4>
<table border=1 cellpadding=6 cellspacing=0 width=550 bordercolor='#DBDBDB'>
<tr><td colspan=2 align=center bgcolor='#E4E4E4'><B>Регистрационные данные</B></td></tr>
<tr bgcolor='#F2F2F2'><td width=130>Ваше ім’я:</td><td width=420><B>$login</B></td></tr>
<tr bgcolor='#F8F8F8'><td>Пароль:</td><td><B>$password</B></td></tr>
<tr bgcolor='#F2F2F2'><td>E-mail:</td><td><B>$email</B></td></tr>
<tr bgcolor='#F8F8F8'><td>Місто:</td><td>$gorod </td></tr>
<tr bgcolor='#F2F2F2'><td>Організація:</td><td>$company </td></tr>
<tr bgcolor='#F8F8F8'><td>Телефон:</td><td>$phone </td></tr>
<tr bgcolor='#F2F2F2'><td>Про себе:</td><td>$about </td></tr>
<tr bgcolor='#F8F8F8'><td>Дата реєстрації:</td><td><small>$time</small> - $date г. </td></tr>
<tr bgcolor='#F2F2F2'><td>Ваша IP-адреса:</td><td>$ip </td></tr>
</table><BR><center>Ви <B><font color=navy>успішно зареєстровані</font></B><BR><BR>
<a href='$boardurl'>Перейти на сайт</a><BR><BR><BR>
* Це повідомлення сгенеровано автоматично, відповідати не обов’язково..</body></html>";
mail("$email", "Дані регістрації ($brdname)", $allmsg, $headers);
if ($sendmailadmin=="1") {mail("$adminemail", "Новий користувач ($brdname)", $allmsg, $headers);}
} // if ($sendmail==1)
print "<html><body><script language='Javascript'>function reload() {location = \"index.php\"}; setTimeout('reload()', 2500);</script>
<table width=100% height=80%><tr><td><table border=1 cellpadding=10 cellspacing=0 bordercolor=#888888 align=center valign=center width=60%><tr><td><center>
<B>$login</B>, Ви успішно зареєстровані. <BR>На ваш електроний адрес відправлені дані які ви тут вказали. <BR>Через декілька секунд Ви будете автоматично переадресовані на головну сторінку.<BR>
<B><a href='index.php'>Натисніть тут, якшо не хочете чекати</a></B></td></tr></table></td></tr></table></center></body></html>";
exit;
}
if ($_GET['event'] =="reregistr") {
$login=$_POST['login'];
$oldpass=$_POST['oldpass'];
$password=$_POST['password'];
$email=$_POST['email']; $email=strtolower($email);
$gorod=$_POST['gorod'];
$url=$_POST['url'];
$icq=$_POST['icq'];
$phone=$_POST['phone'];
$company=$_POST['company'];
$about=$_POST['about'];
$ip=$_SERVER['REMOTE_ADDR'];
if ($login==="" || strlen($login)>$maxname) {print "$back ваше ім’я пустоє, або перевищує $maxname символів!</B></center>"; exit;}
if ($password==="" || strlen($password)>15) {print "$back ви не вказали пароль!</B></center>"; exit;}
$lines=file("$datadir/usersdat.php");
$i = count($lines);
$lines=file("$datadir/usersdat.php"); $i=count($lines);
do {$i--; $rdt=explode("|", $lines[$i]);
if (strtolower($login)===strtolower($rdt[0]) & $oldpass===$rdt[1]) {$ok="$i";}
else { if ($email===$rdt[2]) {$bademail="1"; } }
} while($i > "1");
if (!isset($ok)) {setcookie("wrboardname", "", time()); setcookie("wrboardpassword", "", time());
print "$back Ваш новий логін /пароль / Емайл не зпівпадає Ні з одним з БД. <BR><BR>
Зміна електроного адреса <font color=red><B>заборонена</B></font><BR><BR>
<font color=red><B>Ошибка - напишіть адміністратору.</B></font>"; exit;}
if (isset($bademail)) {print "$back. Користувач з EMAIL <B>$email уже зареєстрований</B> на сайті! <BR></center>"; exit;}
$udt=explode("|",$lines[$ok]); $status=$udt[10]; $dayx=$udt[12];
$login=str_replace("|","I",$login);
$password=str_replace("|","I",$password);
$email=str_replace("|","I",$email);
$url=str_replace("|","I",$url);
$icq=str_replace("|","I",$icq);
$phone=str_replace("|","I",$phone);
$company=str_replace("|","I",$company);
$about=str_replace("|","I",$about);
$gorod=str_replace("|","I",$gorod);
$text="$login|$password|$email|$url|$icq|$phone|$company|$about|$ip|$date|$status|$gorod|$dayx|||";
$text=str_replace(" ",' ',$text);
$text=str_replace("&",'&',$text);
$text=str_replace("<!--",'<!--',$text);
$text=str_replace("-->",'-->',$text);
$text=preg_replace("/<script/i",'<script',$text);
$text=str_replace(">",'>',$text);
$text=str_replace("<",'<',$text);
$text=str_replace("\"",'"',$text);
$text=preg_replace("/\n\n/",'<p>',$text);
$text=preg_replace("/\n/",'<br>',$text);
$text=preg_replace("/\\\$/",'$',$text);
$text=preg_replace("/\r/",'',$text);
$text=stripslashes($text);
$text=preg_replace( "/\\\/",'\',$text);
$text=str_replace("\r\n","<br>", $text);
$text=str_replace("\n\n",'<p>',$text);
$text=str_replace("\n",'<br>',$text);
$text=str_replace("\t",' ',$text);
$text=str_replace("\r",' ',$text);
$text=str_replace(' ',' ',$text);
$textdt=explode("|", $text);
$login=$textdt[0]; $password=$textdt[1]; $email=$textdt[2]; $url=$textdt[3];
$icq=$textdt[4]; $phone=$textdt[5]; $company=$textdt[6]; $about=$textdt[7];
$ip=$textdt[8]; $date=$textdt[9]; $status=$textdt[10]; $gorod=$textdt[11];
$file=file("$datadir/usersdat.php");
$fp=fopen("$datadir/usersdat.php","a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
for ($i=0;$i< sizeof($file);$i++) {if ($ok!=$i) {fputs($fp,$file[$i]);} else {fputs($fp,"$text\r\n");}}
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/usersdat.php", 0644);
setcookie("wrboardname", $login, time()+1728000);
setcookie("wrboardpassword", $password, time()+1728000);
if ($sendmail =="1") {
$headers=null;
$headers.="Content-Type: text/html; charset=windows-1251\r\n";
$headers.="From: Администратор <".$adminemail.">\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
$boardurl="http://$host$self";
$boardurl=str_replace("tools.php", "index.php", $boardurl);
$allmsg="<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<style>BODY {FONT-FAMILY: verdana,arial,helvetica; FONT-SIZE: 13px;} TD {FONT-SIZE: 12px;}</style></head>
<body><center><h4>Доска объявлений \"<B><a href='$boardurl'>$brdname</a></B>\"</h4>
<table border=1 cellpadding=6 cellspacing=0 width=550 bordercolor='#DBDBDB'>
<tr><td colspan=2 align=center bgcolor='#E4E4E4'><B>Регистрационные данные</B></td></tr>
<tr bgcolor='#F2F2F2'><td width=130>Ваше ім’я:</td><td width=420><B>$login</B></td></tr>
<tr bgcolor='#F8F8F8'><td>Пароль:</td><td><B>$password</B></td></tr>
<tr bgcolor='#F2F2F2'><td>E-mail:</td><td><B>$email</B></td></tr>
<tr bgcolor='#F8F8F8'><td>Місто:</td><td>$gorod </td></tr>
<tr bgcolor='#F2F2F2'><td>Організація:</td><td>$company </td></tr>
<tr bgcolor='#F8F8F8'><td>Телефон:</td><td>$phone </td></tr>
<tr bgcolor='#F2F2F2'><td>Про себе:</td><td>$about </td></tr>
<tr bgcolor='#F8F8F8'><td>Дата реєстрації:</td><td><small>$time</small> - $date г. </td></tr>
<tr bgcolor='#F2F2F2'><td>Ваша IP-адреса:</td><td>$ip </td></tr>
</table><BR><center>Ви <B><font color=navy>успішно зареєстровані</font></B><BR><BR>
<a href='$boardurl'>Перейти на сайт</a><BR><BR><BR>
* Це повідомлення сгенеровано автоматично, відповідати не обов’язково..</body></html>";
mail("$email", "Данные перерегистрации ($brdname)", $allmsg, $headers); // МЫЛИМ письмо
}
print "<html><body><script language='Javascript'>function reload() {location = \"index.php\"}; setTimeout('reload()', 1500);</script>
<table width=100% height=80%><tr><td><table border=1 cellpadding=10 cellspacing=0 bordercolor=#888888 align=center valign=center width=60%><tr><td><center>
<B>$login</B>, Ваші дані успішно змінені.
<BR>Через декілька секунд вас перекине на головну сторінку.<BR>
<B><a href='index.php'>Натистить тут, щоби не чекати.</a></B></td></tr></table></td></tr></table></center></body></html>";
exit;
}
if ($_GET['event'] =="profile") {
$pname=$_GET['pname'];
$lines=file("$datadir/usersdat.php");
$i = count($lines); $use="0";
do {$i--; $rdt=explode("|", $lines[$i]);
//print"$pname $rdt[0]";
if ($pname===$rdt[0]) {
if (isset($_COOKIE['wrboardname']) & isset($_COOKIE['wrboardpassword'])) {
if ($_COOKIE['wrboardname']===$pname and $_COOKIE['wrboardpassword']===$rdt[1]) {
include "$topurl"; addtop();
$user2="* звичайний користувач.";
if ($rdt[10]=="ok") {$user1="<font color=#AAAAAA>звичайний</font>";
} else {
if ($rdt[12]>0) {$tek=mktime(); $vipdays=round(($rdt[12]-$tek)/86400); $vipdays.=" дн. осталось";} else {$vipdays="всегда";}
$user1="<font color=red><B>VIP-користувач.</B></font>* ($vipdays)";
$user2="* Всі добавлені вами заявки будуть виділятися і будуть завжди на першому місці.";
if ($vipdays<0) {$user1="<font color=#AAAAAA>звичайний</font>"; $user2="";}}
print "<BR><center><TABLE class=bakfon cellPadding=3 cellSpacing=1>
<FORM action='tools.php?event=reregistr' method=post>
<TBODY><TR class=toptable><TD align=middle colSpan=2><B>Реєстраціона інформація</B></TD></TR>
<TR class=row1 height=25><TD>Ім’я:</TD><TD><B>$rdt[0]</B></TD></TR>
<TR class=row2 height=25><TD>Статус:</TD><TD>$user1</TD></TR>
<TR class=row1><TD>Пароль:<FONT color=#ff0000>*</FONT><BR>(не більше 15 символів)</TD><TD><INPUT name=password class=maxiinput value='$rdt[1]' type=password></TD></TR>
<TR class=row2><TD>E-mail:<FONT color=#ff0000>*</FONT></TD><TD><INPUT name=email class=maxiinput value='$rdt[2]'></TD></TR>
<TR class=row1><TD>Місто:</TD><TD><INPUT name=gorod class=maxiinput value='$rdt[11]'></TD></TR>
<TR class=row2><TD>Телефон:</TD><TD><INPUT name=phone class=maxiinput value='$rdt[5]'></TD></TR>
<TR class=row1><TD>Організація:</TD><TD><INPUT name=company class=maxiinput value='$rdt[6]'></TD></TR>
<TR class=row2><TD>Коротко про себе:</TD><TD><TEXTAREA name=about class=maxiinput style='HEIGHT: 70px'>$rdt[7]</TEXTAREA></TD></TR>
<TR class=row1><TD height=30 colspan=2><center><INPUT type=submit class=longok value='Зберегти'></TD></TR></TBODY></TABLE>
$user2
<input type=hidden name=login value='$rdt[0]'>
<input type=hidden name=oldpass value='$rdt[1]'></FORM>"; $use="1";
}}
if ($use!="1") {
include "$topurl"; addtop(); // ШАПКА
print "<BR><center><TABLE class=bakfon width=500 cellPadding=6 cellSpacing=1>
<FORM action='tools.php?event=reguser' method=post>
<TR class=toptable><TD align=middle colSpan=2><B>Реєстраціона інформація</B></TD></TR>
<TR class=row1><TD width=30%>Ім’я:</TD><TD>$rdt[0]</td></tr>
<TR class=row2><TD>Місто:</TD><TD>$rdt[11]</TD></TR>
<TR class=row1><TD>Емайл:</TD><TD><a href='#' onclick=\"window.open('tools.php?event=mailto&email=$rdt[2]&name=$rdt[0]','email','width=400,height=390,left=100,top=100')\">Отправити повідомлення</a></td></tr>
<TR class=row2><TD>Телефон:</TD><TD>$rdt[5]</td></tr>
<TR class=row1><TD>Організація:</TD><TD>$rdt[6]</td></tr>
<TR class=row2><TD>Доп.:</TD><TD>$rdt[7]</td></tr>
</table><BR><BR>"; $use="1";}
} // if ($pname===$rdt[0])
} while($i > "1");
if (isset($_COOKIE['wrboardname']) & isset($_COOKIE['wrboardpassword']) & $use!="1") {
include "$topurl"; addtop();
print"<BR><BR><BR><BR><center><font size=-1><B>Шановний користувач!</B><BR><BR>
Вибачте, такого користувача - <B>на нашому сайті нема</B><BR><BR>
<B>Головна</B> сторінка <B><a href='index.php'>тут</a></B>
<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>"; }
} // $event=="profile"
if ($_GET['event']=="find") { // пошук
setlocale(LC_ALL,'ru_RU.CP1251'); // !
include "$topurl"; addtop(); //
$minfindme="2"; // символи
$time=explode(' ', microtime()); $start_time=$time[1]+$time[0]; //
if (!isset($withregistr)) {$withregistr="0";}
$ftype=$_POST['ftype'];
if (isset($_POST['withregistr'])) {$withregistr="1";} else {$withregistr="0";}
$gdefinder=$_POST['gdefinder'];
$findme=$_POST['findme'];
$findme=stripslashes($findme);
$findmeword=explode(" ",$findme);
$wordsitogo=count($findmeword);
$findme=trim($findme);
if ($findme == "" || strlen($findme) < $minfindme) {print "$back нема результату, або запит має не більше $minfindme символів!</B>"; exit;}
$lines = file("$datadir/$datafile"); $i=count($lines);
$number="0";
do {$i--; $dt=explode("|", $lines[$i]);
$forumsid[$i]=$dt[0];
} while($i > "0");
$ii=count($forumsid);
do {$ii--;
$fid=$forumsid[$ii];
if (is_file("$datadir/$fid.dat")) {$file=file("$datadir/$fid.dat");}
if ((is_file("$datadir/$fid.dat")) && (sizeof($file)>"0"))
{
$iii=count($file); //
$lines = file("$datadir/$fid.dat");
do {$iii--;
$dt = explode("|", $lines[$iii]);
if ($gdefinder=="0") {$msgmass=array($dt[2],$dt[3],$dt[5]); $gi="3"; $add="ях <B>Автор, Текст, Назва</B> ";}
if ($gdefinder=="1") {$msgmass=array($dt[5]); $gi="1"; $add="е <B>Текст</B> ";}
if ($gdefinder=="2") {$msgmass=array($dt[3],$dt[5]); $gi="2"; $add="ях <B>Текст і Назва</B> ";}
if ($gdefinder=="3") {$msgmass=array($dt[2]); $gi="1"; $add="е <B>Автор</B> ";}
if ($gdefinder=="4") {$msgmass=array($dt[3]); $gi="1"; $add="е <B>Назва</B> ";}
//
do {$gi--;
$msg=$dt[5];
$msdat=$msgmass[$gi];
$stroka="0"; $wi=$wordsitogo;
do {$wi--;
if ($withregistr!="1") //
{
if ($ftype=="2")
{
if (stristr($msdat,$findme))
{
$stroka++;
$msg=eregi_replace($findme," <b><u>$findme</u></b> ",$msg);
}
}
else {
$str1=strtolower($msdat);
$str2=strtolower($findmeword[$wi]);
if ($str2!="" and strlen($str2) >= $minfindme)
{
if (stristr($str1,$str2))
{
$stroka++;
$msg=eregi_replace($findmeword[$wi]," <b><u>$findmeword[$wi]</u></b> ",$msg);
}
}
}
}
else // if ($withregistr!="1")
{
if ($ftype=="2")
{
if (strstr($msdat,$findme))
{
$stroka++;
$msg=eregi_replace($findme," <b><u>$findme</u></b> ",$msg);
}
}
else {
if ($msdat!="" and strlen($findmeword[$wi]) >= $minfindme)
{
if (strstr($msdat,$findmeword[$wi]))
{
$stroka++;
$msg=eregi_replace($findmeword[$wi]," <b><u>$findmeword[$wi]</u></b> ",$msg);
}
}
}
} // if ($withregistr!="1")
} while($wi > "0");
if ($ftype=="0") { if ($stroka==$wordsitogo) {$printflag="1";} }
if ($ftype=="1") { if ($stroka>"0") {$printflag="1";} }
if ($ftype=="2") { if ($stroka==$wordsitogo) {$printflag="1";} }
if (!isset($printflag)) {$printflag="0";}
if ($printflag=="1")
{$msg=str_replace("<br>", " ", $msg);
if (strlen($msg)>150)
{
$ma=strpos($msg,"<b>"); if ($ma > 50) {$ma=$ma-50;} else {$ma=0;}
$mb=strrpos($msg,">b/<"); if (($mb+50) > strlen($msg)) {$mb=strlen($msg);} else {$mb=$mb+50;}
$msgtowrite="..."; $msgtowrite.=substr($msg,$ma,$mb); $msgtowrite.="...";
}
else {$msgtowrite=$msg;}
if (!isset($m)) {print "<small><BR>По запиту '<U><B>$findme</B></U>' в пол$add найдено: <HR size=+2 width=99% color=navy><table width=100%><TR class=small bgColor=#cccccc><TD><B>№</B></TD><TD><B>Тип</B></TD><TD width=35%><B>Назва</B></TD><TD><B>Автор</B></TD><TD width=*><B>частина заявок</B></TD></TR>"; $m="1"; }
$number++;
$msgnumber=$iii;
print "<TR height=25 class=small bgColor=#FFFFFF onmouseover=trtover(this) onmouseout=trtout(this)>
<TD align=center><B>$number</B></TD>
<TD><FONT color=#ff3333><B>$dt[4]</B></FONT></TD>
<TD onmouseover=tover(this) onclick=\"LmUp('index.php?fid=$fid&id=$dt[10]')\" onmouseout=tout(this)><A class=listlink href='index.php?fid=$fid&id=$dt[10]'>$dt[3]</A></TD>
<TD onmouseover=tover(this) onmouseout=tout(this) onclick=\"LmUp('tools.php?event=profile&pname=$dt[2]')\"><A class=listlink href='tools.php?event=profile&pname=$dt[2]'>$dt[2]</A></TD>
<TD onclick=\"LmUp('index.php?fid=$fid&id=$dt[10]')\">$msgtowrite</TD></TR>";
$printflag="0";
}
} while($gi > "0");
} while($iii >= "1");
} // if ((is_file("$fid.dat")) && (sizeof("$fid.dat")>0))
} while($ii > "0");
if (!isset($m)) {print "<table width=80% align=center><TR><TD>По вашому запиту нічого не найдено.</TD></TR></table>";}
$time=explode(' ',microtime());
$seconds=($time[1]+$time[0]-$start_time);
echo "</table><HR size=+2 width=99% color=navy><BR><p align=center><small>".str_replace("%1", sprintf("%01.3f", $seconds), "Время поиска: <b>%1</b> секунд.")."</small></p>";
}
} // if isset($event)
else {
include "$topurl"; addtop(); // подключаем ШАПКУ
print"<BR><form action='tools.php?event=find' method=POST>
<table class=forumline align=center width=900 cellpadding=4 cellspacing=0 border=1>
<tr><th class=thHead colspan=4 height=25>Пошук</th></tr><tr>
<td>Запит: <input type='text' style='width: 250px' class=maininput name=findme size=30></TD>
<TD>Тип: <select style='FONT-SIZE: 12px; WIDTH: 120px' name=ftype>
<option value='0'>"І"
<option value='1' selected>"АБО"
<option value='2'>Цілий запит циліком
</select></td>
<td><INPUT type=checkbox name=withregistr><B>Реєстр</B></TD>
<TD>Де шукати: <select style='FONT-SIZE: 12px; WIDTH: 140px' name=gdefinder>
<option value='1' selected>тільки в ТЕКСТі
<option value='4'>тільки в НАЗВІ
<option value='3'>Автори
<option value='2'>В тексті і назві
<option value='0'>Всюди
</select></td>
</tr><tr>
<td colspan=4 width=\"100%\">
Тип запиту:<br><UL>
<LI><B>"І"</B> - можуть бути обидва слова;</LI><br>
<LI><B>"АБО"</B> - є хочаби одне слово;</LI><br>
<LI><B>"Весь запит ціліком"</B> - пошук цілого тексту;</LI><BR><BR>
<LI><B>"Регістр"</B> - пошук веде з включеним РЕГІСТРом;</LI><BR><BR>
Де шукати: <BR>
<LI><B>"тільки в ТЕКСТі"</B> - пошук ведеться тільки в тексті;</LI><br>
<LI><B>"тільки в НАЗВі"</B> - пошук ведеться тільки в назвах заявок;</LI><br>
<LI><B>"Імена автора"</B> - пошук по автору;</LI><br>
<LI><B>"В тексті і назві"</B> - пошук в тексті і назві;</LI><br>
<LI><B>"Всюди"</B> - пошук ведеться в полях "Імена", "Назва", "Текст" кожної заявки;</LI><br>
</UL>
</td>
</tr><tr><td colspan=4 align=center height=28><input type=submit class=longok value='Поиск'></td></form>
</tr></table><BR><BR>";
}
include "images/bottom.html";
?>
<center><small>Powered by KNz-31 Group © 1.0<br></small></center>
</body></html>
Add.php
<?
error_reporting (E_ALL);
include "config.php";
$antiflud="0";
$antispam="1"; // Включити анті-спам
$valid_types = array("gif","jpg","png","jpeg"); // Пока шо тестово, допустимі типи файлу для закачки зображення
// Функція для ПРОДОЛЖЕННЯ ШАПКИ - закриває ВСі таблиці. Визивається так: addtop();
function addtop() { global $wrboardname;
// якщо в куках є wrboardname, то виводиму імя, або виводимо форму для входа
if (isset($_COOKIE['wrboardname'])) {$wrboardname=$_COOKIE['wrboardname'];}
print"<TD align=right>";
if (isset($wrboardname)) {print "<a href='tools.php?event=profile&pname=$wrboardname'>Ваш Профіль</a> <a href='tools.php?event=clearcooke'>Вихід [<B>$wrboardname</B>]</a> ";}
else {print "<a href='index.php?event=login'>Вхід в систему</a> | <a href='tools.php?event=reg'>Реєстрація</a> ";}
print"</TD></TR></TABLE></TD></TR></TABLE>
<TABLE cellPadding=0 cellSpacing=0 width=100%><TR><TD><IMG height=8 src=images/blank.gif></TD></TR></TABLE>";
return true; }
if (!is_file("images/$brdskin/top.html")) {$topurl="images/top.html";} else {$topurl="images/$brdskin/top.html";}
// Додати аварійну ситуацію //
if(isset($_GET['event'])) { if ($_GET['event'] =="add") {
// Перевірка логіна і пароля )
if (isset($_COOKIE['wrboardname']) & isset($_COOKIE['wrboardpassword'])) {
$wrname=strtolower($_COOKIE['wrboardname']); $wrpass=$_COOKIE['wrboardpassword'];
$lines=file("$datadir/usersdat.php"); $i=count($lines);
do {$i--; $rdt=explode("|", $lines[$i]);
$realname=strtolower($rdt[0]);
if ($wrname===$realname & $wrpass===$rdt[1]) {$ok="1";}
} while($i > "1");
if (!isset($ok)) {setcookie("wrboardname", "", time()); setcookie("wrboardpassword", "", time()); print "Ошибка з работою КУКІ! <font color=red><B>Ви не можете зареєструвати заявку</B></font>"; exit;}
}
if (!isset($ok) and $antispam=="1") {$num=$_POST['num']; $rand=$_POST['rand']; if ($num!=$rand) {print"$back <font color=red>Код з картинки не правильний!</font>"; exit;}}
// зщитувач
if (isset($_POST['name'])) {$name=$_POST['name'];} else {$name="";}
if (isset($_POST['email'])) { if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $_POST['email']) or $_POST['email']=="") {print "$back введіть коректний E-mail адрес!</B></center>"; exit;}
$email=$_POST['email'];
$email=htmlspecialchars($email);
$email=stripslashes($email);
$email=str_replace("|","I",$email);
$nameonly=$name; $name.="[email]".$email;}
$dtemp = explode("|", $_POST['rubrika']);
$katnumber=$dtemp[0]; $rname=$dtemp[2]; $katname=$dtemp[3]; $fid=$dtemp[1]; $days=$_POST['days'];
if (!ctype_digit($fid)) {exit("$back і виберіть категорію аварійної ситуації!");}
$katname.="[ktname]".$rname;
if ($katnumber=="0") {print"$back і виберіть категорію аварійної ситуації!"; exit;}
if ($name == "" || strlen($name) > $maxname) {print "$back Ваше <B>ім’я пусте, або перевишає $maxname символів!</B></center>"; exit;}
$zag=$_POST['zag'];
if ($zag == "" || strlen($zag) > $maxzag) {print "$back Ви <B>не ввели назву аварійної ситуації, або він перевищує $maxzag символів!</B></center>"; exit;}
if (isset($_POST['type'])) {$type=$_POST['type'];} else {$type="";}
if ($type == "") {print "$back і виберіть відмітку про виконання заходів (<B>Не виконано</B> или <B>Виконано</B>).</B></center>"; exit;}
if ($type!="В" and $type!="Н") {$type="Н";}
$msg=$_POST['msg'];
if ($msg == "" || strlen($msg) > $maxmsg) {print "$back <B>Причини і стислий опис обставин аврії пустий або перевищає $maxmsg символів.</B></center>"; exit;}
if (isset($_POST['gorod'])) {$gorod=$_POST['gorod'];} else {$gorod="";}
if (isset($_POST['phone'])) {$phone=$_POST['phone'];} else {$phone="";}
if (isset($_POST['timez'])) {$timez=$_POST['timez'];} else {$timez="";}
if (isset($_POST['moneyz'])) {$moneyz=$_POST['moneyz'];} else {$moneyz="";}
if (isset($_POST['esk'])) {$esk=$_POST['esk'];} else {$esk="";}
if (isset($_POST['zaxodu'])) {$zaxodu=$_POST['zaxodu'];} else {$zaxodu="";}
if ($days>$maxdays) {$days=$maxdays;}
$deldt=mktime()+$days*86400; // удалити через стільки то днів
$msg=str_replace("|","I",$msg);
$zag=str_replace("|","I",$zag);
$today=mktime();
$stime=$_POST['stime'];
if (!ctype_digit($stime)) {exit("$back и выбирете категорию!");}
// Порівнюю імя з подавшим об’яву з зареєстрованим іменем
$flag="0"; $status="no"; $namesm=strtolower($name);
$lines=file("$datadir/usersdat.php"); $i=count($lines);
do {$i--; $rdt=explode("|", $lines[$i]);
$rdt[0]=strtolower($rdt[0]);
if ($rdt[0]==$namesm) {$email="$rdt[2]"; $flag="yes";
if ($rdt[12]>0) {$vipdays=round(($rdt[12]-$today)/86400);} else {$vipdays="999";}
if ($rdt[10]==="vip" and $vipdays>0) {$status="vip";}}
} while($i > "1");
if (!isset($_COOKIE['wrboardname']) and $flag=="yes") {print"$back ошибка, користувач з таким іменем вже є.<BR><B>Ви не можете подати заявку від його імені.</B>"; exit;}
if ($antiflud=="1") { // АНТІ СПАМ
$linesn = file("$datadir/$fid.dat"); $in=count($linesn);
if ($in > 0) {
$lines=file("$datadir/$fid.dat"); $i=count($lines)-1; $itogo=$i; $dtf=explode("|",$lines[$i]);
$txtback="$dtf[0]|$dtf[1]|$dtf[2]|$dtf[3]|$dtf[4]|$dtf[5]|";
$txtflud="$katnumber|$katname|$name|$zag|$type|$msg|";
$txtflud=htmlspecialchars($txtflud); $txtflud=stripslashes($txtflud);
$txtflud=str_replace("\r\n","<br>",$txtflud);
if ($txtflud==$txtback) {print"$back Данное объявление уже размещено на доске. Флудить на доске запрещено!"; exit;} }}
// Рандомний код заявки
$z=1; do {$key=mt_rand(10000,99999); if (strlen($key)==5) {$z++;} } while ($z<1);
$text="$katnumber|$katname|$name|$zag|$type|$msg|$date|$deldt|$fid|$status|$key|$today|$gorod|$phone|$timez|$moneyz|$esk|$zaxodu||||||$rname|";
$text=htmlspecialchars($text);
$text=stripslashes($text);
$text=str_replace("\r\n","<br>",$text);
// Очистка тегів!!
$textdt=explode("|", $text);
$katnumber=$textdt[0];
$tdt=explode("[ktname]", $textdt[1]); $katname="$tdt[0]";
$name=$textdt[2];
$zag=$textdt[3];
$type=$textdt[4];
$msg=$textdt[5];
$date=$textdt[6];
$deldt=$textdt[7];
$fid=$textdt[8];
$status=$textdt[9];
$today=$textdt[11];
$gorod=$textdt[12];
$phone=$textdt[13];
$timez=$textdt[14];
$moneyz=$textdt[15];
$esk=$textdt[16];
$zaxodu=$textdt[17];
$smallfoto=$textdt[18];
$foto=$textdt[19];
$fotoksize=$textdt[20];
$fp=fopen("$datadir/$fid.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);//чистка файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$fid.dat", 0644);
// +1 до кол. заявок в категоріях
$lines=file("$datadir/$datafile"); $i=count($lines); $fnomer=$i+1;
do {$i--; $dt=explode("|",$lines[$i]);
if ($fid==$dt[0]) {$fnomer=$i; if ($type=="В") {$dt[3]++;} else {$dt[2]++;} $mtext="$fid|$dt[1]|$dt[2]|$dt[3]|";}
} while($i > 0);
$file=file("$datadir/$datafile");
$fp=fopen("$datadir/$datafile","w");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЄМО СОДЕРЖИМОЄ ФАЙЛ
for ($ii=0;$ii< sizeof($file);$ii++)
{ if ($fnomer!=$ii) {fputs($fp,$file[$ii]);} else {fputs($fp,"$mtext\r\n");} }
fflush ($fp);//очистка файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$datadir/$datafile", 0644);
// добавляємо в 10-20-ку нових заявок
$newmessfile="$datadir/newmsg.dat";
if (is_file($newmessfile)) {
$file=file($newmessfile); $i=count($file);
if ($showten>"0" & $i<$showten) {
$fp=fopen("$newmessfile","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$newmessfile", 0644);
} else {
$fp=fopen($newmessfile,"w");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЄМО СОДЕРЖИМОЄ ФАЙЛА
for ($ii=1;$ii<$showten; $ii++) {fputs($fp,$file[$ii]);}
fputs($fp,"$text\r\n");
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$newmessfile", 0644); }
}
// тестово отправка адміну і користувачу на мило о тому, що заявка добавлена
$headers=null; // Настройки
$headers.="Content-Type: text/html; charset=windows-1251\r\n";
$headers.="From: Адміністратор <".$adminemail.">\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";
$deldate=date("d.m.Y",$deldt); // конвертуємо дату
if (isset($nameonly)) {$name=$nameonly;} // Тестово
// подготовка і вивод на екран шо відправили
if ($type=="В") {$sptype="Не виконано";} else {$sptype="Виконано";}
$msg=str_replace("\r\n", "<br>", $msg);
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
$boardurl="http://$host$self";
$boardurl=str_replace("add.php", "index.php", $boardurl);
// Зібираємо всьо тіло пісьма
$allmsg="<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<style>BODY {FONT-FAMILY: verdana,arial,helvetica; FONT-SIZE: 13px;} TD {FONT-SIZE: 12px;}</style></head>
<body><center><h4>ЖРЕР: Заявка на аварійну ситуацію подана \"<B><a href='$boardurl'>$brdname</a></B>\"</h4>
<table border=1 cellpadding=6 cellspacing=0 width=550 bordercolor='#DBDBDB'>
<tr><td colspan=2 align=center bgcolor='#E4E4E4'><B>Информация</B></td></tr>
<tr bgcolor='#F2F2F2'><td width=117>Ваше ім’я:</td><td width=433><B>$name</B></td></tr>
<tr bgcolor='#F8F8F8'><td>Е-майл:</td><td><B>$email</B></td></tr>
<tr bgcolor='#F2F2F2'><td>Категорія:</td><td> <B>$rname</B> >> <B>$katname</B> >> $sptype</td></tr>
<tr bgcolor='#F8F8F8'><td>Дата створення заявка:</td><td><small>$time</small> - $date г.</td></tr>
<tr bgcolor='#F2F2F2'><td>Дата видалення заявки:</td><td><B>$deldate</B> г.</td></tr>
<tr bgcolor='#F8F8F8'><td>Назва:</td><td><B>$zag</B></td></tr>
<tr bgcolor='#F2F2F2'><td>Причина:</td><td>$msg</td></tr>
</table><center><BR>Ваша заявка <B><font color=navy>успішно розміщена</font></B><BR><BR>
<a href='$boardurl?fid=$fid'>Повернутися в категорії <B>$katname</B></a>";
$printmsg="$allmsg </body></html>";
$allmsg.="<BR><BR><BR>* Це повідомлення згенеровано автоматично, відповідати на нього не подтрібно</body></html>";
if ($sendmail=="1") { // Отправка якшо дозволено
if ($sendmailadmin=="1") {mail("$adminemail", "Нова заявка ($brdname)", $allmsg, $headers);}
if (isset($email) & $flag=="yes") { mail("$email", "Заявка ($brdname)", $allmsg, $headers);} }
// Удаляємо кукі
if (!isset($flag) and $onlyregistr==1) { if (isset($_COOKIE['wrboardname'])) {setcookie("wrboardname", "", time()); setcookie("wrboardpassword", "", time()); }}
print "<script language='Javascript'>function reload() {location = \"index.php?fid=$fid\"}; setTimeout('reload()', 2000);</script>$printmsg"; exit;
}
}
//} // if is_file ("$fid.dat")
else { // ГОЛОВНА СТОРІНКА
$rubrika="Реєстрації аварійних ситуацій";
include "$topurl"; addtop(); // подключаємо ШАПКУ
if ($onlyregistr=="1" and !isset($wrboardname))
{ print"<BR><BR><BR><BR><BR><center><font size=-1><B>Шановні користувачі!</B><BR><BR>
На нашому сайті ви можете подати заявку на реєстрацію аварійної ситуації в ЖРЕР<BR><BR><B> Без реєстрації <font color=#FF0000> заборонено!</B></font><BR><BR>
Зареєструватися можно по <B><a href='tools.php?event=reg'>цій ссилці</a></B><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>"; }
else {
if (isset($_GET['fid'])) {$fid=$_GET['fid'];} else {$fid="";}
$today=mktime();
print"<center><TABLE class=bakfon cellPadding=2 cellSpacing=1>
<FORM action='add.php?event=add' method=post name=addForm enctype=\"multipart/form-data\">
<TBODY>
<TR class=toptable><TD height=23 align=middle colSpan=2><B>$rubrika</B></TD></TR>";
print "
<tr class=row1><TD>Категорія і характер аварії:</TD><TD>
<SELECT name=rubrika class=maxiinput>
";
// Блок зщитує всі категорії
$lines=file("$datadir/$datafile"); $imax=count($lines); $i="0"; $r="0";
do {$dt=explode("|", $lines[$i]);
if ($fid==$dt[0]) {$fy="selected";} else {$fy="";}
if ($dt[1]!="R") {print "<OPTION value=\"$i|$dt[0]|$r|$dt[1]|\"$fy> - $dt[1]</OPTION>\r\n";}
else {$r=$dt[2]; print "<OPTION value='0|||||' style='color: #CD8181;'>$dt[2]</OPTION>\r\n";}
$i++;
} while($i < $imax);
print "</SELECT></TD></TR>
<input type=hidden name=stime value='$today'>
<TR class=row2><TD>Назва:<FONT color=#ff0000>*</FONT><BR>(не більше $maxzag символів)</TD>
<TD><INPUT name=zag class=maxiinput maxlength=$maxzag></TD></TR>
<TR class=row1><TD>Причини і стислий опис<br> обставин аварії:</TD>
<TD><TEXTAREA class=maxiinput name=msg style='HEIGHT: 200px; WIDTH: 300px'></TEXTAREA></TD></TR>
<TR class=row1 height=23><TD>Дата і час настання аварії: </TD><TD><INPUT name=timez class=maxiinput maxlength=35></td></tr>
<TR class=row2 height=23><TD>Економічні втрати від аварії <br>(не обов’язково): </TD><TD><INPUT name=moneyz class=maxiinput maxlength=35></td></tr>
<TR class=row1 height=23><TD>Тривалість простою об'єкта від<br> початку аварії до введення <br>в експлуатацію, годин або діб <br>(не обов’язково): </TD><TD><INPUT name=esk class=maxiinput maxlength=35></td></tr>
<TR class=row2 height=23><TD>Заходи, запропоновані комісією<br> з розслідування причин аварії<br>(не обов’язково): </TD><TD><INPUT name=zaxodu class=maxiinput maxlength=35></td></tr>
<TR class=row1><TD>Відмітка про виконання<br> заходів:<FONT color=#ff0000>*</FONT></TD>
<TD><INPUT name=type type=radio value='Н'><B><font color=#EE2200>Н</font></B>е виконано
<INPUT name=type type=radio value='В'><B><font color=#1414CD>В</font></B>иконано </TD></TR>
<TR class=row1 height=23><TD>Ваше ім’я:";
if (isset($wrboardname)) {
print "<input type=hidden name=name value='$wrboardname'></TD><TD><B>$wrboardname</B></td></tr>";
} else {
print "
<FONT color=#ff0000>*</FONT></TD><TD><INPUT name=name class=maxiinput maxlength=30>
<TR class=row2 height=23><TD>Ваш Е-майл:<FONT color=#ff0000>*</FONT></TD><TD><INPUT name=email class=maxiinput maxlength=30></td></tr>
<TR class=row1 height=23><TD>Місто:</TD><TD><INPUT name=gorod class=maxiinput maxlength=40></td></tr>
<TR class=row2 height=23><TD>Телефон: <BR>(по шаблону: +38(095)344356)</TD><TD><INPUT name=phone class=maxiinput maxlength=35></td></tr>
";}
print"<TR class=row1><TD>Термін розміщення заявки:</TD>
<TD><SELECT name=days style='FONT-SIZE: 13px'>
<OPTION value=7>7 днів</OPTION>
<OPTION value=14>14 днів</OPTION>
<OPTION selected value=30>30 днів</OPTION>
<OPTION value=60>60 днів</OPTION>
<OPTION value=90>90 днів</OPTION></SELECT>
</TD></TR>
";
if (!isset($wrboardname) and $antispam=="1") {print"<tr class=row1><td align='right'>Захисний код від спамерів:</td><td>";
$rand_key=array("7531","8642","9753","10864","1975","2186","3197","4298");
$imag_key=array("8642","9753","10864","1975","2186","3197","4298","7531");
$rand = mt_rand(0,7); $rnd=$rand_key[$rand]; $ima=$imag_key[$rand];
print"<img src='images/$ima.png' width=300 height=20 border=0>
</td></tr><input name=rand type=hidden value='$rnd'>
<tr class=row2><td align='right'><font color=red>Напишіть код
цифрами:</font></td><td><input name='num' type='text' maxlength=5 size=5></td></tr>";}
print"<TR class=row1><TD colspan=2 align=middle><INPUT class=longok type=submit value=Зареєструвати></TD></TR>
</FORM></TBODY></TABLE>";
}
}
include "images/bottom.html";
?>
<center><small>Powered by KNz-31 Group © 1.0<br></small></center>
</body></html>
Config.php
<? $brdname="ЖРЕР: Зареєструвати аварійну ситуацію"; // тайтл
$brdmaintext=""; // перед тайтлом
$password="admin"; // пароль адм
$sendmail="1"; // тестовий сенд майл
$sendmailadmin="0"; // отправка адміну листів?
$adminemail=" "; // Емайл адміна
$fotoadd="0"; // фото не доробив
$fotodir=""; // фото не доробив
$max_file_size="100000"; // фото не доробив
$flagm1="1"; // корекція 1/0
$flagm2="1"; // +1 1/0
$showten="10"; // топ-10
$onlyregistr="0"; //подавати зареєстрованим або читачам?
$maxzag="60"; // Макс.символів категорії
$maxname="45"; // Макс символів в імені?
$maxmsg="1000"; // Макс. символів в тексту заяви
$maxdays="90"; // Макс. термін показу
$qq="7"; // КЗаявок на сторінку
$colrub="2"; // стовбчики
$brdskin="1-4-lite";
$addrem="0"; // фото
$date=date("d.m.Y"); // число.месяц.год
$time=date("H:i:s"); // часы:минуты:секунды
$datadir="./data"; // БД
$datafile="boardbase.dat"; // Імя БД
$back="<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'><meta http-equiv='Content-Language' content='ru'></head><body><center>Поверніться <a href='javascript:history.back(1)'><B>назад</B></a>"; // назад
$rubrika=""; // тимчасова змінна
?>