Розробка соціальної мережі "Social network Artput"
Опис механізмів передачі даних між сторінками. Розробка доступного та зручного інтерфейсу веб-сайту компанії "Artput" для відвідувачів сайту і для адміністратора. Установка Apache 1.3.29 та PHP 4.3.4 під Windows XP. Структура веб-сервера та веб-сайту.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 24.09.2012 |
Размер файла | 5,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Зміст
- Вступ
- 1. Технічне завдання
- 2. Вибір архітектури розробки
- 4. Вибір інструментальних засобів розробки
- 5. Вимоги до технічних засобів
- 6. Інструкції системному адміністратору
- 6.1. Установка Apache 1.3.29 під Windows XP
- 6.2. Установка PHP 4.3.4 під Windows
- 7. Керівництво користувачу
- 7.1. Користувацька частина сайту
- 7.2. Система адміністрування
- 8. Керівництво програмісту
- 8.1. Структура бази даних
- 8.2. Діаграма прецедентів
- 8.3. Структура веб-сервера та веб-сайту
- 8.4. Опис механізмів передачі даних між сторінками
- 8.5. Опис класів, які виконують взаємодію з базою даних
- Висновки
Вступ
Ще декілька років тому Internet використовували в основному тільки для обміну почтовими повідомленнями та пересилки файлів. Та в останній час сучасні технології перетворили Internet в розвинену інфраструктуру, що охоплює головні інформаційні центри, світові бібліотеки, бази даних наукової та правової інформації, багато державних та комерційних організацій і підприємств, біржі та банки. Сьогодні Internet можна розглядати як величезний ринок, який може охопити в потенціалі все населення Землі.
В наш час для повного комунікаційного життя підприємства, установи, організації чи простої людини використовують різні методи, але головним інформаційним та рекламним методом є засоби глобальної мережі Internet. Веб-сайт є обличчям організації, а його багатозадачніть і зручність говорить про професіоналізм створювача.
Метою даного дипломного проекту є розробка веб-сайту компанії «Artput».
Необхідно створити такий сайт, який би із задоволенням і зручністю використовували користувачі. А саме потрібно реалізувати такі задачі: розробити доступний та зручний інтерфейс, як для відвідувача сайту, так і для адміністратора; створити базу даних, в якій розміщувалася необхідна інформація; забезпечити захист цієї інформації від зовнішнього втручання; реалізувати зворотній зв'язок з відвідувачами сайту тощо.
1. Технічне завдання
Розробити веб-сайт "Social Portfolio Network - Artput":
1. Спроектувати структуру веб-сайту та структуру бази даних.
2. Реалізувати клієнтську частину сайту:
2.1. розробити модуль для перегляду сторінок сайту;
2.2. реалізувати пошук по сайту;
2.3. забезпечити можливість реєстрації користувачів на сайті;
2.4. написати скрипти для авторизації користувачів;
2.5. реалізувати форум на сайті;
2.6. реалізувати групи користувачів, в які б вони змогли об'єднуватись.
3. Реалізувати систему адміністрування веб-сайту:
3.1. написати програмні модулі для забезпечення обмеженого доступу до системи адміністрування.
3.2. створити скрипти для додавання, оновлення та видалення даних для кожного модуля сайту.
3.3. організувати зручний та функціональний інтерфейс системи адміністрування.
4. Наповнити сайт початковою інформацією.
2. Вибір архітектури розробки
Для реалізації даного проекту було обрано архітектуру «клієнт-сервер».
Архітектура «клієнт-сервер» сьогодні являє собою домінуючу концепцію у створенні мережевих розробок і передбачає взаємодію та обмін даними між ними. Вона передбачає такі основні компоненти:
· набір серверів, які надають інформацію або інші послуги програмам, які звертаються до них;
· набір клієнтів, які використовують сервіси, що надаються серверами;
· мережа, яка забезпечує взаємодію між клієнтами та серверами.
Сервери є незалежними один від одного. Клієнти також функціонують паралельно і незалежно один від одного. Немає жорсткої прив'язки клієнтів до серверів. Більш ніж типовою є ситуація, коли один сервер одночасно обробляє запити від різних клієнтів; з іншого боку, клієнт може звертатися то до одного сервера, то до іншого. Клієнти мають знати про доступні сервери, але можуть не мати жодного уявлення про існування інших клієнтів.
Клієнти та сервери - це програмні модулі. Найчастіше вони знаходяться на різних комп'ютерах, але бувають ситуації, коли обидві програми - і клієнтська, і серверна, фізично розміщуються на одній машині; в такій ситуації сервер часто називається локальним.
Типовим прикладом клієнт-серверної взаємодії є WWW. Існує величезна кількість веб-серверів, на яких розміщується та або інша інформація. У найпростішому випадку ця інформація являє собою набір веб-сторінок, які можуть зберігатися на сервері у вигляді файлів, розмічених за допомогою мови розмітки HTML. Але ситуація, як правило, є більш складною; значна частина веб-ресурсів на сучасному етапі є динамічними, тобто вони не існують в заздалегідь підготовленому вигляді, а створюються безпосередньо в процесі обробки запиту від користувача.
Для запиту до веб-сервера клієнтська програма повинна задати місцезнаходження комп'ютера, на якому розміщується серверна програма; назву потрібного документа і, можливо, інші дані, які специфікують запит. Мережа забезпечує знаходження сервера і передачу йому клієнтського запиту. Серверні програми обробляють цей запит; відповідь пересилається по мережі клієнтові.
Модель клієнт-серверної взаємодії визначається перш за все розподілом обов'язків між клієнтом та сервером. Логічно можна виокремити три рівні операцій:
· рівень представлення даних, який по суті являє собою інтерфейс користувача і відповідає за представлення даних користувачеві і введення від нього керуючих команд;
· прикладний рівень, який реалізує основну логіку застосування і на якому здійснюється необхідна обробка інформації;
· рівень управління даними, який забезпечує зберігання даних та доступ до них.
Для роботи з системою користувач використовує стандартне програмне забезпечення - звичайний браузер. Це позбавляє його необхідності завантажувати та інсталювати спеціальні програми (хоча інколи така необхідність все-таки виникає). Але користувачеві слід надати в розпорядженні інтерфейс, який дозволяв би йому взаємодіяти з системою і формувати запити до неї; форми, що визначають цей інтерфейс, розміщуються на веб-сторінках та завантажуються разом з ними.
Браузер формує запит та пересилає його до сервера, який здійснює обробку. При необхідності сервер викликає серверні програмні модулі, які забезпечують обробку запиту і в разі потреби звертаються до сервера даних. Сервер даних здійснює операції з даними, що зберігаються в системі та складають її інформаційну основу. Зокрема, він може здійснити вибірку з інформаційної бази відповідно до запиту та передати її модулю проміжного рівня для подальшої обробки. Дані, з якими працює сервер даних, організовані як реляційна база даних MySQL.
3. Вибір інструментальних засобів розробки
На сучасному етапі для програмування модулів проміжного рівня використовується мова серверних сценаріїв РНР, а для управління даними - СУБД MySQL. Таким чином, зв'язка PHP-MySQL - це стандартний інструмент для створення інтерактивних веб-сайтів та порталів, систем електронної комерції; близько 90% комерційних систем сьогодні створюється саме на цій основі. Так, для створення серверних додатків, крім РНР, широко застосовуються Java, Perl, Python. Взагалі, технології створення веб-додатків зараз стрімко розвиваються. Слід згадати про технології EJB (Enterprise Java Beans), CORBA, а також про .NET - порівняно нову ініціативу компанії Microsoft.
Для виконання даного дипломного проекту було обрано мову програмування РНР, оскільки РНР має багато переваг перед вищезгаданими комерційними пакетами :
1. Функціональність - РНР дає Web-програмістам покращену функціональність з можливостями вставки РНР-коду безпосередньо в HTML.
2. Ціна - РНР вільно розповсюджується, причому абсолютно безкоштовно.
3. Синтаксис РНР дуже схожий на синтаксис С або Perl.
4. В мові програмування РНР немає типізації даних і нема необхідності в діях по виділенню/звільненню ОП.
5. Програми на РНР мають кращу читабельність, ніж аналогічні програми на інших мовах. РНР код значно легше прочитати і зрозуміти.
Зв'язок РНР-MySQL є кросплатформенним. Це означає, що можна працюючи в Windows розроблювати програми, що призначені для роботи в UNIX. Крім того, РНР може працювати як зовнішній CGI-процес, або як звичайний інтерпретатор скриптів, або як модуль, що підключається до Web серверу Apache або IIS.
4. Вимоги до технічних засобів
Розробка потребує наявності сервера та комп'ютера користувача, але при необхідності, комп'ютер користувача може виконувати роль сервера.
Програма може бути встановлена у будь-якій з розповсюджених на сьогоднішній день операційних систем - Windows 9x/NT/XP/2003/Vista, Linux, Unix, та ін. Мінімальні вимоги до системи такі:
1. Процесор - 300 Мгц2. Оперативна пам'ять - 32 Мб3. Відеокарта та монітор - 640x480, 256 кольорів при частоті розгортки 75 Гц (TCO'95)4. Клавіатура - довільна5. Миша - довільна6. Вільний дисковий простір - 120 Мб (для встановлення серверів Apache та MySQL). |
Наведена конфігурація не перевищує рівень оснащення комп'ютерів користувачів на даний момент часу, тому програма буде доступною широкому колу користувачів.
Конфігурація комп'ютера, на якому виконувалась розробка:
1. Процесор |
Intel Pentium 4 2,6 GHz |
|
2. Оперативна пам'ять |
512 Mb |
|
3. Відеокарта |
SVGA 128Mб |
|
4. Монітор |
SVGA |
|
5. Жорсткий диск |
120 Gb |
|
6. Принтер |
Samsung ML-1250 |
5. Інструкції системному адміністратору
5.1 Установка Apache 2.0 під Windows XP
Викачати ПО для установки Apache можна, наприклад, з його офіційного сайту http://www.apache.org. Це автоматичний установник (інакше - wizard) серверу Apache під Windows. Ця програма спробує майже самостійно встановити на комп'ютер веб-сервер. Після запуску файлу установника з'являється діалогове вікно (рис. 1).
Рис. 1. Автоматична установка серверу Apache
Щоб встановити HTTP-сервер Apache на свій комп'ютер, потрібно натискувати на кнопку Next. До речі кажучи, ця ж програма дозволить змінити або видалити вже встановлений web-сервер.
Після натиснення кнопки Next програма запропонує погодитися з умовами ліцензії (рис. 2).
Рис. 2. Ліцензійна угода
Наступний екран міститиме інформацію про сервер Apache, і зокрема про його Windows-реалізацію (його зображення не приводимо).
На наступному кроці потрібно ввести ім'я мережного домена, ім'я серверу і e-mail адміністратора. Програма спробує автоматично визначити домен і хост по настройках комп'ютера (рис. 3).
Рис. 3. Основна інформація про сервер
Після того, як було введено дані у вищенаведену форму, потрібно вибрати тип установки: повна (встановлюються всі компоненти серверу) або визначувана користувачем (можна вибрати компоненти для установки) (рис. 4). сайт інтерфейс apache дані
Рис. 4. Тип установки
Вибір компонентів серверу не дуже великий - це інструменти, необхідні для роботи серверу і документація до нього (рис. 5).
Рис. 5. Вибір компонентів користувацької установки
Виберемо повну установку. Тоді на наступному кроці програма запропонує вибрати папку, в яку буде встановлений сервер. За умовчанням сервер встановлюється у папку C:\Program Files\Apache Group\ (рис. 6).
Рис. 6. Папка, в яку буде встановлений сервер
На наступному екрані (рис. 7) буде потрібно підтвердити правильність введених даних і почати установку. З будь-якого вікна установки, включаючи і це, можна повернутися назад і змінити введені раніше дані.
Рис. 7. Початок установки
Після натиснення кнопки Install почнеться безпосередня установка серверу. Від користувача ніяких додаткових дій більше не потрібен. З одного боку, це добре, але є у такої автоматизованої установки і деякі недоліки. Наприклад, домашні директорії користувачів виявляються там же, де і файли настройок серверу (С:\Program Files\Apache Group\Apache\users\). Це небезпечно, якщо на комп'ютері працює декілька користувачів, що не є адміністраторами серверу. Але спершу можна нічого не міняти. Припустимо, ми запустили установник, ввели всі необхідні дані, він виконав всі операції успішно і говорить, що сервер встановлений. Як перевірити, чи дійсно сервер встановлений? Набираємо у вікні браузера http://localhost/. Якщо все встановилося правильно, ми отримаємо сторіночку вітання серверу Apache (рис. 8).
Рис. 8. Сторінка вітання
Отже, сервер встановлений. Файли, які повинні бути оброблені сервером, можна зберігати або в корені серверу (в нашому випадку це С:\Program Files\Apache Group\Apache\htdocs), або в директоріях користувачів (в нашому випадку це С:\Program Files\Apache Group\Apache\users\). Місцеположення кореня серверу і директорій користувачів прописано в настройках серверу, а точніше, у файлі конфігурації httpd.conf (знайти його можна в С:\Program Files\Apache Group\Apache\conf). Для зміни цих шляхів потрібно змінити відповідні змінні у файлі конфігурації серверу. Змінна у файлі конфігурації ServerRoot відповідає за кореневу директорію серверу, а змінна UserDir - за директорію, де розташовуватимуться файли користувачів серверу (для більш безпечної роботи радимо змінити змінну UserDir на що-небудь типу c:\users\). Щоб отримати доступ до файлу test.html, що знаходиться в корені серверу, потрібно набрати в браузере http://localhost/test.html (тобто ім'я хоста, ім'я файлу). Якщо ж файл test.html знаходиться в директорії користувача user, то для його перегляду потрібно набрати в браузере http://localhost/~user/test.html.
5.2 Установка PHP 5.3.2 під Windows
Скачати инсталлятор можна за адрессою: http://windows.php.net/downloads/releases/php-5.3.2-Win32-VC6-x86.zip
Зміни в файлі httpd.conf
Повідомляємо Апачу, що він має модуль, котрый повинен спацьовувати на розширення php. В распакованому архиві c:\php є файл install.txt. В ньому написано на англ. мові, які поправки повинно внести в файл httpd.conf.
Таким чином, мы вказали, що при загрузці apache запускає интерпретатор php в якості свого модуля. Тепер вкажем Апачу, де він повінен шукати файл php.ini (параметри php). В строці 812 файла install.txt є строка PHPIniDir "C:/php". Її треба поставить в файл httpd.conf (в строку 129). Тепер треба вказати, цей модуль повинен опрацьовувати файли з розширенням php. В строці 809 файла install.txt є строка:
AddType application/x-httpd-php .php
Її вставляемо в кінець блока AddType файла httpd.conf (385-а строка файла httpd.conf)
Створюємо и описуємо в httpd.conf папку для збереження WEB-папок.
Один WEB-сервер може управляти роботою декількох сайтів (або веб-додатків). Розпізнавати їх Apache буде по доменному імені -- и кожному із цих імен назначить у відповідності з WEB-папку (в котрій будуть зберігатися файли сайта). Створимо папку, в котрій будуть зберігатись WEB-папки.
Наприклад: c:\www. Тепер у файл httpd.conf добавляемо опис цієї папки: ми дамо доступ до цієї папки по протоколу http. После опису загальних умов (починаючи приблизно зі строки 197) додамо наступний блок:
<Directory "C:/www">
AllowOverride All
Order deny,allow
Allow from all
</Directory>
Вмикаемо механізм віртуальних хостов
В першу чергу необхідно наладити Windows на «розпізнання» ціх доменних імен. Тобто задати відповідність ім'я > IP-адрес Для цього звернемося до файлу %System32%\drivers\etc\hosts (%System32% -- C:\Windows\System32 або C:\Winnt\System32)
В ньому ми знайдемо список відповідних імен та IP-адрес. Додамо одне нове ім'я -- tm. Отредактований файл буде мати вигляд:
# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
127.0.0.1 localhost
127.0.0.1 tm
Тепер звернемося до папки extra, котра знаходиться в тій же папці, що і файл httpd.conf. В ній ми знайдем файл httpd-vhosts.conf
Відкрием його та внесемо наш новий віртуальний хост:
# Virtual Hosts
# If you want to maintain multiple domains/hostnames on your
# machine you can setup Virtual Host containers for them.
# Use name-based virtual hosting.
NameVirtualHost *:80
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
<VirtualHost *:80>
DocumentRoot "c:/www/tm"
ServerName tm
</VirtualHost>
Тепер шукаемо у httpd.conf строку #Include conf/extra/httpd-vhosts.conf (номер ціеї строки приблизно 472-й) і видяляемо знак коментарію (#) з початку строки.
Створюємо папку c:\www\tm
Редагуемо директиву DirectoryIndex
Ця директива знаходиться в 249-й строці файла httpd.conf. Включаємо в список пошуку файла за умовчанням в WEB-папке файл index.php:
DirectoryIndex index.html index.htm index.php
Змінюемо ім'я С:\php\php.ini-production на php.ini.
Перезавантажуемо
Рис. 9. Перезавантаження.
Подвійним кліком запускаємо його та натискаємо Restart.
Перевірка
Створюємо файл C:\www\tm\index.php, який має наступний вміст: <?php phpinfo(); ?> та запускаємо в браузері адресу http://tm/
У випадку успіху Ви побачите таблицю php.
Редагування файла php.ini. Ціль: підключити корісні нам бібліотеки функцій. В строці 809 ми повинні подкорегувати директиву extension_dir: вона повинна мати вигляд extension_dir = "c:/php/ext" (без точки із запятою в початку!). Розділ розширень (Dynamic Extensions) починається приблизно з 946-ї строки. Список розширень з описом Ви можете знайти за адресою: http://www.php.net/manual/en/install.windows.extensions.php
Ми вмикнемо три розширення, які нам знадобляться в роботі:
php_gd2.dll -- функції для роботи з графікой (952-а строка файла php.ini)
php_mysql.dll -- функції для роботи з MySQL (962 строка файла php.ini)
php_mysqli.dll -- функції для роботи з MySQL (963 строка файла php.ini)
Перезавантажуемо apache.
Встановлення php завершено.
6. Керівництво користувачу
Для того, щоб почати роботу із сайтом, необхідно відкрити вікно будь-якого встановленого браузера (Internet Explorer, Opera, Mozilla Firefox або інший) і у рядку адреси ввести адресу комп'ютера, який використовується в якості сервера: http://artput.jp
Після цього у вікні браузера з'явиться головна сторінка сайту, яка містить загальну кількість проектів користувачів та фільтри для них.
Рис. 10. Головна сторінка сайту
Верхня частина сайту представляє собою меню та пошук. Меню дозволяє здійснювати перехід на головні сторінки сайту. Тобто, з будь-якої сторінки сайту користувач може перейти на будь-яку іншу сторінку сайту.
В правому верхньому кутку розміщується форма для пошуку інформації на сторінках сайту.
Для того, щоб знайти, наприклад, усі сторінки, на яких міститься інформація про групи, треба ввести назву чи відповідні теми, які вас цікавлять у пошукову форму і натиснути на кнопку «Шукати». Після цього з'явиться список усіх знайдених груп. Також пошук працює по користувачам сайта та проектам.
Для незареєстрованого користувача доступно декілька сторінок для ознайомлення з сайтом.
Для того, щоб з'явилася можливість переглядати будь-які сторінки на сайті, залишати повідомлення, завантажувати свої проекти потрібно зареєструватися. Для цього натиснемо на посилання «Sign In», яке знаходиться у головному меню сайту. Після наведення на ссилку «Sign In»
Під нею випливе дві наступні ссилки, це Login i Registration.
Рис. 11. Форма для входу
Рис. 12. Реєстраційна форма
Після виконання логіну чи реєстрації переходимо на сторінку профайлу. На цій сторінці користувач може завантажити власну фотокартку, заповнити поля власними даними, завантажити або видалити свої проекти, видалити доданих друзів, змінити пароль, поштову скриньку. Все це реалізовується за допомогою Аякс запитів. Зліва можна побачити меню швидкого переходу по сторінкам.
Рис. 13. Cторінка профайлу
Натиснувши на ссилку перейдемо на сторінку загального перегляду усіх друзів. На цій сторінці користувач може видалити чи перейти на сторінку профайлу свого друга. Також реалізован перехід по сторінкам, якщо друзів більше 12(реалізовано Аякс запитом).
Рис. 14. Сторінка відображення друзів
Для того, щоб користувач міг запросити своїх товаришів зареєструватися на сайті, була створена наступна сторінка.
Рис. 15. Запрошення друзів через пошту.
Якщо натиснути в лівому меню на ссилку Message - користувач перейде на сторінку повідомлень, де користувач може отримувати та надсилати повідомлення іншим користувачам сайту. Цю сторінку наведено нижче.
Рис. 16. Повідомлення користувача
Користувач може додавати свої проекти та креативні ідеї для реклами свого таланту. Для того, щоб додати свій проект, потрібно перейти в лівому меню по ссилці My Work. Після переходу, користувач побачить наступну сторінку.
Рис. 17. Проекти користувача.
На цій сторінці користувач може виправляти інформацію про свій проект, бачити скільки людей оцінили проект і коментарі, які залишили. Користувач може видаляти коментарі. Перехід по проектам відбувається за структурою степ корусіль. Для того, щоб завантажити новий проект, користувачу необхідно перейти по ссилці, яка знаходиться в правому кутку - Add new project.
Рис. 18. Додавання нового проекту користувачем.
За такою ж самою схемою відбувається додавання креативних ідей користувачем.
На сайті користувачі можуть створювати свої групи, де будуть ділитися спільними ідеями, обмінюватися досвідом, проектами та знаннями.
Коли користувач хоче вступити в групу, то користувач переходить по ссилці Groups, яка знаходиться у верхньому меню. Після переходу, перед користувачем з'явиться наступна сторінка.
Рис. 19. Вивід усіх груп на сайті.
Якщо користувач зацікавився якоюсь конкретною групою, він може переглянути її, натиснувши на ссилку View Group. Якщо користувач хоче вступити в групу і вона не є приватною, то користувачу слідує натиснути на силку Join Group. Якщо група є приватною, то користувач може надіслати запит на вступ у групу, прикріпивши до нього повідомлення, якщо забажає.
Якщо користувач вступає до групи, він переходить на її сторінку, яку ми бачимо нижче.
Рис. 20. Вигляд групи із середини(адміністратор).
Якщо натиснути влкадку Our Projects побачимо наступну сторінку:
Рис. 21. Довільні 4 проекти людей, що знаходяться в групі.
Як ми бачимо, в групі існують медіа файли. На даний момент - це картинки. Користувач може додавати їх до групи, перейшовши по ссилці Add/Edit Media.
Рис. 22. Додавання картинок до групи.
Рис. 23. Відображення медіа файлу.
Перегляд картинок відбувається за принципом степ каруселі. Тобто відповідно до нажатої стрілочки с такої сторони виїжджає картинка разом з описом та коментарями користувачів.
Також користувач може запросити своїх друзів приєднатися до групи на сайті, перейшовши по ссилці Invite people to this group.
Рис. 24. Запрошення друзів на вступ до групи
Не маловажною частиною групи є форум, де учасники групи можуть спілкуватися один з одним. На форумі користувачі можуть створювати теми на обговорювати їх. Створити тему користувач може заходячись на головній сторінці групи та натиснувши на посилання Start New Topic.
Рис. 25. Створення нової теми на форумі.
Користувач може давати відповіді на тему натиснувши на кнопку Post Your Reply.
Рис. 26. Давання відповіді на тему форума.
Якщо користувач зробив помилку в своїй відповіді, він може виправити її, натиснувши Edit Post,або видалити її зовсім, натиснувши Delete Post.
Рис. 27. Правка відповіді на форумі.
Адміністратор групи може виправляти чи оновляти дані групи з легкістю та найменшою затратою часу. Для цього лише треба натиснути голубого кольору ссилку Edit … Та вписати туди нове значення. Все робиться без перезавантаження сторінки, за допомогою Аякс запитів.
Рис. 28. Адміністрування сторінки групи.
Адміністратор сайту має всі права на видалення груп, всіх складових груп, користувачів, коментарів, проектів. Для цього потрібно лише зайти на сайт під адміністратором і для нього з'являються ссилки на видалення. Як можемо бачити на верхніх скріншотах. Адміністратор додається вручну. І'мя прописується у файлу db\db_connect.php.
7. Керівництво програмісту
7.1 База даних
Таблиця soc_comments
(містить інформацію про коментарі проектів та ідей користувачів)
Поле |
Опис |
|
id |
ID-номер коментаря |
|
comments_id |
ID-номер(якщо проект - work_id, ідея - creative_id) |
|
author |
Нік користувача |
|
time |
Дата |
|
comment |
Зміст коментаря |
Таблиця soc_creatives
(містить інформацію про креатині ідеї користувачів)
Поле |
Опис |
|
id |
ID-номер ідеї |
|
author_id |
ID-номер автора |
|
author |
Нік автора |
|
picture |
Розміщення картинки на сервері |
|
title |
Назва |
|
about |
Тема |
|
date |
Дата додання на сайт |
|
tags |
Теги |
|
estimate |
Оцінка ідеї |
|
views |
Кількість оглядів |
Таблиця soc_disc
(містить інформацію про форум групи сайта)
Поле |
Опис |
|
id |
ID-номер теми чи повідомлення |
|
parent |
Тема - 0, повідомлення - ідентифікатор теми |
|
title |
Назва |
|
post |
Зміст |
|
time |
Час додання |
|
group_id |
ID-номер групи |
|
user_id |
ID-номер користувача |
Таблиця soc_groups
(містить інформацію про групи сайта)
Поле |
Опис |
|
id |
ID-номер групи |
|
title |
Назва групи |
|
url |
Місце банера групи на сервері |
|
description |
Опис групи |
|
contact_info |
Контактна інформація адміністратора |
|
type |
Тип групи(Приватна чи загальна) |
|
admin |
Нік адміністратора групи |
|
fields |
Інтереси, які обговорюються в групі |
|
time |
Час створення групи |
|
size |
Розмір групи |
|
web_title |
Назва сайту групи |
|
web_url |
Ссилка на розміщення сайту |
Таблиця soc_media_comments
(містить інформацію про коментарі фотокарток в групах сайта)
Поле |
Опис |
|
id |
ID-номер коментаря |
|
username |
Нік користувача |
|
group_id |
ID-номер групи |
|
image_id |
ID-номер картинки |
|
comment |
Коментар |
|
time |
Час |
Таблиця soc_messages
(містить інформацію про повідомлення користувачів)
Поле |
Опис |
|
id |
ID-номер повідомлення |
|
from |
Від кого |
|
to |
Кому |
|
subject |
Тема |
|
text |
Зміст |
|
date |
Дата відправки |
Таблиця soc_upload_files
(містить інформацію про загружені файли в групах сайта)
Поле |
Опис |
|
id |
ID-номер файлу |
|
author_id |
ID-номер автора |
|
title |
Назва |
|
description |
Опис |
|
url |
Розміщення файлу на сервері |
|
group_id |
ID-номер групи |
|
time |
Час завантаження |
Таблиця soc_users
(містить інформацію про користувачів веб-сайта)
Поле |
Опис |
|
id |
ID-номер користувача |
|
name |
Ім'я користувача |
|
surname |
Призвіще користувача |
|
occupation |
Професія користувача |
|
company |
Компанія, де працює |
|
username |
Нік на сайті |
|
password |
Пароль |
|
|
Поштова скринька в інтернеті |
|
skills |
Навички користувача |
|
status |
Статус користувача |
|
friends |
Друзі користувача |
|
url |
Домашній сайт користувача |
|
member_since |
Дата регістрації користувача |
|
picture_url |
Ссилка фотокартки на сервері |
|
location |
Де знаходиться користувач |
|
countviews |
Кількість переглядів профайлу |
|
appreciations |
Кількість подяк користувачу |
|
last_viewed |
Дата останнього перегляду |
|
last_appreciated |
Дата останньої подяки |
Таблиця soc_users_groups
(містить інформацію про користувачів і про групи в яких вони знаходяться)
Поле |
Тип |
|
id |
ID-номер запису |
|
user |
ID-номер користувача |
|
group |
ID-номер групи |
|
admin |
ID-номер адміністратора групи |
Таблиця soc_works
(містить інформацію про проекти користувачів веб-сайту)
Поле |
Опис |
|
id |
ID-номер проекту |
|
author_id |
ID-номер користувача |
|
author |
Ім'я користувача |
|
title |
Назва |
|
url |
Ссилка, на картинку |
|
tags |
Теги |
|
estimate |
Оцінки |
|
views |
Кількість проглядів |
|
date |
Дата додання |
|
last_viewed |
Дата-останній прогляд |
|
last_appreciated |
Дата-останнє одобрення |
|
client |
Для кого виконана робота |
|
discipline |
Область роботи |
|
site |
Домашній сайт |
|
comment |
Коментарій від користувача |
7.2 Структура бази даних
Размещено на http://www.allbest.ru/
7.3 Структура веб-сайту
· class - папка містить класи та функції класів веб-сайта.
· css - тут розміщуються файли стилів веб-сайта;
· db - папка містить клас підключення до бази даних;
· images - містить усі файли (графічні та html-документи), які необхідні для формування дизайну сайту;
· includes - містить файли, які підключаються до головної сторінки в ході роботи веб-сайта;
· tmp - зберігає тимчасові файли.
· uploads - містить файли, які були завантажені користувачами.
index.php - головний файл сайту.
7.4 Передача даних між сторінками
Для передачі даних між сторінками у дипломному проекті використано 5 способів:
1. Використання сесій.
2. Використання кукісів.
3. Передача даних за допомогою GET-методу.
4. Передача даних за допомогою POST-методу.
5. Використання спільної бази даних.
7.5 Файл, який встановлює взаємодію з базою даних
Скрипт, який встановлює з'єднання з базою даних.
<?php
$db_link=mysql_connect('localhost','root','123456') or die('Could not connect to mysql server.');
mysql_select_db('art_put',$db_link) or die('Could not select database.');
$_cfgSuperModers = "qwe"; // Here you can add people in the moderator's list. Example: "qwe,super_mod1,super_mod2,super_mod3"
if( $_COOKIE['username'] ){
$tmp = explode(",",$_cfgSuperModers);
function sm_trim(&$value, $key){
$value = trim( $value );
}
array_walk($tmp, 'sm_trim');
$isSuperModerator = in_array($_COOKIE['username'],$tmp);
}
?>
У програмному коді використано такі функції бібліотеки MySql:
1. mysql_connect - встановлює з'єднання з сервером баз даних MySQL. Функція приймає три параметри: перший - адреса сервера, другий - логін користувача MySQL і третій - пароль користувача MySQL.
2. mysql_select_db - вибирає базу даних MySQL.
3. mysql_affected_rows - повертає кількість рядків, що були використані попередньою операцією MySQL.
4. mysql_num_rows - повертає кількість рядків, які є чи були вібрані з таблиці.
5. mysql_insert_id - повертає останній ідентифікатор який було внесено в таблицю.
6. mysql_db_query - виконує запит MySQL
7. mysql_fetch_array - отримати результат виконання запиту як асоціативний масив.
8. mysql_query - відправляє SQL-запит до серверу MySQL.
9. mysql_close - закриває MySQL- з'єднання.
7.6 Опис классу, який відповідає за розділ «Groups»
Найбільший класс на сайті. Інші шматки php - коду вставлені на сторінках сайту, де вони використовуються.
<?
class Groups{
function getGroups( $pageno = '', $items = '' ){ //
функція приймає на вхід 2 параметри номер сторінки і кількість груп на 1 сторінці.
$sql = "SELECT * FROM `soc_groups` WHERE 1";//
будуємо запит де, вибираемо с бази данних усі групи користувачів
if( $pageno ) //
якщо змінна існує, то додаємо до запиту LIMIT
$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items";
$grp = mysql_query ( $sql ); //
виконуємо запит
while ($fgroup = mysql_fetch_array( $grp ) ) //
прокручуємо в циклі стількі разів, скільки у нас повернулося різних даних
$tmp[] = $fgroup; //
записуємо данні в змінну
return $tmp; // повертаємо змінну
}
function JoinGroup(){ //
функція яка відповідає за вступ до групи
$error = ''; //
обнуляємо змінну
$user = @mysql_fetch_array( mysql_query("SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'") ); //
вибираємо людину с таблиці
$userIn = @mysql_fetch_array( mysql_query("SELECT * FROM `soc_users_groups` WHERE `user`='{$user['id']}' AND `group`='{$_GET['groupname']}'") ); //
перевіряємо чи вона вже існує в группі
if ( is_array( $userIn ) ){ //
якщо існує записуємо текст в змінну.
$error = 'alert';
}else{ //
в іншому випадку робимо запит на вставку нової строки у таблицю
mysql_query ( "INSERT INTO `soc_users_groups` (`user`,`group`,`admin`) VALUES ('{$user['id']}', '{$_GET['groupname']}', 0)");
mysql_query ("UPDATE `soc_groups` SET `size`=`size`+1 WHERE `id`={$_GET['groupname']}") or die(mysql_error()); //
обновлюємо розмір группи
}
return $error; //
повертаємо змінну
}
function LeaveGroup(){ //
функція відповідає за вихід з группи
$user = mysql_fetch_array( mysql_query("SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'") ); //
вибираємо людину з таблиці
mysql_query("DELETE FROM `soc_users_groups` WHERE `user`='{$user['id']}' AND `group`='{$_GET['groupname']}'"); //
видаляємо її з таблиці, яка показує, хто існує в группі.
mysql_query ("UPDATE `soc_groups` SET `size`=(`size`-1) WHERE `id`={$_GET['groupname']}"); //
оновлюємо розмір таблиці.
}
function MyGroups( $pageno = '', $items = '' ){ //
функція яка показує в яких группах користувач є.
$user = @mysql_fetch_array( mysql_query("SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'") ); //
вибираємо користувача с таблиці
$sql = "SELECT `group` FROM `soc_users_groups` WHERE `user`='{$user['id']}'"; //
будуємо запит
if( $pageno ) //
якщо змінна не пуста
$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items"; // додаємо до запиту ліміт.
$res = mysql_query ( $sql ); //
обробляємо запит.
while ( $row = mysql_fetch_array( $res ) )
$groups[] = @mysql_fetch_array( mysql_query( "SELECT * FROM `soc_groups` WHERE `id`='{$row['group']}'" ) );//
вибираємо с таблиці, яка показує в яких групах вже перебуває користувач та записуємо дані у змінну, яку и повертаємо нижче.
return $groups;
}
function UsersInfo(pageno = '', $items = ''){ //
за допомогою функції дізнаємося інформацію про користувачів які існують в группі для виводу на екран.
$sql = "SELECT `soc_users`.* FROM `soc_users`,`soc_users_groups` WHERE `soc_users`.`id`=`soc_users_groups`.`user` AND `soc_users_groups`.`group` = '{$_REQUEST['groupname']}'"; //
будуємо запит, де вибираємо усі данні про користувача с таблиці де ідентифікатор відповідає полю user і ідентифікатор групи дорівнює змінній, яку ми отримаємо.
if( $pageno )
$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items";
$res_users = mysql_query( $sql ); //
виконуємо запит
while ( $row = @mysql_fetch_assoc( $res_users ) )
$users[] = $row; //
отримані данні записуємо у змінну
return $users; //
повертаємо змінну.
}
function SizeProject(){ //
функція допомагає дізнатись загальну кількість проектів у групі.
$sql = "SELECT `soc_works`.* FROM `soc_works`,`soc_users_groups` WHERE `soc_works`.`author_id`=`soc_users_groups`.`user` AND `soc_users_groups`.`group` = '{$_GET['groupname']}'";
$res_users = mysql_query( $sql ); //
будуємо запит, де вибираємо проекти користувачів які існують в групі.
$count = @mysql_num_rows($res_users); //
підраховуємо комірки
return $count; //
повертаємо кількість
}
function ShowProject( $pageno = '', $items = '' ){ //
вибір усіх проектів користувачів які існують у групі.
$sql = "SELECT `soc_works`.* FROM `soc_works`,`soc_users_groups` WHERE `soc_works`.`author_id`=`soc_users_groups`.`user` AND `soc_users_groups`.`group` = '{$_GET['groupname']}'"; //
будуємо запит де вибираємо проекти за умови виконання усіх умов які вказані в запиті.
if( $pageno )
$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items"; // додаємо ліміт, якщо змінна передається.
$res_users = mysql_query( $sql );
while ( $row = @mysql_fetch_assoc( $res_users ) )
$projects[] = $row; //
отримані дані записуємо у зміну
return $projects; //
повертаємо дані
}
function Randomize( $projects ){ //
функція яка вибирає 4 проекта із загальної кількості в повертає в довільному порядку.
$num = 4; //
записуємо кількість проектів які треба відображати в довільному порядку
if ( count( $projects ) > $num){ //
якщо загальна кількість проектів більша за 4 то робимо цикл
for ( $i = 0; $i < $num ; $i++){
$randr = rand( 0,count( $projects )-1 ); //
генеруємо довільне число від 0 до загальної кількості проектів.
for($q = 0; $q<count($save_randr); $q++ )
if( $randr == $save_randr[ $q ] ){ //
якщо змінна ринд прирівнюється до змінної сєйврєнд, то
$randr = rand( 0,count( $projects )-1 ); // генеруємо ще раз довільне число.
$q = -1; //
змінна дорівнює -1.
}
$save_randr[] = $randr;
$random[] = $projects[$randr]; //
записуємо 4 довільні проекти в змінну.
}
}else{
return $projects;
}
return $random;
}
function getAllMedia( $pageno = '', $items = '' ){ //
вибираємо усі картинки які користувачі завантажили до групи.
$sql = "SELECT * FROM `soc_upload_files` WHERE `group_id`='{$_REQUEST['groupname']}' ORDER BY time DESC"; //
будуємо запит, де вибираємо картинки відповідної групи и розташовуємо їх у порядку завантаження починаючи з найостаннішої.
if( $pageno )
$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items";
$res = mysql_query( $sql );
while ( $row = @mysql_fetch_array( $res ) )
$getMedia[] = $row;
return $getMedia;
}
function getIDAllMedia ( $id ){
функція дозволяє отримати усі ідентифікатори завантажених картинок в відновідну групу.
$sql = "SELECT * FROM `soc_upload_files` WHERE `group_id`='{$_GET['groupname']}' ORDER BY time DESC"; //
будуємо відповідний запит.
$res = mysql_query( $sql );
$i = 1;
while ( $row = @mysql_fetch_array( $res ) ){
if( $row['id'] == $id )
return $i;
$i++;
}
}
function SizeMedia(){ //
функція за допомогою якої дізнаємось кількість картинок завантажених у групу.
$row = mysql_query("SELECT * FROM `soc_upload_files` WHERE `group_id`='{$_GET['groupname']}'");
return mysql_num_rows( $row );
}
function getUserMedia(){ //
дізнаємось які картинки належать до даного користувача.
$res = @mysql_fetch_array( mysql_query("SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'") ); //
вибираємо користувача.
$row = mysql_query("SELECT * FROM `soc_upload_files` WHERE `group_id`='{$_GET['groupname']}' AND `author_id`='{$res['id']}'"); // вибираємо картинки с таблиці данного користувача.
while ( $row_images = @mysql_fetch_array($row) )
$userImages[] = $row_images;
return $userImages; //
повертаємо картинки.
}
function ExistUser( $option, $gid = '' ){ //
функція яка перевіряє чи користувач вже існує в группі чи ще ні і виводить на екран відновідні ссилки: вступити чи покинути групу, зовнішньої чи внутрішньої сторінки групи. Якщо група приватна, то за допомогою мови JavaScript визначаємо центр екрану та виводимо повідомлення, що група приватна і потрібен дозвіл адміністратора групи. Користувач може написати повідомлення до адміністратора групи. Якщо людина не виконала логін до сайту а натиснула ссилку увійти до группи, перенаправляємо її на сторінку логіна.
$gid = $gid|$_GET['groupname'];
$res = @mysql_fetch_array( mysql_query ( "SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'" ) ); //
вибираємо користувача с таблиці.
$row = @mysql_fetch_array( mysql_query ( "SELECT * FROM `soc_users_groups` WHERE `user`='{$res['id']}' AND `group`='$gid'" ) ); // перевіряємо чи користувач існує в группі.
$group = @mysql_fetch_array( mysql_query ( "SELECT * FROM `soc_groups` WHERE `id`='$gid'" ) ); //
вибираємо данну группу з таблиці груп.
$admin_group = @mysql_fetch_array( mysql_query ( "SELECT `admin` FROM `soc_groups` WHERE `id`='$gid' AND `admin`='{$_COOKIE['username']}'" ) ); // перевіряємо чи користувач є адміністратором групи.
if( $_COOKIE['username'] ){
if( $group['type'] == '1' or !$group['type'] ){
if ( is_array( $row ) ){
if( $admin_group['admin'] AND $option == 'inner' )
return "<a href=\"index.php?page=insidegroup&groupname=$gid&delete_group=true\" style=\"color:#6D94FF;font-size:11px;font-weight:bold;font-family:Arial,sans-serif;cursor:pointer;\">Delete Group</a>";
elseif($admin_group['admin'] AND $option == 'outer')
return "<a href=\"index.php?page=insidegroup&groupname=$gid&delete_group=true\" style=\"color:#626667;font-size:11px;padding-left:6px;\">Delete Group</a>";
elseif( $option == 'inner' )
return "<a href=\"index.php?page=insidegroup&groupname=$gid&exit=true\" style=\"color:#6D94FF;font-size:11px;font-weight:bold;font-family:Arial,sans-serif;cursor:pointer;\">Leave Group</a>";
else
return "<a href=\"index.php?page=mygroup&groupname=$gid&exit=true\" style=\"color:#626667;font-size:11px;padding-left:6px;\">Leave Group</a>";
}else{
if( $option == 'outer' )
return "<a href=\"index.php?page=mygroup&groupname=$gid&join=true\" style=\"color:#626667;font-size:11px;padding-left:6px;\">Join Group</a>";
else
return "<a href=\"index.php?page=insidegroup&groupname=$gid&join=true\" style=\"color:#6D94FF;font-size:11px;font-weight:bold;font-family:Arial,sans-serif;cursor:pointer;\">Join Group</a>";
}
}else{
if ( is_array( $row ) ){
if( $admin_group['admin'] AND $option == 'inner' )
return "<a href=\"index.php?page=insidegroup&groupname=$gid&delete_group=true\" style=\"color:#6D94FF;font-size:11px;font-weight:bold;font-family:Arial,sans-serif;cursor:pointer;\">Delete Group</a>";
elseif($admin_group['admin'] AND $option == 'outer')
return "<a href=\"index.php?page=insidegroup&groupname=$gid&delete_group=true\" style=\"color:#626667;font-size:11px;padding-left:6px;\">Delete Group</a>";
if( $option == 'inner' )
return "<a href=\"index.php?page=insidegroup&groupname=$gid&exit=true\" style=\"color:#6D94FF;font-size:11px;font-weight:bold;font-family:Arial,sans-serif;cursor:pointer;\">Leave Group</a>";
else
return "<a href=\"index.php?page=mygroup&groupname=$gid&exit=true\" style=\"color:#626667;font-size:11px;padding-left:6px;\">Leave Group</a>";
}else{
if( $option == 'outer' )
return "<a href=\"#\"
onclick=\"
from_top = $(document).scrollTop();
window_height = $(window).height();
element_height = window_height/2 - 75;
element_height += from_top;
$('#alert_join_private_group').css('top',element_height+'px');
element_width = $(window).width()/2 - 165;
$('#alert_join_private_group').css('left',element_width+'px');
$('#alert_join_private_group').show();
$('#event_admin_id').val('{$group['admin']}');
$('#event_user_id').val('{$_COOKIE['username']}');
$('#event_group_id').val('$gid');
return false;\"
style=\"color:#626667;font-size:11px;padding-left:6px;\">Join Group</a>";
else
return "<a href=\"#\"
onclick=\"
from_top = $(document).scrollTop();
window_height = $(window).height();
element_height = window_height/2 - 75;
element_height += from_top;
$('#alert_join_private_group').css('top',element_height+'px');
element_width = $(window).width()/2 - 165;
$('#alert_join_private_group').css('left',element_width+'px');
$('#alert_join_private_group').show();
$('#event_admin_id').val('{$group['admin']}');
$('#event_user_id').val('{$_COOKIE['username']}');
$('#event_group_id').val('$gid');
return false;\"
style=\"color:#6D94FF;font-size:11px;font-weight:bold;font-family:Arial,sans-serif;cursor:pointer;\">Join Group</a>";
}
}
}else{
if ( is_array( $row ) ){
if( $option == 'inner' )
return "<a href=\"index.php?page=login\" style=\"color:#6D94FF;font-size:11px;font-weight:bold;font-family:Arial,sans-serif;cursor:pointer;\">Leave Group</a>";
else
return "<a href=\"index.php?page=login\" style=\"color:#626667;font-size:11px;padding-left:6px;\">Leave Group</a>";
}else{
if( $option == 'outer' )
return "<a href=\"index.php?page=login\" style=\"color:#626667;font-size:11px;padding-left:6px;\">Join Group</a>";
else
return "<a href=\"index.php?page=login\" style=\"color:#6D94FF;font-size:11px;font-weight:bold;font-family:Arial,sans-serif;cursor:pointer;\">Join Group</a>";
}
}
}
function DeleteGroup(){ //
функція видалення групи. Видаляємо з усіх таблиць де зустрічаються записи про таблиці, видаляємо іх, потім видаляємо усі картинки що були загружені користувачами на сервер у цю групу.
mysql_query("DELETE FROM `soc_disc` WHERE `group_id`='{$_GET['groupname']}'");
mysql_query("DELETE FROM `soc_media_comments` WHERE `group_id`='{$_GET['groupname']}'");
mysql_query("DELETE FROM `soc_users_groups` WHERE `group`='{$_GET['groupname']}'");
$res = mysql_query("SELECT * FROM `soc_upload_files` WHERE `group_id`='{$_GET['groupname']}'");
while ( $row = mysql_fetch_array( $res ) ){
$files[] = $row;
unlink ('../'.$files['url']);
}
mysql_query("DELETE FROM `soc_upload_files` WHERE `group_id`='{$_GET['groupname']}'") or die(mysql_error());
$res_main = mysql_query("SELECT * FROM `soc_groups` WHERE `id`='{$_GET['groupname']}'") or die(mysql_error());
while ( $row_main = mysql_fetch_array( $res_main ) ){
$files_main[] = $row_main;
@unlink ($files_main['url']);
}
mysql_query("DELETE FROM `soc_groups` WHERE `id`='{$_GET['groupname']}'") or die(mysql_error());
header("Location:index.php?page=mygroup");
}
function LastUsersImg(){ //
за допомогою функції вибираємо останню завантажену картинку користувача.
$user = @mysql_fetch_array( mysql_query( "SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'" ) );
$res = mysql_query( "SELECT * FROM `soc_upload_files` WHERE author_id='{$user['id']}' ORDER BY `time` DESC LIMIT 1" );
$result = @mysql_fetch_array($res);
return $result;
}
function Comments(){ //
вибираємо усі коментарі для даної картинки.Якщо коментарів немає, то повертаємо відповідний напис.
$res = mysql_query( "SELECT * FROM `soc_media_comments` WHERE `group_id`='{$_GET['groupname']}' AND `image_id`='{$_GET['imgId']}'" );
while ($row = @mysql_fetch_array($res))
$allComm[] = $row;
if (is_array($allComm)){
return $allComm;
}else{
echo "<div style=\"text-align:center;padding-bottom:5px;\">There are no comments yet...</div>";
}
}
function SendEmail(){ //
відпрака листа на поштову скриньку в Інтернеті, в якому повідомляється що користувач був запрошений у групу.
$mail = explode (",", $_POST['invEmail']);
$subject = 'artput.jp/Invitation';
$message = 'You were invited to join the group on artput.jp\n
Link to view group -http://artput.jp/index.php?page=grouppreview&groupname='.$_GET['groupname']
for ( $l = 0; $l < count($mail); $l++)
mail($mail[$l], $subject, $message);
}
function SendInvitationMessage(){ //
повідомлення що приходить користувачу на сайті, що він був запрошений до групи.
$groups = @mysql_fetch_array( mysql_query( "SELECT * FROM `soc_groups` WHERE `id`='{$_GET['groupname']}'" ) );
$text = 'Hello, you was invited to join the group <a style="color:#009CEC;" href="http://artput.jp/index.php?page=grouppreview&groupname='.$_GET['groupname'].'">'.$groups['title'].'</a> by '.$_COOKIE['username'].'.';
$text = addslashes($text);
$subject = 'Join group';
$to = explode (",", $_POST['invitedFriends']);
for ($i = 0;$i < count($to); $i++)
mysql_query("INSERT INTO `soc_messages`(`from`,`to`,`subject`,`text`,`date`) VALUES('".$_COOKIE['username']."','".$to[$i]."','".$subject."','".$text."','".time()."');") or die(mysql_error());
}
function GetAllUsers(){ //
обираємо усіх користувачів, які знаходяться у групі та всю інформацію про них
$res = mysql_query("SELECT `user` FROM `soc_users_groups` WHERE `group`='{$_GET['groupname']}'");
while ( $row = @mysql_fetch_array($res))
$result = mysql_query("SELECT * FROM `soc_users` WHERE `id`='{$row['user']}'"));
$allUserInfo[] = $result;
return $allUserInfo;
}
function CreateGroup(){ //
функція для створення групи.
mysql_query("INSERT INTO `soc_groups` (`title`,`url`,`description`,`contact_info`,`type`,`admin`,`fields`,`time`,`size`,`web_title`,`web_url`) VALUES ('{$_POST['GroupName']}' , 'images/groups/default_banner.jpg' , '{$_POST['groupDescription']}' , '{$_POST['location']}' , '{$_POST['type']}' , '{$_COOKIE['username']}', '{$_POST['fields']}' , ". time() ." , '1' , '{$_POST['web_title']}', '{$_POST['web_url']}' );") or die(mysql_error());
$row = mysql_insert_id();
$res = @mysql_fetch_array(mysql_query("SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'"));
mysql_query("INSERT INTO `soc_users_groups`(`user`,`group`,`admin`) VALUES('{$res['id']}', '$row', '1')");
return $row;
}
function New_Topic(){ //
створення нової теми на форумі відповідної групи.
$res = @mysql_fetch_array(mysql_query("SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'"));
mysql_query("INSERT INTO `soc_disc` (`parent`,`title`,`post`,`time`,`group_id`,`user_id`) VALUES(0,'{$_POST['new_topic2']}','{$_POST['first_post2']}',".time().",'{$_POST['post_group_id']}','{$res['id']}')") or die(mysql_error());
}
function SendMessageTo(){ //
повідомлення для користувача що хтось відповів прокоментував його тему.
mysql_query("INSERT INTO `soc_messages`(`from`,`to`,`subject`,`text`,`date`) VALUES('".$_COOKIE['username']."','".$_POST['send_to']."','Answer on topic: ".$_POST['topic_title']."','".$_POST['text_message']."','".time()."');") or die(mysql_error());
}
function SearchGroups( $pageno = '', $items = '' ){ //
пошук груп
$sql = "SELECT * FROM `soc_groups` WHERE `title` LIKE '%{$_POST['searchGroup']}%'";
if( $pageno )
$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items";
$res = mysql_query($sql);
while ( $row = mysql_fetch_array( $res ) )
$group[] = $row;
return $group;
}
function adminId(){
// дізнаємось ідентифікатор адміністратора групи.
$group_admin = @mysql_fetch_array( mysql_query("SELECT * FROM `soc_groups` WHERE `admin`='{$_COOKIE['username']}' AND `id`='{$_REQUEST['groupname']}'") );
return @mysql_fetch_array( mysql_query( "SELECT * FROM `soc_users` WHERE username='{$group_admin['admin']}'" ) );
}
}
?>
7.7 Опис деяких фрагментів коду мови JavaScript
$('.required').blur(function (){ //
якщо необхідні поля пусті, то гранциці поля стають червоного кольору.
if($(this).val() == '') //
якщо поле пусте
$(this).css("borderColor","red"); //
підсвічуємо його червоним кольором.
еlse //
якщо ні
$(this).css("borderColor","grey"); //
підсвічуємо звичайним сірим кольором.
});
$('img.createCircle').click(function (){ //
перевірка на те, щоб усі поля, які необхідні для створення групи, були заповнені, якщо ні, підсвічуємо їх червоним кольором, та показуємо повідомлення. Якщо заповнені - робимо формі сабміт.
var error = 0; //
оголошуємо змінну та присвоюємо їй значення 0.
$('.required').each(function (){ //
перевіряємо кожне поле з даним класом.
if($(this).val() == ''){ //
якщо поле пусте, то змінній error надається значення одиниці і колір границь червоний.
error = 1;
$(this).css("borderColor","red"); //
якщо ні
}else
$(this).css("borderColor","grey"); //
підсвічуємо звичайним сірим кольором.
});
if(error != 0){ //
якщо змінна не дорівнює 0, то піднімається сторінка до верху і показується дів з надписом, що потрібно заповнити всі поля.
$(document).scrollTop(0);
$('div.clay').show();
Подобные документы
Вибір архітектури та інструментальних засобів розробки. Розробка модуля для перегляду сторінок сайту, доступного, зручного інтерфейсу системи адміністрування. Створення бази даних. Опис механізмів передачі даних між сторінками. Реалізація форуму на сайті.
дипломная работа [7,1 M], добавлен 24.09.2012Структура, характеристики та принципи розробки сучасного сайту-візитки. Розробка дизайну. Характеристика сайту кав’ярні. Основні вимоги до програми та до інтерфейсу. Опис проектних рішень, інструментів та підходів до розробки з обґрунтуванням їх вибору.
дипломная работа [3,2 M], добавлен 19.03.2017Загальна характеристика особливостей алгоритму просування сайту. Розробка основних елементів фірмового стилю, що складають пакет рекламної кампанії. Етапи розробки Web-сайту компанії "Гранд Авто". Особливості програмної частини і структури сайту.
дипломная работа [3,3 M], добавлен 26.02.2012Види сайтів та характеристика сайту-візитки, сайту-магазину, новинного сайту та соціальних мереж. HTML та CSS як основа шаблону сайту та стилю оформлення. Розробка структури та вибір дизайну порталу новин, його програмний код та вигляд у браузері.
дипломная работа [2,4 M], добавлен 20.10.2013Вивчення особливостей використання всесвітньої мережі Інтернет, адресації інформації, вірусних загроз. Розробка та підготовка сайту до експлуатації за допомогою візуального редактора Front Page. Характеристика дизайну та структури створеного web-сайту.
курсовая работа [1,4 M], добавлен 22.11.2012Характеристика приватного підприємства "ІнтерТех". Опис та оцінка діяльності підрозділів інформатизації підприємства. Розробка і модифікація веб-сайту для рекламування послуг і товарів даної організації. Вибір мови CMS Joomla та установка бази даних.
отчет по практике [1,6 M], добавлен 14.07.2015Опис інформаційного забезпечення системи для розробки сайту. Технічне завдання на розробку web-сторінки. Комплект засобів, проектування та завантаження сторінок. Тестування сайту в різних браузерах. Розрахунок собівартості та ціни програмного продукту.
дипломная работа [1,8 M], добавлен 14.05.2012Реалізація портальної системи, на основі якої працює веб-сайт ПП "Агромат". Розробка системи адміністрування веб-сайтом для редагування контенту веб-сайту за допомогою веб-браузера з використанням мови програмування РНР та сервера баз даних MySQL.
дипломная работа [1,9 M], добавлен 24.09.2012Розробка сайту, який буде мати можливість наповнення інформацією про стан команд та їх гравців у лізі в режимі реального часу. Переваги використання технології web 2.0. Написання програмного коду веб-сайту та його реалізація, головна сторінка Index.php.
дипломная работа [3,4 M], добавлен 18.08.2014Розробка динамічних та статичних зображень для сайту за допомогою відеоредактора Adobe After EffectCS6 та графічного редактора Adobe Photosop CS6. Розробка структури сайту. Багатоваріантний аналіз розв’язку задачі. Створення анімованого логотипу.
курсовая работа [1,8 M], добавлен 07.12.2014