Розробка соціальної мережі "Social network Artput"

 

Зміст


Вступ

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. реалізувати пошук по сайту;

.3. забезпечити можливість реєстрації користувачів на сайті;

.4. написати скрипти для авторизації користувачів;

.5. реалізувати форум на сайті;

.6. реалізувати групи користувачів, в які б вони змогли об'єднуватись.

3.Реалізувати систему адміністрування веб-сайту:

3.1. написати програмні модулі для забезпечення обмеженого доступу до системи адміністрування.

3.2. створити скрипти для додавання, оновлення та видалення даних для кожного модуля сайту.

.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.Ціна - РНР вільно розповсюджується, причому абсолютно безкоштовно.

.Синтаксис РНР дуже схожий на синтаксис С або Perl.

.В мові програмування РНР немає типізації даних і нема необхідності в діях по виділенню/звільненню ОП.

.Програми на РНР мають кращу читабельність, ніж аналогічні програми на інших мовах. РНР код значно легше прочитати і зрозуміти.

Звязок РНР-MySQL є кросплатформенним. Це означає, що можна працюючи в Windows розроблювати програми, що призначені для роботи в UNIX. Крім того, РНР може працювати як зовнішній CGI-процес, або як звичайний інтерпретатор скриптів, або як модуль, що підключається до Web серверу Apache або IIS.

4. Вимоги до технічних засобів


Розробка потребує наявності сервера та компютера користувача, але при необхідності, компютер користувача може виконувати роль сервера.

Програма може бути встановлена у будь-якій з розповсюджених на сьогоднішній день операційних систем - Windows 9x/NT/XP/2003/Vista, Linux, Unix, та ін. Мінімальні вимоги до системи такі:

1. Процесор - 300 Мгц 2. Оперативна память - 32 Мб 3. Відеокарта та монітор - 640x480, 256 кольорів при частоті розгортки 75 Гц (TCO95) 4. Клавіатура - довільна 5. Миша - довільна 6. Вільний дисковий простір - 120 Мб (для встановлення серверів Apache та MySQL). Наведена конфігурація не перевищує рівень оснащення компютерів користувачів на даний момент часу, тому програма буде доступною широкому колу користувачів.

Конфігурація компютера, на якому виконувалась розробка:


1. ПроцесорIntel Pentium 4 2,6 GHz2. Оперативна память512 Mb3. ВідеокартаSVGA 128Mб4. МоніторSVGA5. Жорсткий диск120 Gb6. ПринтерSamsung ML-12505. Інструкції системному адміністратору


5.1 Установка Apache 2.0 під Windows XP


Викачати ПО для установки Apache можна, наприклад, з його офіційного сайту <#"256" src="doc_zip1.jpg" />

Рис. 1. Автоматична установка серверу Apache


Щоб встановити HTTP-сервер Apache на свій комп'ютер, потрібно натискувати на кнопку Next. До речі кажучи, ця ж програма дозволить змінити або видалити вже встановлений web-сервер.

Після натиснення кнопки Next програма запропонує погодитися з умовами ліцензії (рис. 2).


Рис. 2. Ліцензійна угода


Наступний екран міститиме інформацію про сервер Apache, і зокрема про його Windows-реалізацію (його зображення не приводимо).

На наступному кроці потрібно ввести ім'я мережного домена, ім'я серверу і e-mail адміністратора. Програма спробує автоматично визначити домен і хост по настройках комп'ютера (рис. 3).


Рис. 3. Основна інформація про сервер


Після того, як було введено дані у вищенаведену форму, потрібно вибрати тип установки: повна (встановлюються всі компоненти серверу) або визначувана користувачем (можна вибрати компоненти для установки) (рис. 4). сайт інтерфейс apache дані

Рис. 4. Тип установки


Вибір компонентів серверу не дуже великий - це інструменти, необхідні для роботи серверу і документація до нього (рис. 5).


Рис. 5. Вибір компонентів користувацької установки


Виберемо повну установку. Тоді на наступному кроці програма запропонує вибрати папку, в яку буде встановлений сервер. За умовчанням сервер встановлюється у папку C:\Program <../../Program> Files\Apache Group\ (рис. 6).

Рис. 6. Папка, в яку буде встановлений сервер


На наступному екрані (рис. 7) буде потрібно підтвердити правильність введених даних і почати установку. З будь-якого вікна установки, включаючи і це, можна повернутися назад і змінити введені раніше дані.


Рис. 7. Початок установки


Після натиснення кнопки Install почнеться безпосередня установка серверу. Від користувача ніяких додаткових дій більше не потрібен. З одного боку, це добре, але є у такої автоматизованої установки і деякі недоліки. Наприклад, домашні директорії користувачів виявляються там же, де і файли настройок серверу (С:\Program <../../Program>Files\Apache Group\Apache\users\). Це небезпечно, якщо на комп'ютері працює декілька користувачів, що не є адміністраторами серверу. Але спершу можна нічого не міняти. Припустимо, ми запустили установник, ввели всі необхідні дані, він виконав всі операції успішно і говорить, що сервер встановлений. Як перевірити, чи дійсно сервер встановлений? Набираємо у вікні браузера <#"222" src="doc_zip8.jpg" />

Рис. 8. Сторінка вітання


Отже, сервер встановлений. Файли, які повинні бути оброблені сервером, можна зберігати або в корені серверу (в нашому випадку це С:\Program <../../Program> Files\Apache Group\Apache\htdocs), або в директоріях користувачів (в нашому випадку це С:\Program <../../Program> Files\Apache Group\Apache\users\). Місцеположення кореня серверу і директорій користувачів прописано в настройках серверу, а точніше, у файлі конфігурації httpd.conf (знайти його можна в С:\Program <../../Program> Files\Apache Group\Apache\conf). Для зміни цих шляхів потрібно змінити відповідні змінні у файлі конфігурації серверу. Змінна у файлі конфігурації ServerRoot відповідає за кореневу директорію серверу, а змінна UserDir - за директорію, де розташовуватимуться файли користувачів серверу (для більш безпечної роботи радимо змінити змінну UserDir на що-небудь типу c:\users\). Щоб отримати доступ до файлу test.html, що знаходиться в корені серверу, потрібно набрати в браузере <#"center">.2 Установка PHP 5.3.2 під Windows


Скачати инсталлятор можна за адрессою: #"justify">Зміни в файлі 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 є строка: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

.0.0.1 localhost

.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(); ?> та запускаємо в браузері адресу #"justify">У випадку успіху Ви побачите таблицю php.

Редагування файла php.ini. Ціль: підключити корісні нам бібліотеки функцій. В строці 809 ми повинні подкорегувати директиву extension_dir: вона повинна мати вигляд extension_dir = "c:/php/ext" (без точки із запятою в початку!). Розділ розширень (Dynamic Extensions) починається приблизно з 946-ї строки. Список розширень з описом Ви можете знайти за адресою: #"justify">Ми вмикнемо три розширення, які нам знадобляться в роботі:

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 або інший) і у рядку адреси ввести адресу компютера, який використовується в якості сервера: #"justify">Після цього у вікні браузера зявиться головна сторінка сайту, яка містить загальну кількість проектів користувачів та фільтри для них.


Рис. 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

(містить інформацію про коментарі проектів та ідей користувачів)

ПолеОписidID-номер коментаряcomments_idID-номер (якщо проект - work_id, ідея - creative_id)authorНік користувачаtimeДатаcommentЗміст коментаря

Таблиця soc_creatives

(містить інформацію про креатині ідеї користувачів)

ПолеОписidID-номер ідеїauthor_idID-номер автораauthorНік автораpictureРозміщення картинки на серверіtitleНазваaboutТемаdateДата додання на сайтtagsТегиestimateОцінка ідеїviewsКількість оглядів

Таблиця soc_disc

(містить інформацію про форум групи сайта)

ПолеОписidID-номер теми чи повідомленняparentТема - 0, повідомлення - ідентифікатор темиtitleНазваpostЗмістtimeЧас доданняgroup_idID-номер групиuser_idID-номер користувача

Таблиця soc_groups

(містить інформацію про групи сайта)

ПолеОписidID-номер групиtitleНазва групиurlМісце банера групи на серверіdescriptionОпис групиcontact_infoКонтактна інформація адміністратораtypeТип групи(Приватна чи загальна)adminНік адміністратора групиfields Інтереси, які обговорюються в групіtimeЧас створення групиsizeРозмір групиweb_titleНазва сайту групиweb_urlСсилка на розміщення сайту

Таблиця soc_media_comments

(містить інформацію про коментарі фотокарток в групах сайта)

ПолеОписidID-номер коментаряusernameНік користувачаgroup_idID-номер групиimage_idID-номер картинкиcommentКоментарtimeЧас

Таблиця soc_messages

(містить інформацію про повідомлення користувачів)

ПолеОписidID-номер повідомленняfromВід когоtoКомуsubjectТемаtextЗмістdateДата відправки

Таблиця soc_upload_files

(містить інформацію про загружені файли в групах сайта)

ПолеОписidID-номер файлуauthor_idID-номер автораtitleНазваdescriptionОписurlРозміщення файлу на серверіgroup_idID-номер групиtimeЧас завантаження

Таблиця soc_users

(містить інформацію про користувачів веб-сайта)

ПолеОписidID-номер користувачаnameІмя користувачаsurnameПризвіще користувачаoccupationПрофесія користувачаcompanyКомпанія, де працюєusernameНік на сайтіpasswordПарольemailПоштова скринька в інтернетіskillsНавички користувачаstatusСтатус користувачаfriendsДрузі користувачаurlДомашній сайт користувачаmember_sinceДата регістрації користувачаpicture_urlСсилка фотокартки на серверіlocationДе знаходиться користувачcountviewsКількість переглядів профайлуappreciationsКількість подяк користувачуlast_viewedДата останнього переглядуlast_appreciatedДата останньої подяки

Таблиця soc_users_groups

(містить інформацію про користувачів і про групи в яких вони знаходяться)

ПолеТипidID-номер записуuserID-номер користувачаgroupID-номер групиadminID-номер адміністратора групи

Таблиця soc_works

(містить інформацію про проекти користувачів веб-сайту)

ПолеОписidID-номер проектуauthor_idID-номер користувачаauthorІмя користувача titleНазваurlСсилка, на картинкуtagsТегиestimateОцінкиviewsКількість проглядівdateДата доданняlast_viewedДата-останній проглядlast_appreciatedДата-останнє одобренняclientДля кого виконана роботаdisciplineОбласть роботиsiteДомашній сайтcommentКоментарій від користувача

7.2 Структура бази даних



7.3 Структура веб-сайту


·class - папка містить класи та функції класів веб-сайта.

·css - тут розміщуються файли стилів веб-сайта;

·db - папка містить клас підключення до бази даних;

·images - містить усі файли (графічні та html-документи), які необхідні для формування дизайну сайту;

·includes - містить файли, які підключаються до головної сторінки в ході роботи веб-сайта;

·tmp - зберігає тимчасові файли.

·uploads - містить файли, які були завантажені користувачами..php - головний файл сайту.

7.4 Передача даних між сторінками


Для передачі даних між сторінками у дипломному проекті використано 5 способів:

. Використання сесій.

. Використання кукісів.

. Передача даних за допомогою GET-методу.

. Передача даних за допомогою POST-методу.

. Використання спільної бази даних.


7.5 Файл, який встановлює взаємодію з базою даних


Скрипт, який встановлює зєднання з базою даних.


<?php

$db_link=mysql_connect('localhost','root','123456') or die('Could not connect to mysql server.');_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"( $_COOKIE['username'] ){

$tmp = explode(",",$_cfgSuperModers);sm_trim(&$value, $key){

$value = trim( $value );

}_walk($tmp, 'sm_trim');

$isSuperModerator = in_array($_COOKIE['username'],$tmp);

}

?>


У програмному коді використано такі функції бібліотеки MySql:

.mysql_connect - встановлює з'єднання з сервером баз даних MySQL. Функція приймає три параметри: перший - адреса сервера, другий - логін користувача MySQL і третій - пароль користувача MySQL.

.mysql_select_db - вибирає базу даних MySQL.

.mysql_affected_rows - повертає кількість рядків, що були використані попередньою операцією MySQL.

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

.mysql_insert_id - повертає останній ідентифікатор який було внесено в таблицю.

.mysql_db_query - виконує запит MySQL

.mysql_fetch_array - отримати результат виконання запиту як асоціативний масив.

.mysql_query - відправляє SQL-запит до серверу MySQL.

.mysql_close - закриває MySQL- зєднання.


7.6 Опис классу, який відповідає за розділ «Groups»


Найбільший класс на сайті. Інші шматки php - коду вставлені на сторінках сайту, де вони використовуються.


<?Groups{getGroups( $pageno = '', $items = '' ){ //

функція приймає на вхід 2 параметри номер сторінки і кількість груп на 1 сторінці.

$sql = "SELECT * FROM `soc_groups` WHERE 1";//

будуємо запит де, вибираемо с бази данних усі групи користувачів( $pageno ) //

якщо змінна існує, то додаємо до запиту LIMIT

$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items";

$grp = mysql_query ( $sql ); //

виконуємо запит($fgroup = mysql_fetch_array( $grp ) ) //

прокручуємо в циклі стількі разів, скільки у нас повернулося різних даних

$tmp[] = $fgroup; //

записуємо данні в змінну$tmp;// повертаємо змінну

}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']}'") ); //

перевіряємо чи вона вже існує в группі( is_array( $userIn ) ){//

якщо існує записуємо текст в змінну.

$error = 'alert';

}else{ //

в іншому випадку робимо запит на вставку нової строки у таблицю_query ( "INSERT INTO `soc_users_groups` (`user`,`group`,`admin`) VALUES ('{$user['id']}', '{$_GET['groupname']}', 0)");_query ("UPDATE `soc_groups` SET `size`=`size`+1 WHERE `id`={$_GET['groupname']}") or die(mysql_error()); //

обновлюємо розмір группи

}$error;//

повертаємо змінну

}LeaveGroup(){ //

функція відповідає за вихід з группи

$user = mysql_fetch_array( mysql_query("SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'") ); //

вибираємо людину з таблиці_query("DELETE FROM `soc_users_groups` WHERE `user`='{$user['id']}' AND `group`='{$_GET['groupname']}'"); //

видаляємо її з таблиці, яка показує, хто існує в группі._query ("UPDATE `soc_groups` SET `size`=(`size`-1) WHERE `id`={$_GET['groupname']}"); //

оновлюємо розмір таблиці.

}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']}'"; //

будуємо запит( $pageno ) //

якщо змінна не пуста

$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items"; // додаємо до запиту ліміт.

$res = mysql_query ( $sql ); //

обробляємо запит.( $row = mysql_fetch_array( $res ) )

$groups[] = @mysql_fetch_array( mysql_query( "SELECT * FROM `soc_groups` WHERE `id`='{$row['group']}'" ) );//

вибираємо с таблиці, яка показує в яких групах вже перебуває користувач та записуємо дані у змінну, яку и повертаємо нижче.$groups;

}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 і ідентифікатор групи дорівнює змінній, яку ми отримаємо.( $pageno )

$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items";

$res_users = mysql_query( $sql ); //

виконуємо запит( $row = @mysql_fetch_assoc( $res_users ) )

$users[] = $row; //

отримані данні записуємо у змінну$users; //

повертаємо змінну.

}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); //

підраховуємо комірки$count; //

повертаємо кількість

}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']}'"; //

будуємо запит де вибираємо проекти за умови виконання усіх умов які вказані в запиті.( $pageno )

$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items"; // додаємо ліміт, якщо змінна передається.

$res_users = mysql_query( $sql );( $row = @mysql_fetch_assoc( $res_users ) )

$projects[] = $row; //

отримані дані записуємо у зміну$projects; //

повертаємо дані

}Randomize( $projects ){ //

функція яка вибирає 4 проекта із загальної кількості в повертає в довільному порядку.

$num = 4; //

записуємо кількість проектів які треба відображати в довільному порядку( count( $projects ) > $num){ //

якщо загальна кількість проектів більша за 4 то робимо цикл( $i = 0; $i < $num ; $i++){

$randr = rand( 0,count( $projects )-1 ); //

генеруємо довільне число від 0 до загальної кількості проектів.($q = 0; $q<count($save_randr); $q++ )( $randr == $save_randr[ $q ] ){ //

якщо змінна ринд прирівнюється до змінної сєйврєнд, то

$randr = rand( 0,count( $projects )-1 ); // генеруємо ще раз довільне число.

$q = -1; //

змінна дорівнює -1.

}

$save_randr[] = $randr;

$random[] = $projects[$randr]; //

записуємо 4 довільні проекти в змінну.

}

}else{$projects;

}$random;

}getAllMedia( $pageno = '', $items = '' ){ //

вибираємо усі картинки які користувачі завантажили до групи.

$sql = "SELECT * FROM `soc_upload_files` WHERE `group_id`='{$_REQUEST['groupname']}' ORDER BY time DESC"; //

будуємо запит, де вибираємо картинки відповідної групи и розташовуємо їх у порядку завантаження починаючи з найостаннішої.( $pageno )

$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items";

$res = mysql_query( $sql );( $row = @mysql_fetch_array( $res ) )

$getMedia[] = $row;$getMedia;

}getIDAllMedia ( $id ){

функція дозволяє отримати усі ідентифікатори завантажених картинок в відновідну групу.

$sql = "SELECT * FROM `soc_upload_files` WHERE `group_id`='{$_GET['groupname']}' ORDER BY time DESC"; //

будуємо відповідний запит.

$res = mysql_query( $sql );

$i = 1;( $row = @mysql_fetch_array( $res ) ){( $row['id'] == $id )$i;

$i++;

}

}SizeMedia(){ //

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

$row = mysql_query("SELECT * FROM `soc_upload_files` WHERE `group_id`='{$_GET['groupname']}'");mysql_num_rows( $row );

}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']}'");// вибираємо картинки с таблиці данного користувача.( $row_images = @mysql_fetch_array($row) )

$userImages[] = $row_images;$userImages;//

повертаємо картинки.

}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']}'" ) ); // перевіряємо чи користувач є адміністратором групи.( $_COOKIE['username'] ){( $group['type'] == '1' or !$group['type'] ){( is_array( $row ) ){( $admin_group['admin'] AND $option == 'inner' )"<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>";($admin_group['admin'] AND $option == 'outer')"<a href=index.php?page=insidegroup&groupname=$gid&delete_group=true style=color:#626667;font-size:11px;padding-left:6px;>Delete Group</a>";( $option == 'inner' )"<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>";"<a href=index.php?page=mygroup&groupname=$gid&exit=true style=color:#626667;font-size:11px;padding-left:6px;>Leave Group</a>";

}else{( $option == 'outer' )"<a href=index.php?page=mygroup&groupname=$gid&join=true style=color:#626667;font-size:11px;padding-left:6px;>Join Group</a>";"<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{( is_array( $row ) ){( $admin_group['admin'] AND $option == 'inner' )"<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>";($admin_group['admin'] AND $option == 'outer')"<a href=index.php?page=insidegroup&groupname=$gid&delete_group=true style=color:#626667;font-size:11px;padding-left:6px;>Delete Group</a>";( $option == 'inner' )"<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>";"<a href=index.php?page=mygroup&groupname=$gid&exit=true style=color:#626667;font-size:11px;padding-left:6px;>Leave Group</a>";

}else{( $option == 'outer' )"<a href=#=_top = $(document).scrollTop();_height = $(window).height();_height = window_height/2 - 75;_height += from_top;

$('#alert_join_private_group').css('top',element_height+'px');_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');false;=color:#626667;font-size:11px;padding-left:6px;>Join Group</a>";"<a href=#=_top = $(document).scrollTop();_height = $(window).height();_height = window_height/2 - 75;_height += from_top;

$('#alert_join_private_group').css('top',element_height+'px');_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');false;=color:#6D94FF;font-size:11px;font-weight:bold;font-family:Arial,sans-serif;cursor:pointer;>Join Group</a>";

}

}

}else{( is_array( $row ) ){( $option == 'inner' )"<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>";"<a href=index.php?page=login style=color:#626667;font-size:11px;padding-left:6px;>Leave Group</a>";

}else{( $option == 'outer' )"<a href=index.php?page=login style=color:#626667;font-size:11px;padding-left:6px;>Join Group</a>";"<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>";

}

}

}DeleteGroup(){ //

функція видалення групи. Видаляємо з усіх таблиць де зустрічаються записи про таблиці, видаляємо іх, потім видаляємо усі картинки що були загружені користувачами на сервер у цю групу._query("DELETE FROM `soc_disc` WHERE `group_id`='{$_GET['groupname']}'");_query("DELETE FROM `soc_media_comments` WHERE `group_id`='{$_GET['groupname']}'");_query("DELETE FROM `soc_users_groups` WHERE `group`='{$_GET['groupname']}'");

$res = mysql_query("SELECT * FROM `soc_upload_files` WHERE `group_id`='{$_GET['groupname']}'");( $row = mysql_fetch_array( $res ) ){

$files[] = $row;('../'.$files['url']);

}_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());( $row_main = mysql_fetch_array( $res_main ) ){

$files_main[] = $row_main;

@unlink ($files_main['url']);

}_query("DELETE FROM `soc_groups` WHERE `id`='{$_GET['groupname']}'") or die(mysql_error());("Location:index.php?page=mygroup");

}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);$result;

}Comments(){ //

вибираємо усі коментарі для даної картинки.Якщо коментарів немає, то повертаємо відповідний напис.

$res = mysql_query( "SELECT * FROM `soc_media_comments` WHERE `group_id`='{$_GET['groupname']}' AND `image_id`='{$_GET['imgId']}'" );($row = @mysql_fetch_array($res))

$allComm[] = $row;(is_array($allComm)){$allComm;

}else{"<div style=text-align:center;padding-bottom:5px;>There are no comments yet...</div>";

}

}SendEmail(){ //

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

$mail = explode (",", $_POST['invEmail']);

$subject = 'artput.jp/Invitation';

$message = 'You were invited to join the group on artput.jp\nto view group -#"justify">}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="#"justify">$text = addslashes($text);

$subject = 'Join group';

$to = explode (",", $_POST['invitedFriends']);($i = 0;$i < count($to); $i++)_query("INSERT INTO `soc_messages`(`from`,`to`,`subject`,`text`,`date`) VALUES('".$_COOKIE['username']."','".$to[$i]."','".$subject."','".$text."','".time()."');") or die(mysql_error());

}GetAllUsers(){ //

обираємо усіх користувачів, які знаходяться у групі та всю інформацію про них

$res = mysql_query("SELECT `user` FROM `soc_users_groups` WHERE `group`='{$_GET['groupname']}'");( $row = @mysql_fetch_array($res))

$result = mysql_query("SELECT * FROM `soc_users` WHERE `id`='{$row['user']}'"));

$allUserInfo[] = $result;$allUserInfo;

}CreateGroup(){ //

функція для створення групи._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']}'"));_query("INSERT INTO `soc_users_groups`(`user`,`group`,`admin`) VALUES('{$res['id']}', '$row', '1')");$row;

}New_Topic(){ //

створення нової теми на форумі відповідної групи.

$res = @mysql_fetch_array(mysql_query("SELECT * FROM `soc_users` WHERE `username`='{$_COOKIE['username']}'"));_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());

}SendMessageTo(){ //

повідомлення для користувача що хтось відповів прокоментував його тему._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());

}SearchGroups( $pageno = '', $items = '' ){ //

пошук груп

$sql = "SELECT * FROM `soc_groups` WHERE `title` LIKE '%{$_POST['searchGroup']}%'";( $pageno )

$sql .= " LIMIT ". ($pageno - 1) * $items. ",$items";

$res = mysql_query($sql);( $row = mysql_fetch_array( $res ) )

$group[] = $row;$group;

}adminId(){

// дізнаємось ідентифікатор адміністратора групи.

$group_admin = @mysql_fetch_array( mysql_query("SELECT * FROM `soc_groups` WHERE `admin`='{$_COOKIE['username']}' AND `id`='{$_REQUEST['groupname']}'") );@mysql_fetch_array( mysql_query( "SELECT * FROM `soc_users` WHERE username='{$group_admin['admin']}'" ) );

}

}

?>


7.7 Опис деяких фрагментів коду мови JavaScript


$('.required').blur(function (){ //

якщо необхідні поля пусті, то гранциці поля стають червоного кольору.($(this).val() == '') //

якщо поле пусте

$(this).css("borderColor","red"); //

підсвічуємо його червоним кольором.

еlse //

якщо ні

$(this).css("borderColor","grey"); //

підсвічуємо звичайним сірим кольором.

});

$('img.createCircle').click(function (){ //

перевірка на те, щоб усі поля, які необхідні для створення групи, були заповнені, якщо ні, підсвічуємо їх червоним кольором, та показуємо повідомлення. Якщо заповнені - робимо формі сабміт.error = 0; //

оголошуємо змінну та присвоюємо їй значення 0.

$('.required').each(function (){ //

перевіряємо кожне поле з даним класом.($(this).val() == ''){ //

якщо поле пусте, то змінній error надається значення одиниці і колір границь червоний.= 1;

$(this).css("borderColor","red"); //

якщо ні

}else

$(this).css("borderColor","grey"); //

підсвічуємо звичайним сірим кольором.

});(error != 0){ //

якщо змінна не дорівнює 0, то піднімається сторінка до верху і показується дів з надписом, що потрібно заповнити всі поля.

$(document).scrollTop(0);

$('div.clay').show();

}else //

якщо ні

$('#createGroup').submit(); //

передаємо форму на сервер.

});dismissUser(){ //

за допомогою Аякс запиту відправляємо дані на сервер про користувача якого адміністратор хоче видалити з групи. Потім без перезавантаження сторінки оновлюємо дані про користувачів и показуємо повідомлення по центру екрана, що користувач був видалений з групи.

$('.dismiss').click(function(){ //

коли натискаємо на елемент у якого даний клас, запускається функція.

$.get('includes/ajax_admin.php',{ //

створюємо Аякс запит та передаємо змінні на сервер.: '<?=$_GET['groupname'] ?>',_id : $(this).prev().val()

},(data){ //

коллбек функція отримує оброблені дані, та розміщає їх у елемент з ідентифікатором content_users.

$('#content_users').html(data);

$('#alert_confirmation_text').html('User was deleted from your group.'); //

виводимо інформацію, що видалення користувача з групи відбулося. Далі іде розрахунок центра екрану користувача, щоб повідомлення зявилося рівно по центру екрана._top = $(document).scrollTop();_height = $(window).height();_height = window_height/2 - 50;_height += from_top;

$('#alert_confirmation').css('top',element_height+'px');_width = $(window).width()/2 - 165;

$('#alert_confirmation').css('left',element_width+'px');

$('#alert_confirmation').show();();

}

);

});

}

// Підрозділ, де користувач може переглядати картинки групи.

Це так звана step carousel, що в перекладі означає пошагова карусіль.

Користувач бачить перед собою 1 картинку по середені відведеного місця.

Кляцаючи на стрілочку вліво чи вправо, відповідно змінюється картинка і коментарі під нею, без перезавантаження сторінки. Все зроблено через Аякс запити.cur_image = <?=$oGroups->getIDAllMedia( @$_REQUEST['imgId'] )?>;speed = 500;active_slider = false;queue = 0;

// Обявили змінні і присвоїли їм значення.lc_callback(){= parseInt ($('.subclip').css('left')) / 400; //

Визначаємо значення left у елемента, ділимо його на 400, і преобразовуємо у число.( sinum < 0 ) //

Якщо змінна менше 0, то робимо відповідні математичні перетворення.= (sinum - sinum*2); +=1;

$('#ajax_content').load('includes/get_comments_by_ajax.php',{ //

Робимо Аякс запит і відсилаємо змінні на сервер._id : $( '#slider_images_' + sinum ).attr('alt'),_id : '<?=$_GET['groupname']?>'

}

);

}

$('#right_arrow').click(function (){ //

Коли користувач натискає на праву стрілочку, запускається функція.

$('#right_arrow').attr('src','images/groups/rightArrowUnactive.gif'); //

Малюнок активної стрілочки змінюється на неактивний.( !active_slider ){ //

якщо змінна не активна, то робимо її активною._slider = true;( parseInt( $('.subclip').css('width') ) ==

parseInt($('.subclip').css('left') ) + 400 ) //

якщо ширина елемента класу сабклип прирівнюється до мінусового значення left+400 сабкліпу, то картинка здвигається на 200пікселів вліво, і швидко біглою строкою картинка змінюється на найпершу.

$('.subclip').animate({left: '-=200px'}, speed).animate(

{left: '+='+( parseInt( $('.subclip').width() )-200)+'px'}, speed, function (){ count_img_right();rc_callback(); active_slider = false; $('#right_arrow').attr('src','images/groups/rightArrowActive.gif'); });

еlse //

В іншому випадку на екран віїзжає картинка, яка була попередньою з лівої сторони.

$('.subclip').animate({left: '-=400px'}, speed, function (){ count_img_right();rc_callback(); active_slider = false; $('#right_arrow').attr('src','images/groups/rightArrowActive.gif'); });

}

});

Висновки


В рамках даної роботи було розроблено соціальну мережу під назвою "Social network Artput".

При розробці даної роботи були виконані всі вимоги технічного завдання. Було зпроектовано структуру бази даних та реалізовано скрипти на мові програмування РНР для роботи з нею; було розроблено модуль для збереження, редагування та перегляду сторінок сайту, реалізовано форум тощо.

Було реалізовано систему адміністрування веб-сайтом, яка дозволяє додавати та редагувати контент веб-сайту за допомогою веб-браузера.

Модульна організація розробленої системи дозволяє у будь-який момент часу доповнювати систему новими модулями.

При розробці даного порталу було використано мову програмування РНР, JavaScript та сервер баз даних MySQL. Для розробки дизайну сайту та обробки графічних зображень використовувалися такі графічні редактори як Adobe Photoshop CS4 і Gimp.


Зміст Вступ 1. Технічне завдання 2. Вибір архітектури розробки 4. Вибір інструментальних засобів розробки 5. Вимоги до технічних засобів 6

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ