You are on page 1of 83

Технически Университет

гр.Варна

u ДИПЛОМНА РАБОТА u

випуск
2005

Технически Университет - Варна

Факултет : ФИТА
Катедра : Компютърни науки и технологии

ДИПЛОМНА РАБОТА

ТЕМА
Разработване на Web сайт за авторски музикални
произведения

Дипломант : Юлиан Христов Георгиев
Специалност : Компютърни системи и технологии
Факултетен номер : 016065
Степен : бакалавър

Ръководител : гл.ас. д-р Диляна Станева

2005
гр. Варна

Съдържание Технически Университет - Варна
Дипломна работа

u УВОД u

Преглед на темата ................................................................ 02

u ГЛАВА I u

Обзор на възможностите на PHP 4 ....................................... 04
Какво е PHP ....................................................................................... 04
PHP 4 ................................................................................................. 05
Тагове ................................................................................................ 06
Синтаксис .......................................................................................... 07
Променливи ...................................................................................... 07
Оператори ......................................................................................... 08
Функции ............................................................................................ 09
MySQL ...................................................................................... 10
Какво е MySQL .................................................................................. 10
Възможности ..................................................................................... 10

Flash MX 2004 .......................................................................... 11
Обобщение .............................................................................. 11
Дефиниция на задачата ....................................................... 12

u ГЛАВА II u

Съставяне на базата от данни ................................................ 14
Проектиране на таблиците ................................................................ 14
Връзка с MySQL ................................................................................ 18
Изграждане ...................................................................................... 20
Проектиране на Web Сайта ................................................... 23
Главна страница ............................................................................... 23
Регистриране на нов потребители .................................................... 26
Главна страница за регистрирани потребители ............................... 27
Качване на файл ............................................................................... 28
Промяна на регистрацията ............................................................... 28
Изход от системата ........................................................................... 29
Обобщение ...................................................................................... 29

t

Съдържание Технически Университет - Варна
Дипломна работа

u ГЛАВА III u

Програмна реализация ........................................................... 31
HTML документи ............................................................................. 31
PHP скриптове ................................................................................. 33
Функции за работа с MySQL ............................................................. 33
Работа със session ............................................................................. 34
Четене на запис ................................................................................ 35
Регистриране на нов потребител ....................................................... 37
Рейтинг ............................................................................................ 42
Автентикация на клиенти ................................................................. 43
Промяна на регистрацията ............................................................... 44
Управление на личните записи ......................................................... 45
Flash Action скрипт ........................................................................... 48

u ГЛАВА IV u

Възможности на web сайта..................................................... 50
Главна страница ............................................................................... 50
Регистрация ...................................................................................... 51
Услуги за регистрирани посетители .................................................. 52

u ПРИЛОЖЕНИЕ u
54÷80

Варна Дипломна работа Увод .Технически Университет .

02 Увод Музикалният свят на компютрите В днешно време компютрите се използват в асбсолютно всяка сфера на човешкия живот. в който персоналния компютър е в състояние да изнесе своеобразен концерт симулирайки звученето на всеки отделен инструмент от оркестър. който е най добре да е в mp3 формат.Варна Дипломна работа . За да бъде осъществено възпроизвеждане направо от страницата е нужндо да се използва и някакъв вид мултимедиино приложение за създаване на поток от данни. В наши дни броят на подобни продукти е невероятно голям. Софтуер Мулти-функционалността на процесорите е позволила създаването и на софтуаер за композиране на музика. С течение на времето качеството се е подобрявало и така се стига до момента. Creative. Необходимостта от разработка на подобен проект Лесния достъп до софтуеар за създаване на музика предполага голямото наличие на хора ползващи такива програми. Всеки регистриран на сайта трябва да има възможност на качи своят файл. Именно развитието в сфера на сотуера възможност дава възможност на всеки ползващ персонален компютър да го изпозва и за създаване на музика. Защо една от тях да не е изкуството или по точно музиката? С появяването на първите звукови карти през 80-те и развитието на възможността на компютрите да възпроизвеждат звуци от реалния свят отваря една светла възможност пред композиторите. Дори съществуват програми възпроизвеждащи перфектно гас на певец. Разработката на подобени услуги предполага създаването на динамична web страница с ползване на база данни. Технически Университет . Разработката на Web сайт. За да бъдат сглобени в един цялостен продукт се избира използването на HTML документ и Аpache сървър да осществи връзката за броадкаста на Web сайта в интернет пространството. на който могат да се предоставят на посетители авторски музикални произведения е решението на този проблем. Macromedia Flash е един елегантен подход за възпроизвеждане на аудио файлове. Програми като FruityLoops и Reason имат възможността да генерират всякакъв вид реални инструменти и са снабдени с ефекти и софтуерни процесори за оформяне на звученето. и човек не може да го различи от истинския такъв. който притежава вградена декомпресия на mp3 формат. Roland. С цел подпомагане на развитието на млади таланти е добре да се създаде ''виртуална сцена'' за музикални изяви. Водещи фирми в разработването на хардуеар в тази сфера са Yamaha. Най мощните продукти в тази област са скриптовият език PHP и MySQL сървърът за бази от данни. Страницата предполага наличие на механизъм за регистриране на потрбител.

Технически Университет .Варна Дипломна работа Преглед на приложенията 1 Глава .

PHP има приложение и при разработването на настолни приложения чрез пакета PHP-GTK.Варна Дипломна работа . която е наречена PHP 3.разпознавал опростен език и няколко макроса. Резултата от усилията е PHP версия 3. От този момент започва широ- кото разпространение на PHP/FI. и вградена поддръжка на сесии.000 уеб-страници използват PHP като server-side скриптов език. На 6 юни 1998 година излиза нова версия. когато Размус Лердорф решава да разшири възможностите на своята Home-page и написва неголям интерпретатор за изпълнение на по-простите задачи. Но изучаването на му се оказва много трудно за програмистите. PHP 4. Тази версия на PHP има поддръжка само за някои основни уеб-функции – способността да обработва HTML форми. вторият има уникална- та отличителност да бъде "server-side скриптов език с отворен код". PHP скриптовете се оказали по-бързи от аналогичните CGI .. Когато популярността на PHP нараства. Интернет "преживява" експлозия в количест- вото страниците. които изпълняват много от задачите. В средата на 1995 година се появява втора версия. Възможностите му са ограничени . поддръжка на mSQL бази данни и някои др. което е и тяхно предимство при нуждата от платформена нзависимост. За начало на PHP може да се счита есента на 1994 год. В края на 1997 Zeev Suraski и Andi Gutmans решават да пренапишат ядрото. 04 Възможности на PHP Глава I Какво е PHP? Обектно-ориентиран скриптов език. по-рано извършвани от него.е присъединена от друг пакет на Rasmus. които силно зависят от потребителският отговор и взаимодеиствие. с названието PHP/FI Version 2. В резултат на това се появяват множество server-side скриптови езици. Kратка история Откакто уеб-дизайнерите откриват таговете. Този интерпретатор готов в началото на 1995 година с названието Personal Home Page Tools. Към момента е изчис- лено. За дълъг период от време. с цел кориги- ране грешките на интерпретатора и повишаване скоростта на изпълнение на скриптовете.000.0 използва новия мощен Zend Scripting Engine. чиято широка употреба е при разработването на Интернет приложения. освен Apache. PHP/FI се компилира в Apache и използва стандартно API Apache. най-популярният език за написване на CGI-програми. които поемат отговорността да пренапишат отначало PHP интерпретатора.скриптове. Пристав- ката FI . Характерно за скриптовите езици е. поддръжка на други уеб-сървъри. че повече от 1. Най-познатите от тях са ASP и PHP. разработването на езика се прехвърля от Размус към екип от посветени програмисти. доминиращият език използван за разработването на такива уеб- страници е бил Perl. че се нуждаят от интерпрета- тор за да бъдат изпълнени.На сървъра не било необходимо да поражда нов процес. алтернативи на Perl. който включва поддръжка на широка гама от бази данни. но имащи по къса крива на изучаване.0. който умее да обработва форми (Form Interpritator). Технически Университет . Докато първият работи главно на Windows платформи в комбинация с няколко собствени продукти. Езикът PHP по възможности започнал да доближава Perl. включително MySQL и Oracle.

Лесно може да се взаимодейства с Java. идентификаторът на дадена сесия се добавя автоматично към адреса(URL-тo). Вече може да се влагат обекти в масиви.0 използва нов механизъм за управление на паметта.0 премахва някой синтактични ограничения наложени в 3.0 с името Zend.0 старата информация се освобождава от паметта автоматично.0. докато "3" == 3 (само два знака за равенство) ще върне резулта true. PHP 4. PHP 4. Това е много по ефек- тивно от PHP 3. които създават новият енджин за PHP 4. Възможности PHP 4.0. всяка итерация водеше до заделяне на допълнителна памет за информацията от заявката.0 предлага подобрен интерфейс за работа с допълнителни PHP модули. Има вградена поддръжка на HTTP сесии. Повечето от известните PHP модули са пренаписани за новия интерфейс. PHP 4. За пример ще посочим цикъл със SQL заявка в тялото си.ефективна схема "компилирай и изпълни". PHP 4.0 Предлага значително подобрение на бързодействието в сравнение с PHP3. PHP 4. В PHP 4. В PHP 3.ini е по-лесно и предлага повече възможности. в сравнение с предишната "изпълнявай докато обработ- ваш". Нап- ример "3" === 3 ще даде резултат false (типовете са различни). Подобрението на ускорението и надеждността на PHP 4. MD5. Има поддръжка на тип Boolean. Има възможности и функции за обектно-ориентира- но програмиране и създаване на класове и обекти .0 включва в себе си Perl Compatible Regular Expressions (PCRE)/Perl-съвместими регулярни изрази/ библиотека. където скриптовете се стартираха като външни програми.0 се дължи на тоталното пренаписване на PHP скрипт енджинът.0. 05 Възможности на PHP Глава I PHP 4.0. Езикът съдържа оператор идентичност. който проверя за равенство на стойностите и типовете на променливите. TripleDES. Конфигурирането на PHP4 с файлът php. както и обратното. Вградената поддръжка на Java осигурява лесен и ефективен начин за създаване и извикване на методи на Java обекти от PHP. и SHA1. използвана при PHP 3. без да се освобождава старата инфор- мация до завършване на изпълнението на програмата. Пренаписването е направено от Andi Gutmans и Zeev Suraski.0 предлага механизъм близък до този на Perl за изпечатване на голямо количесто текст без да се налага да се "избягват" специалните символи в него. Версия 4.0 е почти 100% съвместим с PHP 3. който се бележи със символа "===" (три знака за равенство). PHP 4. split и replace PCRE фунцкии се поддържат. който могат да се използват са Blowfish. която си върви с PHP. той автоматично се маха от паметта.0. Zend използва много по. По подразбиране идентификаторите на сесиите се пазят в кукита. Поддържа COM/DCOM (за Windows единствено) . в допълнение на нормалната regex библиотека. Някои от алгоритмите. Има минимални различия между PCRE и регулярните изрази в Perl.Варна Дипломна работа .0 може да бъде използван от IIS като вграден ISAPI модул. Технически Университет . който е значително по-бърз от старият. Ако даден ресурс не се използ- ва от дадена променлива.0 поддържа пълно криптиране използвайки mycrypt библи- отеката и хеш криптиране. По-лесно конфигуриране и компили- ране под UNIX. Ако браузърът не поддържа кукита.

Вграждане в HTML Кодът на PHP езикът се въвежда между редовете на HTML документ.”. Тези символи се наричат PHP тагове и показват на сървъра каде PHP кодът започва и каде свършва.ini ) XML стил <?php echo “<p>Text to be displeyd. За да се използва трябва да се позволи от настрой- ките на PHP ( за Windows в php. Технически Университет .”.</SCRIPT> Най-дългият от таговете. Тагове Всички HTML тагове започват с (<) и завършват с (>). Клиентското приложение получава вече обработения документ и го извежда. Кратък стил <? echo “<p>Text to be displeyd. Ако се планира използ- ването им трябва да се използва този стил. Скрипт стил <SCRIPT LANGUAGE=’php’> echo “<p>Text to be displeyd. Подобно на това PHP скрипта започва с (<?) и се затваря от (?>). Когато клиентът зареди страницата сървърът вижда.”. Може да се иползва при употребата на HTML едитор даващ грешка при останалите видове. Тагът е най-простия и следва стила SGML (Standard Generalized Markup Language) таговете. %> Стилът е същият като използваният в Active Server Pages (ASP). техните родителски класове и всички налични функции.”. ?> Основен за използващите езика. обектите. Всеки текст извън тези тагове е третиран като обикновен HTML. Трабва да се включи от настройките. които могат да се използват. ASP стил <% echo “<p>Text to be displeyd. 06 Възможности на PHP Глава I PHP 4. че ако стойноста на едната се промени то се променя автоматично и стойноста на другата. който го проверява и изпънява и праща резултата обратно към сървъра. ?> Тагът се използва с XML (Extensible Markup Language) документи.Всеки от програм- ните фрагменти е еквивалентен на останалите. Позволява в реално време да се получава информация за класовете.Варна Дипломна работа . Разрешено присвояване на стойност на променлива по псевдоним. което ще рече.0 Възможно е да се извика дадена функция преди тя да е декларирана. Различават се четири отделни стила тагове. че има код за изпъленние и го предава към парсерът.

07 Възможности на PHP Глава I Синтаксис Синтаксисът на PHP много наподобява този на C или Perl. можеме да изпълниме кода <?PHP $a = 5.). че преобразуването между типовете става автоматично. Тази черта на езика напомня малко на Visual Basic Технически Университет . представляваща число. много бързо могат да започнат да пишат програми на PHP.Програмите. Т. което значи че Number и NuMbEr са различни променливи. Той се използва за разделение на отделните PHP стейтмънти. то без проблем тя може да бъде подадена като параметър на функция. са достатъчно лесночитаеми.Варна Дипломна работа . Празните полета се игнорират както в HTML. за разлика от Perl-програмите. //Извежда стойността на променливата ?> Както бе забелязано от горния пример кода на скрипта се огражда с <? и ?> като отваря- щата комбинация може да бъде и разширена. ?> Това няма да доведе до грешка. запознати с програмира- нето. и винаги пред тях се слага символът $. Например ако трябва да се изведе променливата number. написани на PHP. В този език няма строга типизация на данните и отпада необходимоста от действията по заделяне/освобождаване на памет. както по-горе (препоръчително).е. Написаният PHP - код е зрително лесно разбираем и запомнящ се. Черта на езика е авоматичното създаване на променливите. Хора. се предава на PHP интерпре- таора че е направено PHP изявление ( statement ). Поставят се между /* Коментар */ за много редове и // Коментар или # Коментар за един ред.Коментарите поддържани от интерпретаора са в стила на C. която очаква символен низ. C++ и shell скрипт. т. Когато се постави текст между отварящия и затварящия таг. Това значи. Променлви В PHP има числени данни и символни низове. В PHP променливите са "case sensitive".е за да се изведе променливата number се записва: <?PHP echo ($number). но те се представят чрез един общ тип данни. На края на изложението се поставя символа semicolon (. дори преди това да не е декларирана променливата.

. Елементите на всеки масив от своя страна могат също да представляват масиви. Ние можем да зададем стойност на поредния елемент от масива без да знаем неговия индекс. За да прочетем стойност- та на елемент от масива трябва да използваме кода: echo ($arr[1])..н.. Както при стандартните масиви и тук има два вида декларация.и т. 08 Възможности на PHP Глава I Масиви Масивите са едни от най-важните ресурси в PHP. Тука виждаме че масива може да бъде инициализиран (запълнен със стойности) още при своето създаване. Декларацията на такъв масив има вида: $arr = new Array(). Индек- сите на масива може да не са последователни числа напр. PHP поддържа още един тип масиви ..асоциирани масиви. При тях е характерно. така и тука има оператори за цикъл или условен преход. } Технически Университет . $arr = new Array("element". $arr["Age"] = 25. ++. Така информацията в масива се представя във вида Ключ-Стойност. -. че индексите не са числа а могат да бъдат и символни низове. като елементите му могат да бъдат различни по тип. $name = "string1 ". $arr = new Array("Name" =>"Bob". "Age" =>25). Валидни (и много полезни) са и C-стил операциите като. Извеждаме стойността на втория елемент от масива (първият е винаги с индекс 0). или {оператори2.. $arr[] = "Следващ елемент". Оператори за условен преход if (условие) оператор1 или {оператори1. Важна особеност при декларацията на масиви е че НЕ е задължително предварително да се дефинира тяхната дължина.".20.=.1. Един масив се декларира така: $arr = new Array().5). -=. За конкатениране на два символни низа се използва оператора ". 0."string2". Контролни структури Както във всеки език. Оператори В езика PHP са валидни стандартните математически операции като +-*/ &&(и) ||(или) както и целочислено делене и остатък от делене %. $arr["Name"] = "Bob"..} else оператор2.5. +=.Варна Дипломна работа .

оператори1){ оператори2. $argument2) { //код на функцията } Името на функцията следва след изявлението. } Така ние обхождаме масива и извеждаме съдържанието му. Този тип цикъл се използва за фиксиран брой повторения на операторите в тялото на цикъла. След всяка итерация се изпълняват оператори1. } Типично приложение на тази структура е обхождането на един масив. който програмиста сам е изградил. едните са тези който са вградени в езика и други. } Операторът for изпълнява оператори2 докато е изпълнено условието за край. където се задава начална стойност на някоя променлива. date(“H:i. Дефиницията се осъществява като се изпозва изявлението function. които заси от атрибутите между скобите. Различното тук е наличието на инициализираща част. function some_function($argument1.$i++)){ echo $arr[$i]. while (условие){ оператори. Функции Една функция представлява блок съдържащ код и може да се извиква в PHP скрипт.i < count($arr). като параметрите се придават вътре в скобите. Има два вид функции. for ($i=0. които се използват за актуализиране стойността на променливата-бояч.условие_за_край. тъй като count($arr) ни дава размера на масива. Извикването на функция става по стандартния начин. 09 Възможности на PHP Глава I Оператори за цикъл Операторът while изпълнява операторите в тялото на цикъла докато условието в скобите е изпълнено. с подадените параметри тя връща дата и час фор- мата. for (инициализация. Технически Университет .Варна Дипломна работа . jS F”). Например извиквайки функцията date(). Аргументите се намират вътре в скобите и се изброяват с запетаи.

128 или 0. MySQL наистина е много бърз сървър. По думите на създателите именно точки 2-4 са дали възможност за достигане на високо бързодействие..) Издброяване на променливи може да съдържа до 65535.. 4 Проста и ефективна система за безопасност.2³² -1 BIGINT[(M)] -2⁶³.. устойчивост и лекота в използването.000 таблици..402823466E+38 За дробни променливи.255 За съхранение на цели цифрови променливи. MySQL е разработен от компанията TcX за вътрешни нужди. Комбинацията от високо бързо- действие и ниска цена дава на сървъра изключителна популярност. INT[(M)] -2³¹. DATE 1000-01-01 Съхранява датата в показания формат. едновременно работещи с базата данни. които се заключават в бърза- та обработка на много големи бази данни. Най-пълно разкриване на възможностите на сървъра. MySQL е идеално решение за малки и средни приложения. 2 Количеството редове в таблиците може да достига 50 млн. 10 MySQL Глава I Какво е MySQL MySQL . които ги няма в друга СУБД. и освен това има много разширения в този стандарт.2³¹ -1 или 0. от които повече от 500 имат повече от 7 милиона реда. MySQL се характеризира с голяма скорост . 3 Бързо изпълнение на командите. CHAR(M) [BINARY] За запис на символен низ TEXT 216 -1 A () Нормално текстово поле съдържащо до 65.D)] ±1. Основни видове данни TINYINT[(M)] -127. Възможности на MySQL MySQL подържа езика SQL в стандарта ANSI 92. които съдържат 10.2⁶³-1 или 0. MySQL е най-бързият сървър от съществуващите. но тези неща не се явяват критични при създаването на Web-приложения.175494351E-38 ±3.2⁶⁴ -1 FLOAT[(M. Компанията отбелязва. Технически Университет .. се проявяват на Unix-сървъри. но за постигането на това разработчиците са жертвали някои изисква ния към релационната СУБД.Варна Дипломна работа .535 символа ENUM(‘value1’. дава значителен прираст на производителността . 1 Поддържа неограничено количество потребители. където многопоточната подръжка.. . че използва MySQL от 1996 година на сървър с повече от 40 БД. Релацията съществено понижава скоростта на сървъра..компактен многопоточен сървър за БД.

запознати с програмира- нето. Погледнато по-просто. несравнима по отношение на скорост. Технически Университет .не са само текст и картинки. че web-страни- ците . Традиционно всичко това се реализира от CGI-скриптовете. за разлика от Perl-програмите. Сайтът достоен за внимание е длъжен да подържа някакво ниво на интерактивност с потребителите: искане на информации. написани на Perl. Благодарения на вградения език action script Macromedia Flash MX прави възможно създаването на програмни продукти с неограничени възможности. Flash MX предлага елегантно решение при зареждане и възпризвеждане на мултимедия. продажба на продукти.код е зрително лесно разбираем и запомнящ се. изисква от ядрото пораждане на нов процес. с много възможности за наст- ройване. а това отнема процесорно време и затормо- зява оперативната памет. Програмите.Варна Дипломна работа . Аction script е богат обектно ориентиран език предлагащ възможност на програмистите да създадът приложения с необходимите функции.скриптовете са лошо мащабирани. векторно базираните графики представляват серия от математически измерения и команди докато растерните са подредено количество от пиксели. Flash иползва анимация базирана на векторни изображе- ния противоположни на растерните графики. компактност. Синтаксисът на PHP много наподобява този на C или Perl. са достатъчно лесночитаеми. 11 Flash MX Глава I Flash MX 2004 Macromedia разработват най-мощната платформа за изгражданена мутимедиини прило- жения за интегриране в HTML. конференции и т. Всяко ново CGI запитване. MySQL и Flash? На разрабтващите Web-приложения.н. Обширно използване на кодът в софтуера и подходът за създаване на функцио- нално богати възможности прави системата на управление на база данни. Flash скрип- товете наподобяват Java аплети. Но CGI. много бързо могат да започнат да пишат програми на PHP. Хора. MySQL е най-популярната базата данни с отворен код в света. стабилност и леснота в развитието. има достъп до XML. PHP предлага друг вариант .той работи в часта Web-сървър и по това прилича на ASP от Microsoft. написани на PHP. Изградените на базата на Flash приложения предлагат много повече от картина и звук. Векторните файлове са по малки и по удобни за ползване в Internet. Написаният PHP . не е необходимо да бъде обяснявано. Архитектурата на MySQL сървъра прави използването база данните бързо и лесно. В този език няма строга типизация на данните и отпада необходимоста от действията по заделяне/освобождаване на памет. Обобщение Защо да изберем PHP.

• Скриптовете на PHP да осъществяват предоставянето на всички услуги. • изход: автоматично генериране на полета от таблиците и контроли за управление на качените файлове. качване на файл на сървър. • Потребителя да има възможност да поставя оценка на избран от него файл. • Да е разрешено сменянето на парола и потребителско име. Технически Университет . 12 Дефиниция на задачата Глава I Дефиниция на задачата Да се проектира и реализира Web сайт за качване. • Приложението за възпизвеждане да се разработи чрез Flash MX. възпроизвеждане и рейтинг на аудио файл със следните изисквания за вход изход: • вход: параметри за свързване към база от данни(СУБД). • На посетителите да е предоставена услуга за възпроизвеждане на файл . • Навигацията в web сайта трябва да е лесно разбираема. • Да осигурява възможност за достъп до бази от данни (MySQL). • Да генерира таблици в HTML с информация от базата. колони и връзки между таблици. • Възможност за идентификация на потребител.Варна Дипломна работа . Разработваният сайт да боддържа следната функционалност: • Приложението е основно предназначено за композитори на музика. • Членовете да могат да изтриват качен от тях файл. • Интерфейсът да е изграден с оглед приятен външен вид. • Регистриран клиент да има възможност да записва файл на сървър. • Да има възможност за регистриране на нов потребител. избор на таблици.

Варна Дипломна работа Проектиране 2 Глава .Технически Университет .

14 Проектиране на базата от данни Глава II След като се знае най-подходящия метод за изграждане на продукта. както и възможности за качване. изтриване. • Извеждане на записи. имена на таблиците се избира базата от данни. В описнието на етапите ще се спрем на основни понятия при инсталиране и настройка на MySQL приложението. потребителско име и патрола. Връзката се осъществява от вградени функции на PHP езикът.Варна Дипломна работа . е необходимо да се пристъпи към проектирането му. Изграждане на базата от данни Като начало трябва да се състави базата необходима за поддръжката на приложението. възпроизвеждане и определяне на рейтинг на файл.За това се изграждат интерфейси за: • Регистириране на потребител. който ще се изплозват. следвайки следните стъпки: •Проектиране на база от данни. Връзка към MySQL сървър През уеб сайта посетителят ще има достъп до базата. В тази глава ще разгледаме основните етапи на този процес. коятода предоставя възможност за възпроизвеждане и създаване на запис в базата. интегрирани чрез скриптовете в HTML кодът на страницата. Това са изграждането на база от данни и уеб страница. Чрез задаване на определени параметри : даннов източник или host. • Възпроизвеждане на файл. За да се направи това възможно трябва да се създаде динамична интернет страница. с която ще се работи. •Създаването й на MySQL сървър. • Качване на файл. име на базата. както и основни команди при създаване таблици и извеждането на информация от тях. Технически Университет . Проектиране на страницата Достъпа до предварително записаните данни ще се осъществи през програмното приложение ползвано от потребителя за интерпретиране на HTML. След като има успешно осъществена връзка трябва да има възможност за избор на таблици и колоните.

Неоходимо е да се съхранява информация за клиенти и файловете качени от тях на уеб сървъра. Въведените стойности в това поле трябва да са уникални и MySQL автоматично инексира полето. Таблици За обработка на регистрираните клиенти се създава таблица за съхранение на информацията за автентикация и втора за информацияата за всеки отделен клиент. Проектирането е процес. което е изискано от AUTO_INCREMENT . което също трябва да бъде индексирано. чрез който идентификацията по време на работа с базата от данни става много по бързо от колкото да се прегледат и сравнят всички запси в полето (username). Следва се следната последователност • Избира се броя на нужните таблиците и от какви полета да се състоят.1 Потребителската информация записана в таблица. username. затова въвеждаме и поле с ID на клиента. auth_users ID username password 1 mrBrown toofunky 2 monkey fruitytree 3 music_maker melodie Фигура 2. Стойността ще бъде с едно по-голяма от дотогавашната максимална стойност в колоната. AUTO_INCREMENT е специално MySQL свойство използвано при колони от тип integer. Необходимо е да идентифицираме всеки отделен потребител. Например полето ID трябва да съхранява уникален номер на потребителя. че тази колона е първичен ключ за таблицата. Това означава. Означава. По този начин към всяко потребителско име има присвоен уникален номер . Вида на данните е описан в Първа глава: Обзор на възможностите на MySQL. че на полето трябва да се зададе параметър PRIMARY KEY. че ако оставим това поле празно при въвеждането на ред в таблицата MySQL автоматично ще генерира уникална стойност на идентификатора. • Определят се връзките между таблиците. (Забележка: паролата не е в криптиран вид) Таблицата има име auth_users и съдържа необходимите полета ID. Може да се зададе само на едно поле от таблицата. Таблица за автентикация (auth_users) Tрябва да съдържа потребителско име (username) и поле за парола (password). 15 Проектиране на базата от данни Глава II Прокетиране на базата от данни При изграждането на проектa е необходимо да създаде база от данни която ще включва записите на информацията към страницата. в който се систематизира начина на подреждане и съхранение на информацията. При задаване на този параметър за колона се определя. Типа на полета в таблицата се определя от задачата за която са предназначени. че типа му трябва да бъде от вид INT unsigned . • Определяне типа на полетата. password.Варна Дипломна работа . Технически Университет . което определя.

2 Персонална информация за отделните потребители записана в таблица. В таблицата въвеждаме и поле ID. т. Избираме varchar(100) за password. gender . Дължина от 25 символа е напълно достатъчна за целта. Тип: varchar(20) .за алтернативен e-mail адрес varchar(100) . тъй като е необходимо да съхранява паролата в крип- тиран вид . Тип text . users ID f_name l_name birth gender email occupation altmail pnote 1 James Brown 05-03-1933 male james@brown. NOT NULL .net student Фигура 2. Полето трябва също да бъде NOT NULL . NOT NULL . Последните три полета не задаваме NOT NULL защото са за попълване по-избор. NOT NULL . Полетата имат следния тип: f_name . l_name .съхранява лична бележка. Тип: varchar(100) .е.Функцията password() изпълняваща криптирането може да генерира символен низ с дължина по-голяма от тази на правия текст отговарящ на паролата. Таблица за персонална информация (users) При регистрацията на нов потребител се записва информация за самия него. Задаваме полето да бъде NOT NULL . Стойността на ID се генерира в таблицата atuh_users при регистриране на нов потребител. По този начин има връзка между таблиците от тип one-to-one всеки един запис отговаря на запис от другата таблица. че свички редове в таблицата трбва да имат стойност в този атрибут.за запис на адрес на електронна поща.съхранява на собственото име на потребителя. email . pnote . Стойността на полето съотвтства на стойността на ID от таблица auth_users за определения потребител.Варна Дипломна работа . altmail . може да заема стой- ност male или female.дата на раждане избираме формата на полето да е varchar(10) вместо timedate() за да се избегнат грешки при формата на записите. което означава. birth . occupation . То трябва да побира стринг от символи съответсващи на избрано от клиент име. Има се предвид ориентацията на сайта и се изсикват минимални данни.потребителя посочва сегашния си статус(занимание).пол на потребителя.записва фамилията на потребителя Tип: varchar(20) .com singer/composer I Feel Good 2 juliano catania 10-28-1982 male catania@lapiovra. Избираме типа му да е varchar(25). 16 Проектиране на базата от данни Глава II За съхраняване на потребителско име създаваме поле username. Технически Университет . Полето е enum('male'. Тип: varchar(25) .'female') .

71 7 33 mrBrown Фигура 2. Чрез прост алгоритъм се изчислява стойността на на рейтинга и потребителите на сайта имат възможност на видят какво е мнението на посетителите за техните музикални произведения. Завършеният ред на проектирането на таблиците се нарича схема на базата данни.Варна Дипломна работа . files ID filepath date genre last_vote rating votes_count votes_am username 1 Too Funky. Създавайки поле (username) определяме връзка между таблиците auth_users и files от тип one-to-many. Типа се опреде- ля от това че един потребител ще качва много файлове. votes_am . Предс- тавлява описание на самата база. username . Тип: INT unsigned .брой гласувания . date . NOT NULL .текущ рейтинг. Технически Университет .жанр Тип: enum('house'. Тип: fload(3.3 Примерно описание на таблицата със записите на информация за качените файлове.последен подаден глас. Формата на полето е число с плаваща запетая. Избор на вида на полетата: ID . 17 Проектиране на базата от данни Глава II Таблица файлове (files) За да може страницата да извежда информацията трябва да има достъп до запис с името на файла.дата на качване Тип: varchar(20) . Към името на файла се записва и името на създателя му.2). last_vote . NOT NULL .'progressive') . за последния такъв и за общия брой на гласовете. Тип: tinyint(4) . votes_count .обща сума на подадените оценки. Тези полета е достатъчно да са 3: за текущия рейтинг. Схемата трябва да показва таблиците заедно с колоните. Примерна стойност е посочена в таблицата. Тип: INT unsigned .'funk'. Записва се и дата и часът в който е направен записа както и уникален номер (ID) на файла който ще служи за подреждане на файловете в извадката. genrе . С цел обобщение на проектирането съставяме схема показваща имената на таблиците и колоните в тях както и графично представяне на примерни данни в таблица с показване на връзките между тях. Избира се този типа за да има възможност рейтинга се изчислява с точност до 2-рия знак след запетаята.записва име на файла Тип: varchar(100) . rating . filepath . Tип: varchar(25) . жанра на музикалното произведение.mp3 11:00-30-07-05 Funk 6 4. типа на данните и да показва първичните ключове в таблицата. Тъй като ще се оценяват качените файлове в таблицата трябва да има поле за обработка на гласовете.потребителско име.Тип : INT unsigned AUTO_INCREMENT PRIMARY KEY NOT NULL .'techno'.

Варна Дипломна работа . Свързването към сървъра става по следният начин mysql\bin>mysql -h hostname -u username -p Параметъра -h се използва за уточняване на адреса.' or '\h' for help.). Това става чрез приложе- нието mysqladmin като задаваме следния команден ред : mysql\bin>mysqladmin -u root -p password new-password Параметъра -p се пропуска ако в момента няма зададена парола. Type '\c' to clear the buffer. В случая MySQL сървъра работи на локалният компютър пропускаме параметъра и за hostname не задаваме нищо. С параметъра -u показваме потребителя. но наличната покрива изцяло нуждите за изграждането на базата.0. Така се показа MySQL сървъра изпълни командата.24.0. Това може да се осъществи и чрез параметъра \g. 18 Проектиране на базата от данни Глава II Изграждане на базата от данни В тази част ще разгледаме как се настройва MySQL за ползване в уеб сайт: • Създаване на база данни • Потребители и привилегии • Създаване на таблици и определяне типа на колоните в тях За да стане това възможно е необходимо да имаме достъп до MySQL. Технически Университет . Свързване с MySQL Сврзването към MySQL сървър става чрез приложението MySQL monitor. Това вкючва: • Инсталиране на приложението • Настройка на потребителя чрез който ще се ползва MySQL • Задаване на парола за root потребителя При изграждането на приложението ще използваме MySQL 4. с който искаме да се свържем. При задаване на -p изисква от сървъра да бъде направена връзка. Your MySQL connection id is 5 to server version: 4.24-nt Type 'help. Като начало е необходимо да приключим с инсталирането на MySQL на Web сървъра. а new-password е новата избрана парола. Commands end with . към който ще се свържем.com. Като при използването на параметъра се въвежда паролата в полето Enter password: **** След като връзката е осъществена успешно в конзолата се изписва следното съобщение : Welcome to the MySQL monitor. Възможно е да се използва и по висока версия. За работа с сержера е най-добре да се използва root потребителя. Препоръчително е да се заложи парола за този потребител за да осигурим защита на системата. Текущата версия е на разположение на http://mysql. като се изплозва парола. mysql> Всеки команден ред завършва със символа semicolon(. or \g.

Варна Дипломна работа . Изграждане на таблиците Използвасе схемата определена при проектирането на базата: auth_user(id. Това се прави като се използва командата create database в конзолата на mysql монитора: mysql> create database webdata. Формата им е описана в Първа глава. l_name. username) Подчертаните полета представят първичните ключове на таблиците. имащ право да ползва select. като се идентифицира с парола authuser. birth. С този команден ред се създава база с име webdata. date. използвани за предоставяне и отнемане на права от MySQL потребители. insert и update командите върху всички таблици от базата webdatа. pnote) files(id. insert. last_vote. посетители ще имат достъп до базата. Технически Университет . Използвайки този потребител. genre. За избор на базата от данни се изпозва следната команда: mysql> use webdata Database changed Полученото съобщение показва. delete -> on webdata. votes_am. email. С тези редове създаваме потребител auth_user. username. votes_count. f_name. gender. altmail. Създаване на базата Следващата стъпка е създаването на базата.* -> to auth_user@localhost -> identified by 'authuser'. occupation. 19 Проектиране на базата от данни Глава II Създаване на потребител: използване на команда GRANT GRANT и REVOKE са командите. че е сменена базата и вече се изплозва зададената. rating. update. file. За създаване на потребителя: mysql> grant select. password) users(id. В тази база ще се съхранява информацията за сайта.

Технически Университет . -> password varchar(100) not null -> ). като в случая отговаря че таблицата е създадена.33 12 40 music_maker 3 I Got You.mp3 23:15-01-08-05 house 3 3. Използва се SQL командата CREATE TABLE като дефиницията е следната: CREATE TABLE tablename (columns) Би трябвало полето tablename да се замени с името на таблицата която искаме да създа- дем и columns с листа от разделени чрез запетая колони в таблицата. като всяка колона е последвана от типа на данните.00 3 15 mrBrown auth_users ID username password 1 mrBrown toofunky 2 music_maker melodie users ID f_name l_name birth gender email occupation altmail pnote 1 James Brown 05-03-1933 male james@brown. които ще съхранява.net student Създаване на таблиците в базата от данни Следващата стъпка е създаването на таблиците. Query OK.71 7 33 mrBrown 2 apenine.Варна Дипломна работа . 0 rows affected (0. 20 Проектиране на базата от данни Глава II Графична схема на връзките между таблиците files ID filepath date genre last_vote rating votes_count votes_am username 1 Too Funky. След като имаме изградена връзка с SQL сървъра. -> username varchar(25) not null.mp3 09:34-03-09-05 Funk 6 5. и сме избрали webdata като база данни започваме с въвеждането: mysql> create table auth_users ( -> id int unsigned primary key auto_increment not null. Можем да преминем към създаването на следващата.com singer/composer I Feel Good 2 juliano catania 10-28-1982 male catania@lapiovra.11 sec) Последното съобщение показва резултата от запитването (query).mp3 11:00-30-07-05 Funk 6 4.

'techno'.Варна Дипломна работа . 0 rows affected (0.'female'). -> votes_count int unsigned. -> f_name varchar(25) not null. -> date varchar(20) not null. mysql> create table files ( -> id int unsigned primary key auto_increment not null. 0 rows affected (0.'funk'. Query OK. -> filepath varchar(100) not null. -> birth varchar(10) not null. mysql> create table users ( -> id int unsigned primary key not null.2) not null. -> gender enum('male'.21 sec) Създаване на таблицата за файловете.21 sec) Технически Университет . -> rating float(3. Query OK. -> l_name varchar(100) not null. -> genre enum('house'. -> username varchar(25) -> ). -> occupation varchar(50). -> votes_am int unsigned. -> emial varchar(100) not null. -> altmail varchar(100). -> pnote text -> ).'progressive') -> last_vote tinyint unsigned. 21 Проектиране на базата от данни Глава II Създаване на таблицата за допълнителната информация за потребителя.

22 Проектиране на базата от данни Глава II Работа с SHOW.'female') | | | NULL | | | email | varchar(100) | | | NULL | | | occupation | varchar(50) | | | NULL | | | altmail | varchar(100) | | | NULL | | | pnote | text | | | NULL | | +------------+-----------------------+------+-----+---------+-------+ 9 rows in set (0.00 sec) За извеждане на информацията за дадена таблица се използва DESCRIBE или EXPLAIN mysql> describe users.Варна Дипломна работа . която е предоставена при създаването на таблицата. MySQL извежда информацията. DESCRIBE Прегледа на таблиците за избранaта база се осъществява по следния начин: mysql> show tables. +------------+-----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-----------------------+------+-----+---------+-------+ | id | int(11) | | PRI | 0 | | | f_name | varchar(25) | | | NULL | | | l_name | varchar(25) | | | NULL | | | birth | varchar(25) | | | NULL | | | genre | enum('male'. +-------------------+ | Tables_in_webdata | +-------------------+ | auth_users | | files | | users | +-------------------+ 3 rows in set (0. MySQL извежда списък с всички таблици в базата.00 sec) Технически Университет .

на който се поставят връзки към други такива. На повечето сайтове в web пространството има и така наречения footer.html • Създаване на нов потребител .members/index. които прило- жението трябва да предостави на потребителите.php • Главна страница за членове .members/log_out.html Технически Университет . Започва се от началната страница. който отговаря за поддръжката) на сайта.php • Изход . така и специални полета (бутони. • Възможност за смяна на потребителско име и парола В предвид тези функции се съставя модел съдържащ описание на web страниците в сайта. Всяка страница съдържа информация подредена в таблици.info.php • Промяна на парола . Редовете могат да съдържат както текст.php • Страница за информация за сайта . text area и т. по който ще протече понататъшната работа.) или графични изображения.html може да се постави специална функция която да пренасочва към друг html документ.members/edit_account. Основните услуги. input механизми. PHP и Flash MX помага за избора на най-рационалните методи.about.index. Проектирането на страница представлява процесът на избор на необходимите контроли и подреждането им в таблици. • Възпроизвеждане на mp3 файл. 23 Проектиране на web сайта Глава II Проектиране на Web сатйта За изработката на приложението е необходимо да се направи план. • Метод за оценка на произведенията. Добре е да има лого. по които ще изгра- дим структурата на web приложението. • Регистрация на нов потребител. Ако това не е възможно то в index. Изграждането на проекта. включва създаването на следните web страници: • Главната страница .html. Прието е името на файла да е index.н. Задължително е присъс- твието на навигационно меню съдържащо връзки (hyperlinks) с останалите страници.php • Upload на файл . Описанието на възможностите на HTML. Външният вид на страни- цата е определящ за качеството на продукта. както информация и начини за връзка с webmaster (собственика или този. Това може да се промени с указание в настройките на Apache сървъра.add_newuser.html • Информация за създателите на сайта .Варна Дипломна работа . Спазват се общоприетите изисквания. за ползване от посетителите са: • Преглед на качените файлове и информацията към тях. • Качване и изтриване на файл. Изхождайки от темата на проекта .members/upload_file. select. • Идентифициране на регистриран такъв.« Web сайт за публикуване на авторски музикални произведения » преценяваме необходимите функции.

24
Проектиране на web сайта
Глава II

Проектиране на главната страница: index.html
При изписване на адреса на web сайта клиента зарежда главната страница. Съдържанието
съответства на функциите избрани при проследяване на заданието и проектирането на
приложението. Начина на подреждане и извеждане на информацията зависи изцяло от
конструирането на страницата, като това се прави с оглед на приятен външен вид, лесна
навигация и предоставяне на всички нужни услуги.
Web страницата трябва да предлага на клиента възможност за четене на записи от базата.
Това ще бъде осъществено чрез залагане на PHP скрипт в HTML кода на страницата.
Скриптът осъществява връзката с MySQL сървъра и прочита записите, като връща резул-
тата към клиента. Резултатите се подреждат в таблица и начина на подреждане се опреде-
ля от командата подадена към MySQL.
Възможността за идентифициране на потребител позволява на клиента да създаде и прег-
лежда собствен запис на качени файлове. Необходимо е на главната страница да е предос-
тавен механизъм чрез който клиентите да потвърдят потребителското си име и да въведат
паролата избрана от тях. Подадените параметри трябва се предават от HTML промелива
към PHP променлива. PHP скрипта осъществява връзка с MySQL и сравнява получените
стойности с направените записи за регистрирани клиенти. След като това бъде направено
успешно (при въвеждане на вярни username и password) потребителя трябва да бъде
пренасочен към вътрещната главната страница за регистрирани клиенти.
Нуждата от поставяне на оценка, предполага наличие на контрол за избор на рейтинг и
начин за предаването му към базата от данни.

Таблици за извеждане на данни
Създаваме две таблици: една за поместване на всички качени файлове и друга за дестте
mp3 файла с най висок рейтинг. Поместваме ги в даннови полета на по-голяма таблица за
по-добро подреждане.
Таблицата с всичките файлове съдържа полета отговарящи на информацията за всеки
един от тях. На първият ред се намират описателите на стойностите на полетата, които ще
се намира на всеки следващ ред от таблицата. Проектираме така, че при четене от базата
PHP скрипта генерира нов ред за всеки един файл. Всеки един съдържа поле с име на
файла, име на потребителя извършил качването, жанра на произведението, текущия
рейтинг, час и дата на качване.

Контроли за предаване на стойности на променливи
Във всеки един ред се генерират и контроли за изпънение на функциите за възпроизвеж-
дане и рейтинг. Използва се <input> механизъм от тип 'submit'. Представлява бутон, при
натискането, на който се извършва действие 'action' в стойността на което се задава докум-
нта който ще се извика след натискането и се предава стойността на променлива, името на
която се се поставя в стойността на параметъра 'name'. Много е важен метода на извърш-
ване на действието. Съществуват GET за приемане на стойност и POST за предаване на
стойност на променлива. За контролите ще използваме POST метод. Задава се в <form>
контрола.

Технически Университет - Варна
Дипломна работа

25
Проектиране на web сайта
Глава II

В случая създаваме бутон 'play' за започване на възпроизвеждане. При натискането му се
предава името на файла на реда като стойност на променливата отговаряща за точно този
бутон. При генериране на редовете PHP скрипта трябва да присвои на параметъра 'value'
отговарящ на стойността на променливата, името на файла за същия ред. По този начин
се поставя бутон 'play' на всеки ред и натискането на един от тях отговаря на предаването
на името на файла на реда към възпроизвеждащия модул.
За да се преустанови потока от данни, е необходимо да се постави и бутон 'stop'. Избира се
натискането на бутона да предава нулев стринг като стойност и по този начин модулът не
започва възпроизвеждането на файл.
Изплозваме същия механизъм и за рейтинга. Предаваната променлива се взема от <select>
контрол. Посетителя избира от падащо меню стойност от 1 до 6. При натискане на бутона
'RATE', се подава към базата.
За да се поместят 10те най-високи рейтинга във втората таблицата се записва извадка от
таблицата files във базата webdata.

Навигационно меню
Това е своеобразна карта на web сайта. Може да се създадат различни видове менюта, но
за проекта не са необходими някакъв вид визуални ефекти. Стила се настройва във
външен .css файл. Връзките се поместват в даннови полета от таблица. Менюто на главна-
та страница съдържа : Info->info.php; Register->add_newuser.php;
Members->members/index.php; AboutUs->about.html; Exit->http://www.google.com;

Въвеждане на потребителски име и парола
Необходими са две полета . В таблица поместваме четири контрола <input> и имащи
различен тип. Горният ред на таблицата показва предназначението на пространството за
попълване. Надписа на бутона показва какво действие ще се предприеме при натискане.
В 'username' клиента ще попълва своето потребителско име. Създаваме <input> и избира-
ме типа му да е text. Като доълнителни параметри за стила се задават цвят, височина,
дължина, размер и вид на шрифта в полето както и цвят на рамката . Така създаденото
поле изписва въведения текст и го присвоява на променлива определена от него.
Вида на полето 'password' е по различен. Потребителите въвеждат личната си парола и
като превантивна мярка за сигурност е нужно тя да не се изписва на екрана. Възможност
за подмяна на символите се предоставя ако се зададе 'password' в type параметъра на
input.
Предаване на стойностите се осъщесвява при натискане на бутона 'login', представляващ
също <input>, но с тип 'submit'.
Досега описаните контроли се поместват във <form> </form>. Като параметър за извърш-
ване на действие 'action' се задава за всички променливи намиращи се в <form>. По този
начин при натискане на бутона логин се предават едновременно стойностите на 'username'
и 'password'.

Технически Университет - Варна
Дипломна работа

26
Проектиране на web сайта
Глава II

При отваряне на страницата от нерегистриран посетител, се предоставя бутон 'Register' с
който се извиква приложението за създаване на нов потребител. С този бутон не е необхо-
димо да придаваме стойности на променливи и затова може да не задаваме стойност на
параметъра 'name'. Надписа на бутоните съответства на стойността на параметъра 'value'.
Тази <input> контрола се помества в <form> параметъра 'action' на който насочва към
add_newuser.php страницата.

Създаване на нов потребител: add_newuser.php
Информацията необходима за идентифициране на потребител се попълва в полета, помес-
тени в таблици. Пред всяко поле се поставя поставя пояснителен текст относно информа-
цията която трябва да се попълни и дали е задължителна. Полетата маркирани с символа
звездичка (asterisk) са задължителни. Имайки предвид редовете на създадените полета в
таблиците auth_users и users създаваме контроли за попълване на всяко едно от тях. Орга-
низираме четири таблици, като във всяка се поместват полетата в зависимост от специфи-
ката на информацията която ще предоставят, а именно:
Таблица за попълване на потребителско име и парола. В нея поставяме три полета. Пър-
вото е за 'username' типът му е text. Предава стойност която се записва в едноименото поле
от таблицата auth_users. Добре е да се ограничат символите участващи в избраното име с
цел предотвратяване на грешки при предаване и записване в базата. Ограниченията се
налагат в рамките на малки и големи букви, цифри от 0 до 9 и знака за подчертаване '_'
Останалите две полета са за въвеждане на избраната парола. Долното е за потвърждаване
на горе написанта. Използва се за предотвратяване на регитрация на потребител с парола
в която случайно са объркани един или няколко символа. Проверката ще се извърши от
PHP функция. Типът на полетата отново е 'password'. За да не са много дълги и прекалено
прости избраните пароли ( н.пр. '123') и да бъде лесно откриването им от недоброжелател-
на личност е добре да бъдат ограничени между 6 и 15 символа който са напълно достатъч-
ни за една парола.
В следващата таблица се попълва информацията за потребителя. В полетата *First Name и
*Last Name се попълват имената. Създаваме контроли <select> за полетата *Birth Day и
*Gender отговарящи за дата на раждане и пол. За въвеждане на Е-mail адрес се използва
<input tpye='text'>. Полетата са задължителни за попълване, ако някое от тях бъде пропус-
нато PHP функция проверява това и преустановява процеса на регистрация индикирайки
кое точно не е попълнено.
Допълнителната информация е за попълване по избор поради самото ú естество. Напри-
мер не е задължително потребителя да има два E-mail адреса или да се занимава с нещо
конкретно в момента. Полето 'Personal note' е предоставено за лична бележка: например
потребителя може да уточни в кои жанрове обича да твори, любими музикални стилове
или какъв софтуеар използва за правене на музика.

Технически Университет - Варна
Дипломна работа

27
Проектиране на web сайта
Глава II

Тъй като сайтът предлага услугата качване на файлове в mp3 формат, трябва да се предуп-
редят клиентите че нямат право да качват на сървъра лицензирана музика, а само собстве-
ни музикални произведения. Също така трябва да бъдат наясно с услугите и останалите
условия за ползване на web сайта. Помества се съдържанието на terms.txt в <textarea> като
се прочита от PHP скрипт.
По надоло поставяме бутон за изпращане на попълнената информация. При натискане
потребителя потвърждава, че е запознат с предоставените услуги и е съгласен с условията
за ползване.
PHP скрипт проверява правилното попълване и препраща потребителя към add_user.php.
На страницата се показва току що попълнената информация и в зависимост от това дали
е попълнена правилно или не извежда връзка към следващата страница. Ако е попълнена
правилно най-отдоло се появява линк към файла register.php. Ако потребителя е съгласен
с попъленото ще се пренасочи към този файл и ще се извърши записа на формата в базата
от данни и същевременно ще се идентифицира. При зареждането на тази страница се
потвърждава записа и се извеждат връзки към members/index.php;
members/edit_account.php и log_out.php страниците.
При неправилно попълване се появява линк който връща към add_newuser.php за да се
попълни отново формата за регистрация.
Всички изброени до тук контроли се ограничават в <form> който определя изпращането
на информацията попълнена в полетата, като стойности на променливите определени от
контролите и бутона 'I Agree' да препрати към страницата add_user.php.
Предоставен е и бутон 'I Disagree' в случай че посетителят не е съгласен с условяита за
ползване. Натискането му пренасочва обратно към главната страница. Това се определя от
друг <form> в който е ограничен само бутона.
Предоставят се и някой допълнителни връзки в случай, че посетителите имат вече създа-
ден потребител и искат да се идентифицират с него -> към главната стрница. Другите
връзки са разположени в навигационното меню: AboutUs->about.html;
Exit->http://www.google.com;

Проектиране на главната страница за регистрирани потребители:
members/index.php
След въвеждане на правилни потребителско име и парола за клиента се зарежда страница-
та index.php в директорията members. На тази страница се предоставя възможност за
преглеждане на записите на файлове качени от самия потребител. Предоставя се възмож-
ност за изтриване. В отделна таблица се поместват петте лични записа с най-висок
рейтинг. Навигационното меню предоставя на потребителя връзки следните страници:
AboutUs -> ../about.html;
Account -> edit_account.php
Upload -> upload_file.php
LogOut -> log_out.php

Технически Университет - Варна
Дипломна работа

.php На клиента се предоставя услуга за промяна на потребителското име и паролата. Зареждането става в темп директорията на сървъра след което се прехвърля от команден ред в PHP скрипт в указаната директория. моно. Промяна на параметрите на регистрацията: edit_account. рейтинг. Формата ограничаваща полетата и бутона препраща към reg_update. Проектиране на механизма за качване на файл: upload_file. В него се оформят командите необходи- ми за качване на файла на Apache сървъра и записите който ще се изпратят към МySQL. 28 Проектиране на web сайта Глава II В таблицата за извеждане на личните качени файлове има поле за име на файла. Те се генерират за всеки отделен файл от PHP скрипт. Тя се препраща към delete_entry.php Когато идентифицирал се вече потребител се пренасочи към тази страница от главната страница на потребителите той ще качва файл на сървъра. На страницата е предоставено същото навигационно меню както на members/index. като подреждането се извършва от MySQL.Всеки ред ги съдържа. при зареждането на който се извежда съобщение за успешна промяна и връзки за влизане в зоната на членовете и приключване на потребителската сесия. жанр. дата на качване. Извежда се таблица в която е показано какви параметри трябва да има файла за качване като: големина(max1mb).php. При натискане на бутона се изпращат променливите към файл do_upload. като се зададът определени параметри на командата към сървъра. След изпълнението им се зарежда upload_file.php чието извикване се опреде- ля от <form> в който е ограничен бутона. който ще придаде избора като стойност на променливата определена от него.Варна Дипломна работа . bit rate:64/44kHZ. Типът и е 'hidden'. като последната се въвежда в две полета както се прави това при регистрацията. За извършването на запис на сървъра се използва <input> с тип 'file'. и контрол с възможност за изтриване(бутон 'DELETE'). тези параметри могат да бъдат промене- ни с течение на времето след като се отчете нужда от това. В таблица са поставени полетата за въвеждане на ново потребителско име и нова парола. Това ще се извършва чрез избор от <select> контрол. Стойността на променливата. Страни- цата съдържа навигационното меню което се предоставя на регистрираните клиенти. Отново PHP скрипта генерира всеки ред на таблицата. Контролите заедно с бутон 'Upload' се намират в <form>. Скрипта прочита записите и ги помества в данновите полета на реда. В допълнителната таблица се поместват записите на 5те mp3 файла с най-висок рейтинг. Технически Университет .php. След като е избран файл е необходимо да се определи и жанрът му.php.php.'. която ще се предаде при натискане на бутона се генерира за всеки отделен файл и съответства на името. При натискане на бутона се отваря автоматично локалната дирек- тория и така се избира желания файл. За изпра- щане се изплозва бутон. който предоставя поле с бутон 'Browse.

php първо се премахват променливите. С оглед предпазва- не е необходимо потребителя да премахне тези променливи. Технически Университет . При извикване на log_out. Направихме преглед на основните контроли използвани в проекта. начин за възпроизвеждане. В следващата глава ще проследим процеса на изграждане на HTML документ с вграден PHP скрипт.). Обобщение В процеса на проектиране на базата данни и web сайта проследихме основните стъпки при създаването на база от данни. Определихме какви връзки да има между таблиците.php При използването на web приложението клиентът създава сесия при която се регистрират различни променливи и cookie файл чрез който се разпознава сесията. качване и изтриване на файл. 29 Проектиране на web сайта Глава II Изход от системата: log_out.html На тези страници се помества информация за самият web сайт и за създателите му. Ще направим поглед върху функциите за стартиране на сесия и регистриране напромен- ливи в нея и качване и изтриване на файл. Например ако използва регистрацията си от компютър с публичен достъп и ако не се направи изход следващият. след което се завършва и сесията. files). Пре- доставят се начини за връзка с собственика на страницата. users. Проследихме основните механизми за създаване на web сайт.. Ще разберем как се осъществява връзка с MySQL и как се интерпретират командите към него. извежда и предава информация от сайта към Apache сървъра.html и about. Определихме как ще се въвежда. както и извикване на външен файл съдържащ командни процедури. tinyint.Варна Дипломна работа .. извеждане и сортиране на запис от таблица. Разработихме механизми за автентикация и регистрация на потребител. float. Разбрахме основните типове съхранява- ни данни (int. Направихме проект за таблиците и ги създадохме (auth_users. Навигационното меню е същото както при главната страница. Страници с информация: info. INSERT INTO).. начин за поставяне на оценка. Разгледахме основните команди за работа с таблици в база (CREATE TABLE. от сървъра през PHP към MySQL. enum(). който ползва компютъра ще има достъп до страница ползвайки потребителя на клиента. След като проекта е завършен е време да преминем към програмната му реализация. varchat(). SELECT FROM. да изтрие cookie файла и да приключи сесията.

Варна Дипломна работа Програмна реализация 3 Глава .Технически Университет .

Когато елемента се предос- тави на сървъра всички контроли имащи name атрибути присвоени към тях се подават към сървъра за понататъшна обработка. border-color:#FFFFFF" value="" type="password"></td></tr> <tr><td rowspan="2" colspan="2" align="left"> <table cellpadding="0" cellspacing="0"> // контрола от тип submit ( бутон ). Създване на username и password елементи <tr><td align="left">username:</td></tr> // извеждане на текст за пояснение на един ред <form method="post" action="login. 31 Програмна реализация Глава III Използвани елементи Елементите в HTML представляват основни градивни единици при създаването на различните функционални единици. border-color:#FFFFFF" value=""></td></tr> <tr><td align="left">password:</td></tr> <tr><td align="left"> // създаване на контрола от тип password стойност '' '' <input name="password" style="width:130px. border-color:#FFFFFF"></td></form> <form method="post" action="stop_file. background-color:#67C6F6" value="login"></td></form> Форми за възпроизвеждане на файла <form method="post" action="play_file. background-color:#67C6F6. Стойността actoion е стринг с адреса на файла. към който ще се пренасочат променливите. background-color:#67C6F6. Повечето. Документа може да съдържа неограничен брой form контроли но клиента може да предаде стойностите само на едни в даден момент от време.php"> // отваряне на form елемент <tr><td align="left"> // създаване на контрола с име username и приложени стилови промени. Името на предаваните променливи е стойността на атрибута name като стойността зависи от вида на контролата например при text input стойността отговаря на въведения текст при подаването. стойността и е празен низ <input name="username" style="width:130px.php"> <td><input type="hidden" name="my_url" value="<?php echo "$file". font-size:9px. <FORM> Въпреки важността на HTML формите в комуникацията между и посетителите на web страниците и сървърите. че ще изпраща или получава.php"> <td><input type="hidden" value="<?php echo "$file". ?>"> <input type="submit" value="PLAY" style="font-size:8px. но не всички form контроли се създават в документа като input елементи. border-color:#FFFFFF"></td></form> Технически Университет . background-color:#67C6F6. ?>"> <input type="submit" value="STOP" style="font-size:8px. form елементът не представлява нищо повече от контейнер на контроли. font-size:9px. стойността ''login'' се изписва върху бутона <tr><td><input name="submit" type="submit" style="font-size:10px.Варна Дипломна работа . background-color:#67C6F6. На атрибута method се подава дали стойността на променлива на контролата.

border-color:#FFFFFF" value="pnote1" name="pnote"></textarea></td></tr> // text area извеждане на услугите и условията за ползване на сайта прочетени от terms. ?>"><input type="submit" value="RATE" style="font-size:8px.php"> // php скрипта генерира стойността на input елемента <td><input type="hidden" name="file_name" value="<?php echo "$file". border-color:#FFFFFF"></td></form></tr> Формa за промяна на парола и потребителско име Формите и контролите са същия вид като при регистрация и идентифициране на потре- бител Технически Университет .php"> // във формата се поставят всички полета за попълване като text input и бутоните submit input /* за въвеждане на лична бележка може да се състои от голям брой символи тъй като се записва в text поле на таблицата в базата данни */ <textarea style="width:230px. background-color:#67C6F6. не се въвежда текст. 32 Програмна реализация Глава III Форми за подаване на рейтинг <form method="post" action="rate_entry. background-color:#67C6F6. background-color:#67C6F6. Чпрез параметъра rows се задава броя редове на който се извежда текста. font-size:12px. Формa за регистриране на потребител <form method="post" action="add_user. ?>"> <input type="submit" value="DELETE" style="font-size:8px. font-size:12px.txt <textarea readonly rows="4" style="width:230px.е. echo "terms". когато е повече от зададения брой се скролва. Атрибута value се подава като стойност на частта name към сървъра с формата. background-color:#67C6F6"> <option value="">-</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option></select></td> <td><input type="hidden" name="file_id" value="<?php echo "$id".php"> <td> <select name="rating" style="font-size:10px.Варна Дипломна работа . Формa за изтриване на запис <form method="post" action="delete_entry. border-color:#FFFFFF"><?php require_once("terms. Атрибутът readonly показава че елементът е само за четене т. background-color:#67C6F6. border-color:#FFFFFF"></td> </form> Select елементът представлява информация от серия еднакви option елементи като скрол- ващ списък или появяващо се меню в документа. ?></textarea></td></tr> </form> Textarea се използва за извеждане на текст на много редове. ?>"> <input type="hidden" name="file_id" value="<?php echo "$id".txt").

mysql_error(). Връща броя на редовете върнат от резултата от запитването $num_results = mysql_num_rows($result) Използва се чрез цикъл като на всяко завъртане се предава резулта от запитването на масив. 33 Програмна реализация Глава III PHP скриптове Изграждането на динамични web сайтове с PHP ги прави прави максимално гъвакви и функционални. [string password] ). Избор на база от данни има следния прототип int mysql_select_db(string database. mysql_query(). Технически Университет . Функции за работа с MySQL: mysql_pconnect(). Затваря връзката с MySQL. [int database_connection] ). Връща грешката от сървъра. mysql_fetch_array(). } mysql_close(). Прототипът и е int mysql_query(string query. $i <$num_results. Изгражда връзката с MySQL.Варна Дипломна работа . Връща идентификатор към сръзката към сървъра при успех И има следния прототип int mysql_pconnect( [string host [:port] [:/socketpath] ]. mysql_select_db(). Тъй като връзката се затваря автоматично при изпълнение на скрипта не я използваме. $i++) { $row = mysql_fetch_array($result). for ($i=0. Праща команда ''query'' към MySQL при зададена връзка $connect комбинира се с предход- ната. Предназначението на всички създадени скриптове изгражда всички необ- ходими функции. Добре е да се запази в променлива $result = mysql_query(''query''. Функциятавзема всеки ред от резултатния сбор и връща реда като асоциативен масив. mysql_numrows(). [int database_connection] ). като и двете въщат идентификатор към резултата. обработката на който осъществява предлагането на услуги на клиента. [string user]. $connect). с всеки ключ за наименование на атрибут и всяка стойност кореспондира с такава в масива.

Стартира сесията като функцията проверява първо дали има вече създадена такава ка проверява дали има генерирано Session ID. ''var2''). Достъпът до тях става като се извикват по следния начин $_SESSION[var1]. Това число се генерира от PHP и се съхранява докато трае сесията. Премахва всички регистрани променливи по време на стартираната сесия session_destroy().Варна Дипломна работа . Използва се за съпоставяне на регулярни изрази. След като е приключено с използването на дадена променлива тя може да се дерегистрира чрез следната функция. Технически Университет . Има прототип: int ereg(string pattern. с цел те да могат да бъдат предавани от страница на страница докато сесията трае регистрират се по следния начин: session_register(''var1''. session_start(). Функци за работа със стрингове: substr(). По този начин се предоставя възможност за регистриране на определени променливи. string search. Изиква се при завършване на работа със сесията. ereg(). като името на променливата се подава без предходния $. Може да се съхранява на компютъра на клиента или да се предава от страница на страница. Изчиства стойността на session ID. int start. представляващ криптографско случайно число. Има следния прототип: string substr(string string. така нареченити сесиини променливи. 34 Програмна реализация Глава III Функции за работа със sessions: Сесиите в PHP4 се ръководят от уникален ID номер. session_unregister(). session_id(). int [length] ). array [matches]). Позволява да се използва подстринг между зададени начална и крайна позиция на стринг. session_register(). session_unset(). Регистрира променливи. Функцията връща като резултат стойността на ID на сесията.

// инкрементиране на брояча с единица $file = $row['filepath']."$i&nbsp. // отваряне на файла func2. // съставяне на командна процедура за МySQL $result = @mysql_query($sql.". поместваме функцията в в отделен файл functions/func2.php за изграждане на връзка $sql = "select * from files order by rating desc limit 10".php'').-4). 35 Програмна реализация Глава III Създаване на функции за четене на запис За генериране на таблицата и прочитане на записите като начало ни е необходима функция която да изгражда връзка с МySQL и да връща като резултат указател към възката. като когато на скрипт му е необходимо да се обърне към функция от този файл той се извиква чрез require_once(''functions/func2.Варна Дипломна работа . function db_connect() { $db_name = "webdata". "authuser") or die(mysql_error()).0. // избор на база $db = @mysql_select_db($db_name.php. // нулиране на брояч while ( $row=mysql_fetch_array($result) ){ // цикъл за прочитане на записите от таблицата $i = $i+1. return $connection.php"). Скрипта се отваря и затвяря защото има конади към HTML интерпретатора.". // извикване на функцията с параметър сесиината променлива за username function top_record($userid) { // дефиниране на функцията $connect = db_connect(). <?php require_once("functions/func2. // подаване на командата $i = 0. // присвояване на стойността на полето от таблицата files ?> <td align="left"><?php echo "N&nbsp. // извикване на функция от файла func2.php top_record($_SESSION[username]). "auth_user".substr($file. // функцията връща стойността на $connection } Генереиране на таблицата с 10те най високи рейтинга Скирпта се състой от две част едната е за прочитане а другата е за генериране на редовете. $connect). ?></td></tr> //ред за извеждане на записа <?php } } ?> Технически Университет . // име на база // присвояване на променлива към указател на връзката $connection = @mysql_pconnect("localhost". $connection) or die(mysql_error()).

$connect). $uploaded = $row['date']. ?> <tr align="center"> <form method="post" action="play_file. border-color:#FFFFFF"> </td></form> // край на формата <form method="post" action="stop_file. Тук се вижда ясно гъвкавостта на езика.php"> // форма за подаване на рейтинг //select елемента описна на страница : </form> </tr> <?php } } ?> // затваряне на while и функцията.<?php echo substr($file. background-color:#67C6F6. // присвояване на отделни променливи на стойностите на всеки елемент от масива $genre = $row['genre'].-4). // извикване на функцията function read_record() { // дефиниция на функцията $connect = db_connect(). които се подават трябва да бъдат поставени в <?php ?> ограничителни тагове. ?></td> // изписване на останалите променливи <td><?php echo "$genre". 36 Програмна реализация Глава III Създаване на функции за четене на запис За генериране използваме функцията read_record(). <?php require_once("functions/func2. $rating = $row['rating'].php"). $file = $row['filepath']. $username = $row['username']. ?></td> <td><?php echo "$uploaded".php read_record(). ?></td> // изписване на името на файла (без разширението) <td><?php echo "$username". тъй като той просто се интерпретира на заедно с HTML като командите. //изпращане while ( $row=mysql_fetch_array($result) ){ //прехвърляне на прочетените резултати в масива $row $id = $row['id']. ?>"> // генериране на стойността на контрола // създаване на бутон за изпращане на резултата <input type="submit" value="PLAY" style="font-size:8px. // отваряне на файла func2. border-color:#FFFFFF"> </td></form> // край на формата <td align="left">&nbsp.Варна Дипломна работа .php"> // форма за препращане на стойностите на променливите <td><input type="hidden" name="my_url" value="<?php echo "$file". ?></td> <form method="post" action="rate_entry. // създаване на връзка с MySQL $sql = "select * from files order by id desc". ?></td> <td><?php echo "$rating". // изработване на команда $result = @mysql_query($sql. край на скрипта. background-color:#67C6F6. Технически Университет .0.php"> // форма за спиране на възпризвеждането <input type="submit" value="STOP" style="font-size:8px.

php където се намират и останалите функции за проверка на отделните полета. } // при несъответствие if (valid_email($_POST[email]) == 0) { $_SESSION[p4] = "You must type a valid e-mail address. } // непопълнено задължително поле if ( user_check($_POST[username]) == 0 ) { return 0.". //регистриране на променливи за съобщения при грешки $_SESSION[p] = "".php се извиква функция за проверка. В началото на add_user. $_SESSION[p1] = ""."valid").php се стартира сесия или се отваря вече стартираната в index. Дефиницията им е направена в същия файл. $_SESSION[p2] = "". } return 1. return 0. return 0. return 0.php <?php //начало на скрипта session_start()."."birth". 37 Програмна реализация Глава III Създаване на функциите за регистрация на нов потребител След подаването на информацията от формите на страницата add_newuser. Тя е дефинирана в funk2. } // връщане за съобщение за грешка if ( strlen($_POST[password1]) < 6 || strlen($_POST[password1]) > 16 ) { // дължината на паролата $_SESSION[p3] = "Your password must be between 6 and 16 characters. като се дефинират променливи за присвояване на стойностите на подадените от формата променливи. Технически Университет ."password". $_SESSION[valid] = 0."$p2".$_SESSION[userid] = "". $_SESSION[p3] = "". return 0."f_name"."l_name"."occupation"."p4". // стартиране на сесия и регистриране на променливи session_register("username".Please enter valid username. //нулиране на съобщенията $_SESSION[p4] = "".".html."altmail".". $_SESSION[ret] = "".php").php function validate_posts() { // дефиниране на функцията session_register("$p". // прехвърляне на стойността на записа на потребителското име if ( validate_posts() == 1 ) { // извикване на функция за проверка от func2.php $_SESSION[valid] = 1. } // при невалидност if ($_POST[password1] != $_POST[password2]) { // проверка за съответствие на двете въведени пароли $_SESSION[p2] = "Re-typed Password don't match. // проверка на e-mail return 0."genre". // валидност } ?> Функции за проверка на подадените данни func2. require_once("functions/func2."$p1"."email"."$p3". // отваряне на файла func2. // функцията връща единица ако всичко е валидно } При обработката се извикват допълнителни функции. add_user. if ((!$_POST[username]) || (!$_POST[password1]) || (!$_POST[password2]) || (!$_POST[f_name]) || (!$_POST[l_name]) || (!$_POST[sx]) || (!$_POST[email])) //проверка за попълване на полетата { $_SESSION[p] = "One of the necessary fields is not filled out". } // проверка на уникалност на потребителя if ( valid_username($_POST[username]) == 0) { //проверка на символите участващи в потребителското име $_SESSION[p1] = "Username not valid.php $_SESSION[username] = $_POST[username].Варна Дипломна работа ."pnote").

Функцията прави преглед на колоната с записите на потребителите и ако срещне съвпадение връща 0. } } Технически Университет . else { $_SESSION[ret] = "Username is unique". // съставяне на командата $result = @mysql_query($sql. $connect).go back and choose another one. // пращане if (!$result) { // проверка на резултата $_SESSION[ret] = "Could not execute query". // при съвпадение else return 0.Варна Дипломна работа . Проверка на избраното потребителско име се прави дали съдържа само букви цифри и символа за подчертаване. Не се прави проверка на съществуването на адреса.php function user_check($user) { session_register("ret"). $address)) return 1. а само дали има формат стринг@стринг.". // регистриране на променлива за съхранение на съобщение $connect = db_connect(). // осъществяване на връзка $sql = "select * from auth_users where username = '$user'". else return 0. func2.стринг func2.]+$". func2. // при невалидност Е-mail адреса се сравнява с такъв израз какъвто би представлявал един реален адрес.php ffunction valid_email($address) { if (ereg("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\. 38 Програмна реализация Глава III В следващите няколко функции се прoверява дали подадения стриг отговаря на изискванията към него. } // при не изпълнение на командата if (mysql_num_rows($result)>0) { //ако е върнат ред //изпращане на съобщение че избраното име съществува и да се избере друго $_SESSION[ret] = "That username is taken . return 0. Проверката на потребителско име е с цел да не се повтарят имена в базата. $username)) //сравняване с регулярен израз return 1.php function valid_username($username) { // дефиниране if (ereg("^[a-zA-Z0-9_]+$". return 1. } // избраното име е уникално продължава се с регистрацията. Проверката се прави чрез функция за сравняване на стринга с регулярен израз.

php. // стартиране на сесия require_once("functions/func2. а в обратния случай се продължава с регистрацията към файла който ще извика функциите за изготвяне на запис в базата от данни. 39 Програмна реализация Глава III След като е изпълнена проверката се извежда страницата add_user."><a href="add_newuser. register. //отваряне на файла с функциите if ($_SESSION[valid] = 1) { // проверка дали сесията е валидна add_user("$_SESSION[username]"."$_SESSION[password]").php <?php function proceed($valid) { if ($valid == 1) { ?> <font style="font-size:14px. на нея се извиква следната функция add_user. //извикване на функцията с посочените параметри } ?> Технически Университет .Варна Дипломна работа . ?></td> Изпълнението на функцията се прави с подаване на променливата $_SESSION[valid]. При отварянето на register."><a href="register.php"><strong>Please fill the form again.php първо се изпълнява PHP скрипта стоящ в самото начало на документа. стойността на която зависи от изхода на функцията за проверка.php <?php session_start().php <td align="center" width="338"><?php proceed($_SESSION[valid]). при не валидни данни се появява връзка сочеща обратно към попълване на формата за регистрация.php"><strong>Proceed with the Registration</strong></a></font> <?php } else { ?> <font style="font-size:14px. Функцията е следната: func2. T.e.php").</strong></a></font> <?php } } ?> В зависимост от стойността която се подаде се извежда различен hyperlink. Скрипта извиква функциите за създаване на запис базата.

$birth.'$genre'.'$altmail'. // подаване на записа } funk2. l_name. altmail. "$_SESSION[f_name]". $connect) or die(mysql_error()). // кoманда $result = @mysql_query($sql. '$f_name'.php function get_userid($username) { //дефиниция $connect = db_connect(). // регистриране на променлива за съхранение на резултата while ($row = mysql_fetch_array($result)) { // цикъл за призвояване стойнстта на ID при съвпадение $_SESSION[userid] = $row['id'].$pnote) { // дефиниция $connect = db_connect(). "$_SESSION[pnote]").$l_name.$pass) { //дефиниция if ( user_check($user) == 1 ) { // извикване за проверка на уникалността на потребителското име $connect = db_connect().$genre. password) VALUES (NULL. "$_SESSION[altmail]".php function add_info($id.$f_name. $connect) or die(mysql_error()).'$occupation'.'$birth'. f_name. //извикване на функцията за извеждане на ID add_info("$_SESSION[userid]".$altmail. occupation. //изпращане на командата get_userid($_SESSION[username]).php function add_user($user. // извършване на проверката session_register("userid"). /* извик- ване на функцията със следните параметри. "$_SESSION[email]". // осъществяване на връзка $sql = "INSERT INTO users (id. // осъществяване на връзка $sql = "SELECT id FROM auth_users where username = '$username'". password('$pass'))". username. '$l_name'. "$_SESSION[occupation]". 40 Програмна реализация Глава III Функцията add_user() отговаря за направата на запис с таблицата auth_users и извиква следващата функция add_info() отговаряща за саписите в таблицата users. $connect) or die(mysql_error()). '$user'. func2.'$pnote')". */ } func2. email.'$email'.$email. "$_SESSION[birth]".Варна Дипломна работа . // избор на ID съответстващо на username $result = @mysql_query($sql. genre. } } Технически Университет . pnote) VALUES ('$id'.$occupation. // свързване $sql = "INSERT INTO auth_users (id. "$_SESSION[genre]". При изпълнението се извиква също така и функция за извеждане на записа на полето ID съответстващо на потребителя. След това се подава като параметър при извикването на аdd_info(). "$_SESSION[l_name]". Стойността на променливата $pass се подaва към базата посредством криптираща функция password(). //дефиниране на командата $result = @mysql_query($sql. birth.

php func_connect. register. session_unregister(genre). session_unregister(p).php в края на който е разположен скрипт. Функцията за осъществяване на връзка се извиква от файл functions/func_connect. session_unregister(f_name). session_unregister(birth).php <?php function db_connect() { $db_name = "webdata". session_unregister(p2).който е създаден с права само да чете и подновява записи в таблицата files. 41 Програмна реализация Глава III След като се изпълнят функциите се връща резултата и се прoдължава с изпълнението на документа register. ?> При избор на рейтинг и изпращането. страницата се пренасочва към rate_entry. session_unregister(altmail).php <?php session_unregister(password).Варна Дипломна работа . session_unregister(p3). $connection) or die(mysql_error()). session_unregister(ret). Този скрипт премахва вече ненужните променли- ви създадени по време на сесията. session_unregister(occupation). "rateuser") or die(mysql_error()). session_unregister(p4). За връзка с MySQL се използва друг потребител . return $connection. $db = @mysql_select_db($db_name. "rate_user". session_unregister(l_name). } ?> Технически Университет .vote_user . $connection = @mysql_pconnect("localhost".php. session_unregister(pnote). Остават само $_SESSION[username] и $_SESSION[id] необходими за понататъшното идентифициране на потребителя.

} if ($_POST[rating]) { // ако е поставен рейтинг извиква функцията и го придава като параметър read_record($_POST[file_id]). // изчисляване на новия рейтинг $sql = "UPDATE files set rating = '$newrating' where id = '$id'". 42 Програмна реализация Глава III В скрипта е дефинирана функция с която се прочитат текущите записи на полетата rating. $connect).Варна Дипломна работа . votes_count и votes_am. // подновяване на записите $result = @mysql_query($sql. //прехвърляне на променливите $rate = $row['rating']. // пренасочване към главната страница exit. // осъществяване на връзката $sql = "select * from files where id = '$file_id'".php извикване на db_connect() function read_record($file_id) { // дефиниране на функцията за четене на записите $connect = db_connect(). // отваряне на файла func_connect.php"). // увеличаване на броя на гласовете с един $newrating = $new_amount/$count. $amount = $row['votes_am']. ?> Технически Университет . $result = @mysql_query($sql. } $new_amount = $amount + $_POST[rating].php <?php require_once("functions/func_connect. $connect). // изпъняване на командния ред while ( $row=mysql_fetch_array($result) ){ // цикъл за предаване на резултатите $id = $row['id']. $count = $row['votes_count'].php"). Стойностите им са необходими за да се изчисли новия рейтинг като се прибави послед- ния глас. $sql = "UPDATE files set votes_am = '$new_amount' where id = '$id'". $connect). rate_entry. $connect). $sql = "UPDATE files set votes_count = '$count' where id = '$id'". } header ( "Location: index. // избор на полетата от ред със съответстващ ID $result = @mysql_query($sql. $result = @mysql_query($sql. // прибавяне към сбора от досегашните гласове $count = $count +1.

// избор на параметри за mysql_select_db() $db_user = "auth_user". // пращане на командата за проверка на записите if (mysql_num_rows($result) == 1) // при съвпадение на запис { return 1. // връщане към главната страница exit(). Вътре е заложен собствен механизъм за устано- вяване на връзката с MySQL тъй като присъстват клаузи за пренасочване ( header ). // избиране на база $sql = "SELECT * FROM $table_name WHERE username = '$user' AND password = PASSWORD('$pass')". // присвояване header("Location: members/index. login. } // ако такъв запис не съществува } $status = authenticate($_POST[username]. $connection) or die(mysql_error()). //проверка $result = @mysql_query($sql. $table_name = "auth_users". } else { return 0. // пренасочване към главанта страница на членовете exit(). $db_pass) or die(mysql_error()). // име на базата $connection = @mysql_connect($db_host.php"). } ?> Технически Университет . // извикване с предаване на изпратените стойности if ($status == 1) { // съвпадение session_start(). // свързване $db = @mysql_select_db($db_name. В случай на несъвпадение отново се връща в главната страница.php <?php function authenticate($user. $db_name = "webdata". $connection) or die(mysql_error()). $db_pass = "authuser". $pass) { // дефиниране на функция за автентикация $db_host = "localhost". като това се прави при сравнение на записите от таблица ath_user със стойностите на подадените променливи.Варна Дипломна работа . 43 Програмна реализация Глава III Автентикация на потребител Формата в коятo са поставени контролите за въвеждане на потребителско име и парола определя пренасочването след натискане на бутона 'login' да е кум скрипта login. // регистриране на променлива за потребителското име $_SESSION[username] = $_POST[username].php Този скрипт съдържа метода за верификация на потребителите.html"). $db_user.php и се създава сесия като на стойността на $_SESSION[username] се присвоява потребителското име на клиента. $_POST[password]). } else { // при грешно въведени параметри header("Location: index. При успешен резултат от проверката потребителят продължава в members/index. // стартиране на сесия session_register("username").

php get_userid($_SESSION[username]). // прсвояване } ?> func2. на него се предоставя възможност да промени собствените си потребителско име и парола. $_SESSION[p3] = ""."$p3". // стартиране на сесия session_register("newusr".php за установяване на ID на потребителя и извикване на функцията за проверка на подадената информация update_acc. if ((!$_POST[newusr]) || (!$_POST[password1]) || (!$_POST[password2])) { // проверка на попълването $_SESSION[p] = "One of the necessary fields is not filled out". Страницата започва с скрипт за проверкана валидността на приетите стойности като прави обръщение към func2. return 0.php се попълват новите параметри. 44 Програмна реализация Глава III Промяна на регистрацията След като потребител е идентифицирал себе си пред системата. Форма в която са поместени контролите определя подаването на новите параметри към update_acc.php")."newpwd").php <?php session_start(). За да стане това на страницата edit_account.php. $_SESSION[p2] = ""."$p2". } return 1. // извикване на функцията за определяне на $_SESSION[newusr] = $_POST[newusr]. $_SESSION[valid] = 0. return 0. // отваряне на func2.. } if ( strlen($_POST[password1]) < 6 || strlen($_POST[password1]) > 16 ) { //дължина на паролата $_SESSION[p3] = "Your password must be between 6 and 16 characters. $_SESSION[p1] = "".Please enter valid username. // присвояване if ( validate_update() == 1 ) { // при валидно попълване $_SESSION[valid] = 1."$p1". } if ($_POST[password1] != $_POST[password2]) { // проверка за съвпадение $_SESSION[p2] = "Re-typed Password don't match.". } Технически Университет .". } if ( valid_username($_POST[newusr]) == 0) { // валидност на потребителското име $_SESSION[p1] = "Username not valid. // непопълнено едно от задължителните полета return 0.php function validate_update() { //дефиниция на функцията session_register("$p".Варна Дипломна работа .". //регистриране на нови променливи за име и парола require_once(". // регистрация на сессиини променливи за съобщения при грешка $_SESSION[p] = ""./functions/func2. return 0."valid").

if ($_FILES[img1] != "" && $_POST[genre] != "") { $upload_dir = "files/". // жанр if (!is_uploaded_file($_FILES['img1']['tmp_name'])) { // прверка за качване echo "Problem whit uploading". } header ("Location: upload_file. $result = @mysql_query($sql. '$_SESSION[file_name]'.php ?> Технически Университет .php . // предаване на временното име на файла $_SESSION[file_name] = $_FILES['img1']['name']. Регистрат се необхо- димите сесиини променливи и след като се направи прверка започва присвояването на необходими- те стойности на на променливите. Работата му се осгурява от скрипта do_upload. //изпращане на кондата } } else { // ако не е направен записа в таблицата die("No Input")."file_path". // име на база $connection = @mysql_pconnect("localhost". 45 Програмна реализация Глава III Скриптове за управление на личните записи За качване на файл се използва механизма залочен на upload_file.php. } else { move_uploaded_file($temp_name.y"). $connection) or die(mysql_error()).'$_SESSION[uploaded]'."uploaded". // време и дата $_SESSION[genre] = $_POST[genre].Варна Дипломна работа . $temp_name = $_FILES['img1']['tmp_name']. $_SESSION[file_path]).php").m. // пренасочване обратно в upload_file.php <?php session_start(). Има проверка дали файлът е качен в темп директорията и ако няма проблеми се премества в посочената директория."userid")."genre". "authuser") or die(mysql_error()).'$_SESSION[username]')". genre. $connection) or die(mysql_error()). date.'$_SESSION[genre]'. С това приключва качването на сървъра . Необходми е и да се направи запис в таблицата files с информацията на каченият файл.$_SESSION[file_name]. // връзка $db = @mysql_select_db($db_name.username) VALUES (NULL. session_register("file_name".Този скрипт отново изпозва дефинирана в него връзка. do_upload. // избор на директория за качване $_SESSION[uploaded] = date("H:i-d. "auth_user". // присвояване на името на файла към сесиината променлива $_SESSION[file_path] = $upload_dir. filepath. // преместване на файла от временнот му място $db_name = "webdata". // избора на база $sql = "INSERT INTO files (id.

// избор на директория за качване $_SESSION[uploaded] = date("H:i-d. $connection) or die(mysql_error()). // преместване на файла от временото му място $db_name = "webdata".'$_SESSION[uploaded]'.php <?php session_start(). Необходимо е и да се направи запис в таблицата files с информацията на каченият файл.y"). 46 Програмна реализация Глава III Скриптове за управление на личните записи За качване на файл се използва механизма заложен на upload_file. } else { move_uploaded_file($temp_name. date.Варна Дипломна работа .php ?> Технически Университет . genre.'$_SESSION[username]')". do_upload. $temp_name = $_FILES['img1']['tmp_name']."uploaded". // жанр if (!is_uploaded_file($_FILES['img1']['tmp_name'])) { // проверка за качване echo "Problem whit uploading". $connection) or die(mysql_error()). // избора на база $sql = "INSERT INTO files (id. filepath.php . // пренасочване обратно в upload_file. // връзка $db = @mysql_select_db($db_name. // предаване на временното име на файла $_SESSION[file_name] = $_FILES['img1']['name']. session_register("file_name".Този скрипт отново изпозва дефинирана в него връзка.php"). "auth_user". $_SESSION[file_path])."file_path".'$_SESSION[genre]'. if ($_FILES[img1] != "" && $_POST[genre] != "") { $upload_dir = "files/"."genre".username) VALUES (NULL. // присвояване на името на файла към сесиината променлива $_SESSION[file_path] = $upload_dir. //изпращане на командата } } else { // ако не е направен записа в таблицата die("No Input").m."userid"). Регистрат се необхо- димите сесиини променливи и след като се направи проверка започва присвояването на необходи- мите стойности на на променливите. $result = @mysql_query($sql. // име на база $connection = @mysql_pconnect("localhost". '$_SESSION[file_name]'. // време и дата $_SESSION[genre] = $_POST[genre].php. "authuser") or die(mysql_error()).$_SESSION[file_name]. } header ("Location: upload_file. Има проверка дали файлът е качен в темп директорията и ако няма проблеми се премества в посочената директория. Работата му се осигурява от скрипта do_upload. С това приключва качването на сървъра .

com/pub/shockwave/cabs/flash/swflash.$_POST[file_name]). Задава прменлива my_url която ще се подаде на файла и по този начин ще се определи файла който ще се възпоизведе.swf" quality="high" FlashVars="my_url=<?php echo "members/files/". exit(). "authuser") or die(mysql_error()). } else { header ("Location: index.cab#version=6. $sql = "DELETE FROM files where id=$_POST[file_id]".swf. $connection) or die(mysql_error()). <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download. exit(). delete_entry. //echo "$_POST[file]".swf"> <param name="quality" value="high"> <embed src="player32.php"). $connection) or die(mysql_error()).0" width="10" height="10"> <param name="FlashVars" value="my_url=<?php echo "members/files/".com/go/getflashplayer" type="application/x-shockwave-flash" width="10" height="10"></embed> </object> Технически Университет . $delete = unlink("files/".29.php <?php //echo "$_POST[file_id]".Варна Дипломна работа . $result = @mysql_query($sql. if ($delete) { $db_name = "webdata". "auth_user".macromedia. } ?> Изработване на възпризвеждащия модул Интегриране на Flash модулът player3.0."$_SESSION[my_url]". header ("Location: index. $db = @mysql_select_db($db_name. ?>" pluginspage="http://www. $connection = @mysql_pconnect("localhost"."$_SESSION[my_url]".macromedia. 47 Програмна реализация Глава III Скриптове за управление на личните записи Скрипта за изтриване на файл и същевременно на запис от базата данни. ?>"> <param name="movie" value="player32.php").

// създаване на нов обект от тип Sound (звук) my_mp3. // функция за спиране на всички заредени звукови файлове. _root. Функцията се използва ако се зареди нов файл без да е спрян предния. Това се налага защото. плеарът ще го спре автоматично frame 3 my_mp3=new Sound(). в противен случай не се изпълняват скриптовете ако са разположени в първият фрейм. В случая ще е максимал но едни. // зареждане на файла за възпроизвеждане. 48 Програмна реализация Глава III Flash action скрипт Вътре в самият файл action скрипта е така проектиран.my_url оказва адреса на файла. Документа се настройва с 1 фрейм за секунда по този начин времето на изпълнение на модулът ще е 62 сукунди от който в 60 ще се възпроизведе файлът. Технически Университет . Като променливата _root. че стойността променливата my_url се приема като външен параметър.Варна Дипломна работа . а във втория имам следният код.loadSound(_root. frame 62 stop().my_url. frame 2 stopallSpunds(). true). означава че стойността й се приема от вън. Първият фрейм няма нищо. Скриптовете се записват в ключови кадри (key frames).

Варна Дипломна работа Възможности на web сайта 4 Глава .Технически Университет .

50 Възможности на сайта Глава IV Главна страница Механизъм за идентификация на регистриран клиент Бутони за Навигационно меню възпроизвеждане Система за рейтинг Информация за качения файл Таблица с десетте записа с най-висок реитинг Функция за сапис на файл на сървъра Контрол за избор на файл от локлен диск Select контрол за избор на жанр Бутон за изпълнение на формата Технически Университет .Варна Дипломна работа .

Функция за сапис на файл на сървъра TextArea съдържаща общите условия за ползване на сайта. Таблица за допълнителна инфорамция. 51 Възможности на сайта Глава IV Регистрация на нов потребител Навигационно Маркиране на меню задължителните полета Избор на потребителско име и парола Потребителят въвежда основната информация за профилът си.Варна Дипломна работа . Продължение на процеса че клиента не е на регистрация. Бутон в случай. съгласен с условията на сайта. Технически Университет .

Варна Дипломна работа . 52 Възможности на сайта Глава IV Главна страница на регистрираните посетители Навигационно меню Номер на поребителската сесия Потребителско име Контрол за изтриване Таблица със записите на Полета за жанр петте файла с най-висок рейтинг и рейтинг Поле с името на качения файл Технически Университет .

Варна Дипломна работа Приложение .Технически Университет .

</td><td align="center" bgcolor="#F4F2EC"><a href="add_newuser.org/TR/html4/loose."$_SESSION[my_url]".</td> <td width="10" bgcolor="#67C6F6">&nbsp.php">Members</a></td></tr> <tr><td>&nbsp.</td><td align="center" bgcolor="#F4F2EC"><a href="info.0" width="10" height="10"> <param name="FlashVars" value="my_url=<?php echo "members/files/". </td><td align="center" bgcolor="#F4F2EC"><a href="http://www.0b</title> <meta http-equiv="Content-Type" content="text/html.</td><td>&nbsp. ?>"> <param name="movie" value="player3.</td><td>&nbsp.w3.php">Register</a></td></tr> <tr><td>&nbsp.php">Info</a></td></tr> <tr><td>&nbsp.com/go/getflashplayer" type="application/x-shockwave-flash" width="10" height="10"></embed> </object>&nbsp.com/pub/shockwave/cabs/flash/swflash.29.0.macromedia.</td> <td bgcolor="#67C6F6">&nbsp."$_SESSION[my_url]".css"> </head> <body> <div align="center"> <table width="900" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="6" bgcolor="#F5FFE8" height="160">&nbsp.cab#version=6.</td></tr> <tr><td>&nbsp. ?>&nbsp.01 Transitional//EN" "http://www. Helvetica.html">About us</a></td></tr> <tr valign="top"> <td width="600" align="left"> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.</td><td align="center" bgcolor="#F4F2EC"><a href=".</td><td align="center" bgcolor="#F4F2EC"><a href="func_member.google.</td><td>&nbsp.swf" quality="high" FlashVars="my_url=<?php echo "members/files/".</td></tr> <tr><td>&nbsp.swf"> <param name="quality" value="high"> <embed src="player3. session_register("my_url").html <?php session_start().gif" cellpadding="0" cellspacing="0"><tr><td width="180" height="160"></td></tr></table></td> <td width="" valign="bottom"> <table cellpadding="0" cellspacing="4" align="left"> <tr><td>&nbsp. sans-serif" size="-1" color="#000000">Members</font></strong></td> Технически Университет . ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4./about. ?>" pluginspage="http://www.Варна Дипломна работа .</td></tr> <tr><td><?php echo "$_SESSION[my_url]".</td> <td width="180" valign="top" align="left" ><table background="images/logo1.</td></tr> <tr><td>&nbsp.dtd"> <html> <head> <title>Publishing v1..</td><td>&nbsp.</td> <td valign="top"> <table border="1" bordercolor="#DDDDDD" align="center" cellpadding="0" cellspacing="0"> <tr><td align="center" valign="top"> <table border="0" cellpadding="2" cellspacing="0"> <tr><td align="center" bgcolor="#F4F2EC"><strong><font face="Arial. charset=iso-8859-1"> <link rel="stylesheet" href="style.com">Exit</a></td></tr> </table> </td> </tr> <tr> <td bgcolor="#F5FFE8">&nbsp. 54 Приложение Index.macromedia.

font-size:9px. $result = @mysql_query($sql. Helvetica.html </tr> <tr><td height="100" width="184"> <table border="0" bordercolor="#CCCCCC" align="left" cellpadding="2" cellspacing="0"> <tr> <td valign="top"> <table bordercolor="#DDDDDD" border="1" cellpadding="0" cellspacing="2"> <tr><td width="180"align="center" bgcolor="#C2EFFE"><font face="Courier New. background-color:#67C6F6. Courier. sans-serif" size="-1" color="#000000">TOP 10 Uploaded MP3s</font></strong></td> </tr> <tr><td height="100" width="180"> <table cellpadding="0" cellspacing="2" border="1" bordercolor="#CCCCCC" bgcolor="#F9FFF9"> <tr><td width="240" bgcolor="#C2EFFE"><font face="Courier New. $genre = $row['genre'].". while ( $row=mysql_fetch_array($result) ){ $i = $i+1. ?><td align="left"><?php echo "N&nbsp. border-color:#FFFFFF" value="" type="password"></td></tr> <tr><td rowspan="2" colspan="2" align="left"> <table cellpadding="0" cellspacing="0"> <tr> <td><input name="submit" type="submit" style="font-size:10px. $id = $row['id']. 55 Приложение Index. border-color:#FFFFFF" value=""></td></tr> <tr><td align="left">password:</td></tr> <tr><td align="left"><input name="password" style="width:130px. $i = 0. top_record($_SESSION[username]). $sql = "select * from files order by rating desc limit 10".Варна Дипломна работа .-4).0. mono">Title</font></td> </tr> <?php require_once("functions/func2. $uploaded = $row['date'].php"><tr><td align="left"><input name="username" style="width:130px. $connect). ?></td></tr> <?php } } ?> Технически Университет .php"). function top_record($userid) { $connect = db_connect().php"> <td><p>&nbsp."$i&nbsp. $file = $row['filepath']. Courier.". background-color:#67C6F6" value="login"></td></form> <form method="post" action="add_newuser. background-color:#67C6F6" value="Register"></p></td></form> </tr> </table> </td> </tr> </table> </td> </tr> </table> </td></tr></table></td></tr></table> <table><tr><td><table border="1" bordercolor="#DDDDDD" align="center" cellpadding="0" cellspacing="0"> <tr><td align="center" valign="top"> <table border="0" cellpadding="2" cellspacing="0"> <tr> <td align="center" bgcolor="#F4F2EC"><strong><font face="Arial. background-color:#67C6F6. mono">Identification</font></td></tr> <tr><td align="left">username:</td></tr> <form method="post" action="login. font-size:9px.substr($file.<input name="submit" type="submit" style="font-size:10px.

Courier. mono">Rating</font></td> <td bgcolor="#C2EFFE"><font face="Courier New. border-color:#FFFFFF"></td></form> <td align="left">&nbsp.</td> <td bgcolor="#C2EFFE">&nbsp. ?></td> <td><?php echo "$uploaded". Courier.Genre</font></td> <td width="46" bgcolor="#C2EFFE"><font face="Courier New.</font></td> <td bgcolor="#C2EFFE"><font face="Courier New. $rating = $row['rating'].php"><td><input type="hidden" name="my_url" value="<?php echo "$file".</td> <td width="240" bgcolor="#C2EFFE"><font face="Courier New.Варна Дипломна работа . border-color:#FFFFFF"></td> </form> </tr> Технически Университет . Courier. Courier. 56 Приложение Index. sans-serif" size="-1" color="#000000">&nbsp. $connect).<?php echo substr($file.php"). mono">Uploaded</font></td> <td bgcolor="#C2EFFE"><font face="Courier New. Courier. $result = @mysql_query($sql. mono">&nbsp. background-color:#67C6F6"><option value="">-</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option></select></td> <td><input type="hidden" name="file_id" value="<?php echo "$id". mono">Rate</font></td> </tr> <?php require_once("functions/func2. = $row['filepath']. background-color:#67C6F6. read_record(). ?></td> <td><?php echo "$username". ?></td> <td><?php echo "$genre". ?></td> <form method="post" action="rate_entry. ?>"><input type="submit" value="STOP" style="font-size:8px. $sql = "select * from files order by id desc". ?> <tr align="center"> <form method="post" action="play_file. border-color:#FFFFFF"></td></form> <form method="post" action="stop_file. while ( $row=mysql_fetch_array($result) ){ $id = $row['id']. $uploaded = $row['date'].php"> <td><select name="rating" style="font-size:10px. Courier. background-color:#67C6F6. $username = $row['username']. Helvetica. ?>"><input type="submit" value="RATE" style="font-size:8px.Review Uploaded Music Creations</font></strong></td></tr> <tr><td align="left" valign="top"> <table cellpadding="0" cellspacing="2" border="1" bordercolor="#CCCCCC" bgcolor="#F9FFF9"> <tr align="center"> <td bgcolor="#C2EFFE">&nbsp. mono">Artist</font></td> <td width="50" bgcolor="#C2EFFE"><font face="Courier New.-4).0.html </table></td></tr> </table> </td> </tr> </table></td></tr></table> </td> <td valign="top"> <table border="1" bordercolor="#CCCCCC" align="left" cellpadding="0" cellspacing="0" > <tr><td valign="top"> <table cellpadding="2" cellspacing="0"> <tr><td align="left" bgcolor="#F4F2EC"><strong><font face="Arial. function read_record() { $connect = db_connect(). mono">Title</font></td> <td width="70" bgcolor="#C2EFFE"><font face="Courier New. ?></td> <td><?php echo "$rating". Courier.php"><td><input type="hidden" value="<?php echo "$file". ?>"><input type="submit" value="PLAY" style="font-size:8px. mono">&nbsp. background-color:#67C6F6. $genre = $row['genre'].

</td> <td>&nbsp.</a></font></td><td bgcolor="#F4F2EC"><a href="about. Courier.html">Log In.html">About us</a></td></tr> <tr><td>&nbsp.Варна Дипломна работа .</td><td>&nbsp. 57 Приложение Index.</td> <td width="404" valign="bottom"> <table cellpadding="0" cellspacing="4" align="left"> <tr><td align="left"><font style="font-size:12px">Already have a registration?&nbsp. charset=iso-8859-1"> <link rel="stylesheet" href="style.com">Exit</a></td></tr> <tr><td>&nbsp.<a href="index.</td></tr> <tr><td>&nbsp.</td><td>&nbsp.</td> </tr> </table> </div> </body> </html> add_newuser.w3.</td> <td width="10" bgcolor="#67C6F6">&nbsp.</td><td>&nbsp.google.</td><td>&nbsp.gif">&nbsp. mono" color="#FF0000">*</font> are required.</td><td>&nbsp.css"> </head> <body> <div align="center"> <table width="600" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="6" bgcolor="#B3FE85" height="170">&nbsp.</td></tr> <tr><td>&nbsp.</td></tr> <tr valign="top"> <td width="306" align="left">Fields marked with an asterisk <font face="Courier New.</td> </tr> </table> Технически Университет .0b</title> <meta http-equiv="Content-Type" content="text/html.01 Transitional//EN" "http://www.</td></tr> <tr><td>&nbsp.</td></tr> <tr><td>&nbsp.</td></tr> <tr><td>&nbsp.</td> <td bgcolor="#67C6F6">&nbsp.org/TR/html4/loose.</td><td>&nbsp.</td> <td width="" background="images/logo1du1.</td> <td>&nbsp.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.</td><td bgcolor="#F4F2EC"><a href="http://www.html <?php } } ?> </table> </td> </tr> </table> </table> </td> </tr> <tr> <td height="600" bgcolor="#F5FFE8">&nbsp.dtd"> <html> <head> <title>Web Site Registration v1.

Courier. background-color:#67C6F6.</td> <td align="left" valign="top"> <table cellpadding="0" cellspacing="0"> <tr><td bgcolor="#F4F2EC"><strong><font size="3">Create your authorship User ID</font></strong></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="10"></td></tr> <form method="post" action="add_user. background-color:#67C6F6.</td> <td valign="top" bgcolor="#F4F2EC">&nbsp. background-color:#67C6F6. mono" color="#FF0000">*&nbsp.</td><td><font size="-2" color="#999999">Can consist a-z. font-size:12px.</td> <td><input type="password" name="password2" style="width:230px. mono" color="#FF0000">*&nbsp. border-color:#FFFFFF"></td></tr> <tr> <td>&nbsp. border-color:#FFFFFF"></td></tr> <tr><td>&nbsp.</td> <td><input type="password" name="password1" style="width:230px. 0-9. 58 Приложение add_newuser. font-size:12px. Courier.</td></tr> Технически Университет . font-size:12px.Варна Дипломна работа .</td></tr> <tr> <td align="right"><font face="Courier New. background-color:#67C6F6. Courier.</td></tr> </table> </td> </tr> <tr><td bgcolor="#F4F2EC"><strong><font size="3">Customize User General Information</font></strong></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="10"></td></tr> <tr><td><table cellpadding="0" cellspacing="0"> <tr> <td align="right" width="120"><font face="Courier New. border-color:#FFFFFF"></td></tr> <tr><td>&nbsp. Courier. border-color:#FFFFFF"></td></tr> <tr> <td>&nbsp.</td> <td><input type="text" name="l_name" style="width:230px. mono" color="#FF0000">*&nbsp. mono" color="#FF0000">*&nbsp.</font>Password: &nbsp. background-color:#67C6F6.html </td> </tr> <tr> <td bgcolor="#B3FE85">&nbsp. font-size:12px. capitalization matters</font></td></tr> <tr> <td align="right"><font face="Courier New. mono" color="#FF0000">*&nbsp.</font>First Name: &nbsp. and underscores</font></td></tr> <tr> <td align="right"><font face="Courier New.</font>Re-type Password: &nbsp.</td> <td><input type="text" NAME="username" style="width:230px. border-color:#FFFFFF"></td></tr> <tr><td>&nbsp. font-size:12px.</td> <td><input type="text" NAME="f_name" style="width:230px. Courier.php"> <tr><td> <table cellpadding="0" cellspacing="0"> <tr> <td align="right" width="120"><font face="Courier New.</td><td><font size="-2" color="#999999">Six characters or more.</td> <td bgcolor="#67C6F6">&nbsp.</font>Last Name &nbsp.</font>Username: &nbsp.

value=''" maxlength="4" name="byear" size="4" value="yyyy" autocomplete=off style="font-size:12px.<input type="Text" onfocus="this.</td> <td><textarea style="width:230px. font-size:12px. background-color:#67C6F6.</td></tr> <tr> <td align="right"><font face="Courier New.</font>Gender: &nbsp. border-color:#FFFFFF" value="pnote1" name="pnote"></textarea></td></tr> <tr><td>&nbsp. border-color:#FFFFFF"></td></tr> <tr><td>&nbsp. font-size:12px. background-color:#67C6F6. 59 Приложение add_newuser. background-color:#67C6F6.</td></tr> </table> </td> </tr> <tr><td bgcolor="#F4F2EC"><strong><font size="3">Customize User Additional Information</font></strong></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="10"></td></tr> <tr><td> <table cellpadding="0" cellspacing="0"> <tr> <td align="right" width="120">Occupation: &nbsp.</td></tr> <tr> <td align="right"><font face="Courier New. font-size:12px.</td></tr> </table> Технически Университет . mono" color="#FF0000">*&nbsp. border-color:#FFFFFF"></td></tr> <tr><td>&nbsp. border-color:#FFFFFF" name="sx" id="sex"><option value="">[Select] <option value="Male"> Male <option value="Fmale"> Female</select> </td></tr> <tr><td>&nbsp.<input type="Text" maxlength="2" name="bday" size="2" value="dd" autocomplete=off style="font-size:12px.html <tr> <td align="right">Birth Day: &nbsp.</td> <td><input type="text" NAME="occupation" style="width:230px.</td> <td><input type="text" name="email" style="width:230px. border-color:#FFFFFF" name="bmonth" id="bmonth"><option value="">[Month] <option value="01">January<option value="02">February<option value="03">March<option value="04">April<option value="05">May<option value="06">June<option value="07">July<option value="08">August<option value="9">September<option value="10">October<option value="11">November<option value="12">December</select> &nbsp.Варна Дипломна работа .</td> <td><input type="text" name="altmail" style="width:230px. Courier. border-color:#FFFFFF"></td></tr> <tr><td>&nbsp. background-color:#67C6F6.</font>E-mail Address: &nbsp.</td> <td><select style="font-size:12px. background-color:#67C6F6. background-color:#67C6F6. border-color:#FFFFFF"> </td></tr> <tr><td>&nbsp.. mono" color="#FF0000">*&nbsp.</td></tr> <tr> <td align="right">Alternate Email: &nbsp.</td> <td><select style="font-size:12px. Courier. border-color:#FFFFFF" >&nbsp. background-color:#67C6F6.</td></tr> <tr> <td align="right">Personal note: &nbsp. background-color:#67C6F6.&nbsp. font-size:12px.

font-size:12px.Please review the foll</font></td> <td><font size="-2">owing terms and indicate your agreement below. 2005 </td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="0" bgcolor="#F4F2EC"></td></tr> <tr><td> <table cellpadding="0" cellspacing="0" bgcolor="#F4F2EC" width="360" align="center"> <tr><td align="right"></td><td></td></tr> <tr><td>&nbsp. background-color:#67C6F6.By clicking "I Agree" </td> <td>&nbsp.txt").</td><td></td></tr> </table> </td></tr> </table> </tr> <tr> <td height="0" bgcolor="#B3FE85"></td> <td bgcolor="#67C6F6"></td> <td></td> <td></td> </tr> </table> </div> </body> </html> Технически Университет . 60 Приложение add_newuser. font-size:12px.you agree and consent to the Terms of Service</td> </tr> </table> </td></tr> <tr><td align="center">Code developed for Technical University of Varna &copy.php"> <td>&nbsp.</td></tr> <tr> <td align="right"><input type="submit" name="agree" value="I Agree" style="width:170px.</font></td></tr> <tr><td width="120">&nbsp. border-color:#FFFFFF"><?php require_once("terms. ?></textarea></td></tr> <tr><td>&nbsp. echo "terms".html </td></tr> <tr> <td bgcolor="#F4F2EC"><strong><font size="3">Terms of Service</font></strong></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="10"></td></tr> <tr><td> <table cellpadding="0" cellspacing="0"> <tr> <td align="right"><font size="-2">&nbsp.<input type="submit" name="disagree" value="I Disagree" style="width:170px.Варна Дипломна работа . border-color:#FFFFFF"></td></form></tr> <tr><td></td></tr> <tr><td>&nbsp. font-size:12px. background-color:#67C6F6.</td></tr> <tr> <td align="right">&nbsp.</td> <td><textarea readonly rows="4"style="width:230px. border-color:#FFFFFF"></td></form> <form method="post" action="index.</td></tr> <tr> <td align="right">&nbsp. background-color:#67C6F6.

Варна Дипломна работа .php"><strong>Log Out</strong></a>&nbsp.php").php <?php session_start().dtd"> <html> <head> <title>Publishing v1.org/TR/html4/loose.</td><td>&nbsp."><a href="members/index.</td></tr> </table> </td> </tr> <tr> <td bgcolor="#B3FE85">&nbsp.</td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td align="center"><font style="font-size:16px.php"><strong>Procceed to Members Area</strong></a>&nbsp.</td> <td bgcolor="#67C6F6">&nbsp.</td> <td width="" background="images/logo1du.</td> <td width="404" valign="bottom"> <table cellpadding="0" cellspacing="4" align="left"> <tr><td>&nbsp.0b</title> <meta http-equiv="Content-Type" content="text/html.. charset=iso-8859-1"> <link rel="stylesheet" href="style.</td><td>&nbsp. 61 Приложение register.</td></tr> <tr valign="top"><td width="288" align="left">&nbsp.</td><td>&nbsp.gif">&nbsp.</td><td bgcolor="#F4F2EC"><a href="members/log_out. if ($_SESSION[valid] = 1) { add_user("$_SESSION[username]".</td> <td align="left" valign="top"> <table cellpadding="0" cellspacing="0"> <tr><td align="center" bgcolor="#F4F2EC"><strong><font size="3">Congratulations!</font></strong></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="10"></td></tr> <tr><td align="center"><font style="font-size:12px">Welcome <?php echo "$_SESSION[f_name]"?>&nbsp.</td> <td width="10" bgcolor="#67C6F6">&nbsp.</td></tr> <tr><td>&nbsp.</font></td></tr> <tr><td height="80"></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td align="center"><font style="font-size:16px."><a href="members/edit_account.you've just become a member of the</font></td></tr> <tr><td align="center"><font style="font-size:12px">MP3 Opinion &reg.</td></tr> <tr><td>&nbsp.<br>and it will be posted to be rate by the visitor of the site<br>Thank you! for choosing us.css"> </head> <body> <div align="center"> <table width="600" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="6" bgcolor="#B3FE85" height="170">&nbsp.html">About us</a></td></tr> <tr><td>&nbsp. } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. Web Site<br>Now you can upload created by you music.php">Members</a></td></tr> <tr><td>&nbsp.</td><td>&nbsp.</td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td align="center"><font style="font-size:16px.</td> <td valign="top" bgcolor="#F4F2EC" height="418">&nbsp.</td><td bgcolor="#F4F2EC"><a href="members/index.</td><td>&nbsp.</td><td bgcolor="#F4F2EC"><a href="about.php">Exit</a></td></tr> <tr><td>&nbsp.php"><strong>Edit Account Information</strong></a>&nbsp."><a href="members/log_out."$_SESSION[password]").w3.</td></tr> <tr><td>&nbsp.</td></tr> <tr><td align="center" width="338"></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> </table> Технически Университет . require_once("functions/func2.</td></tr> <tr><td>&nbsp.

//echo "$_POST[my_url]". ?> </div> </body> </html> play_file. session_unregister(genre). session_unregister(altmail). $table_name = "auth_users". session_unregister(p4). session_unregister(p3). ?> login. $sql = "SELECT * FROM $table_name WHERE username = '$user' AND password = PASSWORD('$pass')".php <?php session_unregister(password). session_unregister(ret). $connection) or die(mysql_error()).html"). $db_pass) or die(mysql_error()). $result = @mysql_query($sql. $db_name = "webdata". $db_user = "auth_user". $db_pass = "authuser". $_SESSION[my_url] = "". exit(). header("Location: index. 62 Приложение register. exit(). Технически Университет . ?> stop_file. session_unregister(f_name). $connection = @mysql_connect($db_host. session_unregister(p).Варна Дипломна работа . session_unregister(p2). $pass) { $db_host = "localhost". header("Location: index.php <?php session_start(). session_unregister(birth). session_unregister(occupation). $connection) or die(mysql_error()). $db = @mysql_select_db($db_name. session_unregister(pnote).php <?php function authenticate($user.php <?php session_start().html"). $db_user. session_unregister(l_name). $_SESSION[my_url] = $_POST[my_url].

$sql = "UPDATE files set votes_am = '$new_amount' where id = '$id'".php if (mysql_num_rows($result) == 1) { return 1. } else { return 0. $count = $count +1. $sql = "UPDATE files set rating = '$newrating' where id = '$id'".php"). exit(). function read_record($file_id) { $connect = db_connect(). } if ($_POST[rating]) { read_record($_POST[file_id]).78. } else { header("Location: http://83. $result = @mysql_query($sql. $connect). $result = @mysql_query($sql. $amount = $row['votes_am']. $sql = "UPDATE files set votes_count = '$count' where id = '$id'". exit.php"). } $new_amount = $amount + $_POST[rating].php"). session_register("SESSION"). if ($status == 1) { session_start(). } ?> rate_entry.228. } } $status = authenticate($_POST[username].php <?php require_once("functions/func_connect. $count = $row['votes_count']. exit(). $sql = "select * from files where id = '$file_id'". $_SESSION[username] = $_POST[username].Варна Дипломна работа . //echo "$_POST[rating]". while ( $row=mysql_fetch_array($result) ){ $id = $row['id']. $result = @mysql_query($sql. ?> Технически Университет .174/website/phpinfo. $connect). $rate = $row['rating']. header("Location: members/index. } header ( "Location: index. $_POST[password]). $connect). $connect). $newrating = $new_amount/$count. session_register("username"). $result = @mysql_query($sql.php"). 63 Приложение login.

$db = @mysql_select_db($db_name. $db_pass = "authuser".php <?php function authenticate($user. $db_user = "auth_user". session_unregister(birth).php <?php session_start(). session_unregister(p).php <?php session_start(). session_unregister(genre).Варна Дипломна работа . $_SESSION[my_url] = "". header("Location: index. exit(). //echo "$_POST[my_url]".html"). $sql = "SELECT * FROM $table_name WHERE username = '$user' AND password = PASSWORD('$pass')". session_unregister(occupation). $db_name = "webdata". $table_name = "auth_users". ?> </div> </body> </html> play_file. session_unregister(ret). ?> stop_file. session_unregister(p4). $pass) { $db_host = "localhost". exit(). $db_user. session_unregister(p2). session_unregister(l_name). $result = @mysql_query($sql. session_unregister(altmail). session_unregister(p3). ?> login. session_unregister(f_name). 64 Приложение register. header("Location: index.php <?php session_unregister(password). $_SESSION[my_url] = $_POST[my_url]. $db_pass) or die(mysql_error()). Технически Университет .html"). $connection) or die(mysql_error()). session_unregister(pnote). $connection = @mysql_connect($db_host. $connection) or die(mysql_error()).

78. exit(). $connect). exit. //echo "$_POST[rating]".Варна Дипломна работа . } header ( "Location: index.php"). } else { return 0. $sql = "UPDATE files set rating = '$newrating' where id = '$id'". $result = @mysql_query($sql. } ?> rate_entry. 65 Приложение login. $amount = $row['votes_am']. while ( $row=mysql_fetch_array($result) ){ $id = $row['id']. $sql = "UPDATE files set votes_count = '$count' where id = '$id'". $_POST[password]). $count = $count +1. $connect). $sql = "select * from files where id = '$file_id'". session_register("username"). if ($status == 1) { session_start(). $connect). } else { header("Location: http://83. } $new_amount = $amount + $_POST[rating]. $result = @mysql_query($sql. $result = @mysql_query($sql. $result = @mysql_query($sql. exit().228. header("Location: members/index. $newrating = $new_amount/$count.php <?php require_once("functions/func_connect.php").php"). $rate = $row['rating'].php if (mysql_num_rows($result) == 1) { return 1. $_SESSION[username] = $_POST[username]. } } $status = authenticate($_POST[username]. } if ($_POST[rating]) { read_record($_POST[file_id]). session_register("SESSION"). function read_record($file_id) { $connect = db_connect(). ?> Технически Университет . $connect). $sql = "UPDATE files set votes_am = '$new_amount' where id = '$id'".174/website/phpinfo.php"). $count = $row['votes_count'].

66 Приложение func2."."$p1". $_SESSION[p1] = "".".Варна Дипломна работа . if ((!$_POST[newusr]) || (!$_POST[password1]) || (!$_POST[password2])) { $_SESSION[p] = "One of the necessary fields is not filled out". $_SESSION[p3] = "". } if ( valid_username($_POST[newusr]) == 0) { $_SESSION[p1] = "Username not valid. $_SESSION[p3] = "". } if ( strlen($_POST[password1]) < 6 || strlen($_POST[password1]) > 16 ) { $_SESSION[p3] = "Your password must be between 6 and 16 characters. $_SESSION[valid] = 0."$p2". $_SESSION[p] = "". $_SESSION[p2] = "". $_SESSION[p1] = ""."valid")."p4". return 0.Please enter valid username."$p3".Please enter valid username. if ((!$_POST[username]) || (!$_POST[password1]) || (!$_POST[password2]) || (!$_POST[f_name]) || (!$_POST[l_name]) || (!$_POST[sx]) || (!$_POST[email])) { $_SESSION[p] = "One of the necessary fields is not filled out". } if ( valid_username($_POST[username]) == 0) { $_SESSION[p1] = "Username not valid. return 0. return 0. } if ($_POST[password1] != $_POST[password2]) { $_SESSION[p2] = "Re-typed Password don't match.". } function validate_update() { session_register("$p"."$p2". return 0. } return 1. } Технически Университет . $_SESSION[valid] = 0. } if ( strlen($_POST[password1]) < 6 || strlen($_POST[password1]) > 16 ) { $_SESSION[p3] = "Your password must be between 6 and 16 characters. $_SESSION[p2] = "". $_SESSION[userid] = "".". $_SESSION[p] = "". return 0."."$p3". return 0.". } if (valid_email($_POST[email]) == 0) { $_SESSION[p4] = "You must type a valid e-mail address. } if ( user_check($_POST[username]) == 0 ) { return 0. $_SESSION[p4] = "". $_SESSION[ret] = ""."$p1"."valid"). return 0. return 0. } return 1.php <?php function validate_posts() { session_register("$p". } if ($_POST[password1] != $_POST[password2]) { $_SESSION[p2] = "Re-typed Password don't match. return 0.".

} function valid_email($address) { if (ereg("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.". $result = @mysql_query($sql. $result = @mysql_query($sql.[a-zA-Z0-9\-\. $connect). "$_SESSION[genre]". if ( user_check($user) == 1 ) { $connect = db_connect(). } } Технически Университет . $connect) or die(mysql_error()).Варна Дипломна работа . } } function get_userid($username) { $connect = db_connect(). $connect = db_connect(). '$user'. "$_SESSION[email]". "$_SESSION[occupation]". password) VALUES (NULL. $db = @mysql_select_db($db_name. $address)) return 1. if (!$result) { $_SESSION[ret] = "Could not execute query". "$_SESSION[altmail]". $username)) return 1. $connection = @mysql_pconnect("localhost". $sql = "SELECT id FROM auth_users where username = '$username'". } } function add_user($user. else return 0. username. } function user_check($user) { session_register("ret"). $connect) or die(mysql_error()). "authuser") or die(mysql_error()). } else { $_SESSION[ret] = "Username is unique". "$_SESSION[birth]". session_register("userid"). "$_SESSION[l_name]". $sql = "select * from auth_users where username = '$user'". 67 Приложение func2. return $connection. return 0.go back and choose another one.php function db_connect() { $db_name = "webdata". $sql = "INSERT INTO auth_users (id. "auth_user".]+$". while ($row = mysql_fetch_array($result)) { $_SESSION[userid] = $row['id']. get_userid($_SESSION[username]). $connection) or die(mysql_error()).$pass) { session_register("n2"). add_info("$_SESSION[userid]". $result = @mysql_query($sql. } function valid_username($username) { if (ereg("^[a-zA-Z0-9_]+$". "$_SESSION[f_name]". password('$pass'))". else return 0. } if (mysql_num_rows($result)>0) { $_SESSION[ret] = "That username is taken . return 1. "$_SESSION[pnote]").

$genre.$birth.'$birth'. '$f_name'.$l_name. $sql = "UPDATE auth_users set username = '$user' where id = '$_SESSION[userid]'". l_name.</strong></a></font> <?php } } ?> func_connect."><a href="reg_update. 68 Приложение func2.php"><strong>Please fill the form again. birth.php"><strong>Proceed with the Registration</strong></a></font> <?php } else { ?> <font style="font-size:14px.'$email'. f_name. $result = @mysql_query($sql. '$l_name'. } function update_account($user. $connect) or die(mysql_error()).php"><strong>Please fill the form again.$occupation.php <?php function db_connect() { $db_name = "webdata". $connect) or die(mysql_error()).'$occupation'.$altmail. altmail."><a href="add_newuser."><a href="register. $db = @mysql_select_db($db_name.'$genre'.'$altmail'.$pass) { get_userid($_SESSION[username]). $sql = "INSERT INTO users (id. "rateuser") or die(mysql_error()). $result = @mysql_query($sql. } } ?> <?php function proceed($valid) { if ($valid == 1) { ?> <font style="font-size:14px.php"><strong>Update Information</strong></a></font> <?php } else { ?> <font style="font-size:14px. occupation.$f_name.php function add_info($id."><a href="edit_account. if ( user_check($_SESSION[username]) == 0 ) { $connect = db_connect().</strong></a></font> <?php } } ?> <?php function update($valid) { if ($valid == 1) { ?> <font style="font-size:14px.$pnote) { $connect = db_connect().'$pnote')". genre. email. $sql = "UPDATE auth_users set password = password('$pass') where id = '$_SESSION[userid]'". pnote) VALUES ('$id'. $connect) or die(mysql_error()).Варна Дипломна работа . return $connection. } ?> Технически Университет . "rate_user". $connection) or die(mysql_error()). $connection = @mysql_pconnect("localhost".$email. $result = @mysql_query($sql.

</td><td>&nbsp.</td></tr> </table> </td> </tr> <tr> <td bgcolor="#B3FE85">&nbsp.</td><td>&nbsp. mono">Title</font></td> </tr> Технически Университет .Варна Дипломна работа .w3./images/logov1f.dtd"> <html> <head> <title>-=MP3 Opinion=.css"> </head> <body> <div align="center"> <table width="800" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="6" bgcolor="#B3FE85" height="170">&nbsp. charset=iso-8859-1"> <link rel="stylesheet" href=".. Helvetica. ?>&nbsp.php">Account</a></td></tr> <tr><td>&nbsp.gif"></td></tr></table></td> <td width="494"><table cellpadding="0" cellspacing="4" align="left"> <tr><td>&nbsp.</td><td bgcolor="#F4F2EC"><a href="log_out. Courier. 69 Приложение members/index.</td> <td width="200" align="center" valign="top"> <table border="1" bordercolor="#DDDDDD" align="center" cellpadding="0" cellspacing="0"> <tr> <td align="center" valign="top"> <table border="0" cellpadding="2" cellspacing="0"> <tr> <td align="center" bgcolor="#F4F2EC"><strong><font face="Arial.01 Transitional//EN" "http://www.</td> <td width="10" bgcolor="#67C6F6">&nbsp.</td></tr> <tr valign="top"><td width="350" align="left"><?php echo "<p>Session ID:".</td></tr> <tr><td>&nbsp.</td></tr> <tr><td>&nbsp..</td><td>&nbsp.</td> <td bgcolor="#67C6F6">&nbsp.</td> <td width="200" valign="top" align="left" ><table cellpadding="0" cellspacing="0"><tr><td width="180" height="180" background=". ?>&nbsp.html">About us</a></td></tr> <tr><td>&nbsp.php">Upload</a></td></tr> <tr><td>&nbsp./about.php">Logout</a></td></tr> <tr><td>&nbsp.org/TR/html4/loose.</td><td bgcolor="#F4F2EC"><a href=".</td><td bgcolor="#F4F2EC"><a href="upload_file.Web Site v1. sans-serif" size="-1" color="#000000">TOP 5 Own MP3s</font></strong></td> </tr> <tr><td height="100" width="180"> <table cellpadding="0" cellspacing="2" border="1" bordercolor="#CCCCCC" bgcolor="#F9FFF9"> <tr><td width="240" bgcolor="#C2EFFE"><font face="Courier New.</td></tr> <tr><td><?php echo "$_SESSION[username]".</td><td>&nbsp.php <?php session_start()."</p>".session_id().0b</title> <meta http-equiv="Content-Type" content="text/html./style.</td><td bgcolor="#F4F2EC"><a href="edit_account. ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4..

php"). sans-serif" size="-1" color="#000000">Review Uploaded Music Creations</font></strong></td></tr> <tr><td align="left" width="390" valign="top"> <table cellpadding="0" cellspacing="2" border="1" bordercolor="#CCCCCC" bgcolor="#F9FFF9"> <tr><td width="240" bgcolor="#C2EFFE"><font face="Courier New. mono">Title</font></td><td width="60" bgcolor="#C2EFFE"><font face="Courier New. Courier. read_record($_SESSION[username]). Helvetica. mono">Genre</font></td><td width="46" bgcolor="#C2EFFE"><font face="Courier New. $sql = "select * from files where username = '$userid' order by rating desc limit 5". $result = @mysql_query($sql. Courier. $file = $row['filepath']. ?></td></tr> <?php } } ?> </table></td></tr> </table> </td> </tr> </table> </td> <td valign="top"><table border="1" bordercolor="#CCCCCC" bgcolor=""align="left" cellpadding="0" cellspacing="0" > <tr> <td valign="top"><table border="0" cellpadding="2" cellspacing="0"> <tr><td align="left" bgcolor="#F4F2EC"><strong><font face="Arial.php <?php require_once(". ?><td><?php echo "$file&nbsp. $genre = $row['genre']. Courier. //echo "$id&nbsp.". 70 Приложение members/index. mono">Rating</font></td><td bgcolor="#C2EFFE"><font face="Courier New. $i = 0. mono">Delete</font></td> </tr> Технически Университет . $connect).. while ( $row=mysql_fetch_array($result) ){ $i = $i+1. $id = $row['id']. $uploaded = $row['date'].".Варна Дипломна работа . Courier. runction read_record($userid) { $connect = db_connect()./func2.

$uploaded = $row['date']. $genre = $row['genre']. function top_record($userid) { $connect = db_connect(). border-color:#FFFFFF"></td></form></tr> <?php } } ?> </table> </td> </tr> </table> </td> </tr> </table> </td> <td width="72" valign="top" ><table border="1" bordercolor="#DDDDDD" align="left" cellpadding="0" cellspacing="0"> <tr> </tr> </table> </td> </tr> <tr> <td height="600" bgcolor="#B3FE85">&nbsp.".</td> <td bgcolor="#67C6F6">&nbsp. ?></td><form method="post" action="delete_entry. top_record($_SESSION[username]).php"><td><input type="hidden" name="file_name" value="<?php echo "$file". ?>"><input type="hidden" name="file_id" value="<?php echo "$id". $file = $row['filepath'].</td> </tr> </table> </div> </body> </html> Технически Университет . background-color:#67C6F6./func2.php <?p <?php require_once(". $connect). ?> <td><?php echo "$file&nbsp..Варна Дипломна работа . while ( $row=mysql_fetch_array($result) ){ $id = $row['id'].php").</td> <td>&nbsp.</td> <td>&nbsp. ?>"><input type="submit" value="DELETE" style="font-size:8px. $rating = $row['rating']. $sql = "select * from files where username = '$userid'". $result = @mysql_query($sql. ?></td><td><?php echo "$genre". ?></td><td><?php echo "$rating". 71 Приложение members/index.

00 Mb.Web Site v1. sans-serif" size="-1" color="#000000">File Upload</font></strong></td></tr> <tr><td align="left" height="140" width="348" valign="top"> <table cellpadding="0" cellspacing="2"> <tr><td><table> <tr><td></td></tr> <tr><td>Click "Browse" to select file.</td> <td width="10" bgcolor="#67C6F6">&nbsp.dtd"> <html> <head> <title>-=MP3 Opinion=. background-color:#67C6F6.</td></tr> </table> </td> </tr> <tr> <td bgcolor="#B3FE85">&nbsp.</td></tr> <tr><td>&nbsp. charset=iso-8859-1"> <link rel="stylesheet" href=".php" ENCTYPE="multipart/form-data"> <tr><td><table> <tr><td width="140"></td></tr> <tr><td><strong><font style="font-size:12px..gif">&nbsp. The File size is limited to 1.</td><td>&nbsp.</td><td>&nbsp.Варна Дипломна работа .</font></strong></td><td><select style="font-size:12px..</td> <td valign="top"><table border="1" bordercolor="#DDDDDD" align="left" cellpadding="0" cellspacing="0"> <tr> </tr> </table> </td> <td valign="top"><table border="1" bordercolor="#DDDDDD" bgcolor=""align="left" cellpadding="0" cellspacing="0" > <tr> <td valign="top"><table border="0" cellpadding="2" cellspacing="0"> <tr><td align="left" bgcolor="#F4F2EC"><strong><font face="Arial.php">Account</a></td></tr> <tr><td>&nbsp. border-color:#FFFFFF"></td></tr> <tr><td><strong><font style="font-size:12px.0b</title> <meta http-equiv="Content-Type" content="text/html. 72 Приложение members/upload_file.</td><td>&nbsp..org/TR/html4/loose.</td><td bgcolor="#F4F2EC"><a href=".w3. Helvetica.</td><td bgcolor="#F4F2EC"><a href="upload_file. ">File :&nbsp./about.</td></tr> <tr><td>&nbsp. color:#00B6FB. color:#00B6FB.php <?php session_start(). background-color:#67C6F6.</td><td bgcolor="#F4F2EC"><a href="log_out./style.01 Transitional//EN" "http://www.php">Upload</a></td></tr> <tr><td>&nbsp.html">About us</a></td></tr> <tr><td>&nbsp.</td></tr> <tr><td>You have also to select Genre for your upload</td></tr> <tr><td>When done click "Upload" and the file will be listed in your chart</td></tr> </table></td></tr> <form method="post" action="do_upload.">Genre :&nbsp.</td></tr> <tr><td>&nbsp.css"> <body> <div align="center"> <table width="800" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="6" bgcolor="#B3FE85" height="170">&nbsp. ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.</td><td bgcolor="#F4F2EC"><a href="edit_account.</td><td>&nbsp.php">Logout</a></td></tr> <tr><td>&nbsp.</td> <td bgcolor="#67C6F6">&nbsp. border-color:#FFFFFF" name="genre"><option value="">[Select] <option value="house"> House <option value="techno"> Techno <option value="progressive"> Progressive</select></tr> Технически Университет .</td></tr> <tr valign="top"><td width="300" align="left"><?php echo "$_SESSION[username]"./images/logov1f.</font></strong></td><td><input type="file" name="img1" style="font-size:12px.</td> <td width="366"><table cellpadding="0" cellspacing="4" align="left"> <tr><td>&nbsp. ?>&nbsp.</td> <td width="175" background=".

} header ("Location: upload_file. $_SESSION[uploaded] = date("H:i-d. $_SESSION[userid] = 7.'$_SESSION[uploaded]'. '$_SESSION[file_name]'.</td><td>&nbsp."userid"). filepath. $result = @mysql_query($sql. $db = @mysql_select_db($db_name.$_SESSION[file_name].php <?ph</table></td></tr> <tr><td><table> '<tr><td width="133"></td><td><input type="submit" value="Upload" style="width:170px.</td></tr></table></div></body></html> members/do_upload.m. 73 Приложение members/upload_file. $_SESSION[file_path] = $upload_dir. session_register("file_name". $connection) or die(mysql_error()). $sql = "INSERT INTO files (id.'$_SESSION[username]')". "auth_user". } } else { die("No Input"). $temp_name = $_FILES['img1']['tmp_name'].php"). "authuser") or die(mysql_error()). if (!is_uploaded_file($_FILES['img1']['tmp_name'])) { echo "Problem whit uploading". $_SESSION[file_path]).username) VALUES (NULL. $_SESSION[file_name] = $_FILES['img1']['name'].y"). background-color:#67C6F6. date."genre". $connection = @mysql_pconnect("localhost".php <?php session_start().'$_SESSION[genre]'. } else { move_uploaded_file($temp_name. genre. ?> Технически Университет .</td> <td>&nbsp."uploaded". font-size:12px. if ($_FILES[img1] != "" && $_POST[genre] != "") { $upload_dir = "files/". border-color:#FFFFFF"></td></tr></table></td></tr></form></table> </td></tr> </table></td> </tr></table> </td><td valign="top" width="241"><table border="1" bordercolor="#DDDDDD" align="left" cellpadding="0" cellspacing="0"> <tr></tr></table> </td></tr> <tr><td height="600" bgcolor="#B3FE85">&nbsp."file_path". $db_name = "webdata". $_SESSION[genre] = $_POST[genre].Варна Дипломна работа . $connection) or die(mysql_error()).</td> <td bgcolor="#67C6F6">&nbsp.

css"> </head> <body> <div align="center"> <table width="600" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="6" bgcolor="#B3FE85" height="170">&nbsp.org/TR/html4/loose. $connection) or die(mysql_error()).</td><td bgcolor="#F4F2EC"><a href="about./images/logo1du.Варна Дипломна работа .</td><td>&nbsp.</td> </tr> </table> </td> </tr> <tr> <td bgcolor="#B3FE85">&nbsp.</td></tr> <tr><td>&nbsp. ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.</td><td>&nbsp. $result = @mysql_query($sql. header ("Location: index.gif">&nbsp.</td></tr> <tr><td><?php echo "$_SESSION[username]" ?>&nbsp.</td> <td bgcolor="#67C6F6">&nbsp.01 Transitional//EN" "http://www.</td><td bgcolor="#F4F2EC"><a href="members/index.dtd"> <html> <head> <title>MP3 Opinions v1. charset=iso-8859-1"> <link rel="stylesheet" href=". 74 Приложение members/delete_entry. if ($delete) { $db_name = "webdata".php"). } ?> members/edit_account.</td></tr> <tr><td>&nbsp. $connection = @mysql_pconnect("localhost"..php").$_POST[file_name]).</td> <td align="left" valign="top"> <table cellpadding="0" cellspacing="0"> <tr><td bgcolor="#F4F2EC"><strong><font size="3">Update your User ID</font></strong></td></tr> Технически Университет .</td> <td width="" background=".php">Members</a></td></tr> <tr><td>&nbsp. exit()./style. Courier. //echo "$_POST[file]".0b</title></title> <meta http-equiv="Content-Type" content="text/html.</td> <td valign="top" bgcolor="#F4F2EC" height="417">&nbsp. ?>&nbsp.</td> <td width="404" valign="bottom"> <table cellpadding="0" cellspacing="4" align="left"> <tr><td>&nbsp."$_SESSION[ret]". $connection) or die(mysql_error()).</td></tr> <tr valign="top"> <td width="306" align="left">Fields marked with an asterisk <font face="Courier New. $delete = unlink("files/". $sql = "DELETE FROM files where id=$_POST[file_id]".</td><td>&nbsp. mono" color="#FF0000">*</font> are required..</td><td>&nbsp. } else { header ("Location: index.</td><td>&nbsp.php <?php //echo "$_POST[file_id]".</td> <td width="10" bgcolor="#67C6F6">&nbsp. $db = @mysql_select_db($db_name.w3.php">Logout</a></td></tr> <tr><td>&nbsp.</td><td bgcolor="#F4F2EC"><a href="members/log_out. exit().</td></tr> <tr><td><?php echo "$_SESSION[userid]". "authuser") or die(mysql_error()).html">About us</a></td></tr> <tr><td>&nbsp. "auth_user".php <?php session_start().

border-color:#FFFFFF"></td> </tr> <tr><td>&nbsp. and underscores</font></td></tr> <tr> <td align="right"><font face="Courier New. font-size:12px. Courier. capitalization matters</font></td></tr> <tr> <td align="right"><font face="Courier New.</td><td><font size="-2" color="#999999">Six characters or more. background-color:#67C6F6. 75 Приложение members/edit_account.</td> <td><input type="password" name="password1" style="width:230px.php"> <tr><td><table cellpadding="0" cellspacing="0"> <tr> <td align="right" width="120"><font face="Courier New. font-size:12px.</td> <td><input type="text" NAME="newusr" style="width:230px. background-color:#67C6F6. background-color:#67C6F6. Courier.</font>New Password: &nbsp.</td> <td><input type="password" name="password2" style="width:230px. Courier. border-color:#FFFFFF"></td></tr></form> </table> </td></tr> </table> </td> </tr> <tr> <td height="0" bgcolor="#B3FE85"></td> <td bgcolor="#67C6F6"></td> <td></td> <td></td> </tr> </table> </div> </body> </html> Технически Университет . border-color:#FFFFFF"></td> </tr> <tr><td>&nbsp. mono" color="#FF0000">*&nbsp.</td></tr> </table> </td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td><table cellpadding="0" cellspacing="0" width="360" align="center"> <tr><td width="119" align="right"></td><td></td></tr> <tr><td></td><td align="left"><input type="submit" name="agree" value="Submit New Information" style="width:170px. 0-9. mono" color="#FF0000">*&nbsp. background-color:#67C6F6.Варна Дипломна работа . font-size:12px.php <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="10"></td></tr> <form method="post" action="update_acc.</td><td><font size="-2" color="#999999">Can consist a-z.</font>Re-type Password: &nbsp. border-color:#FFFFFF"></td> </tr> <tr><td>&nbsp. font-size:12px.</font>New Username: &nbsp. mono" color="#FF0000">*&nbsp.

</td><td>&nbsp..php").</td><td>&nbsp.</td></tr> <tr><td>&nbsp.Варна Дипломна работа .</td><td bgcolor="#F4F2EC"><a href="about.0b</title> <meta http-equiv="Content-Type" content="text/html.</td><td></td></tr> <tr><td>&nbsp. 76 Приложение members/index_check.dtd"> <html> <head> <title>-=MP3 Opinoin=.</td> <td width="" background=". if ($_SESSION[valid] = 1) { update_account("$_SESSION[newusr]".</td></tr> <tr><td>&nbsp..</td></tr> <tr><td>&nbsp.Web Site Log Out v1. require_once(". } ?> members/log_out. } else { header ("Location : index. } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.php")./functions/func2./images/logo1du.gif">&nbsp. ?> <?php session_start()./style.</td> <td width="404" valign="bottom"> <table cellpadding="0" cellspacing="4" align="left"> <tr><td>&nbsp.php <?php if (!$_SESSION[username]) { header ("Location : log_out. session_unset().</td> <td align="left" valign="top"> Технически Университет .01 Transitional//EN" "http://www.org/TR/html4/loose.w3.php").</td> <td bgcolor="#67C6F6">&nbsp. $log_user = $_SESSION[username]. charset=iso-8859-1"> <link rel="stylesheet" href=". session_destroy().</td><td>&nbsp.</td></tr> <tr><td>&nbsp.css"> </head> <body> <div align="center"> <table width="600" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="6" bgcolor="#B3FE85" height="170">&nbsp.html">About us</a></td></tr> <tr><td>&nbsp..</td></tr> </table> </td> </tr> <tr> <td bgcolor="#B3FE85">&nbsp.</td></tr> <tr valign="top"><td width="288" align="left">&nbsp. $result = session_unregister("_SESSION[username]").php <?php session_start().</td><td>&nbsp.</td><td>&nbsp."$_SESSION[newpwd]").</td> <td width="10" bgcolor="#67C6F6">&nbsp.</td> <td valign="top" bgcolor="#F4F2EC" height="418">&nbsp.</td><td> <tr><td>&nbsp.

</td><td bgcolor="#F4F2EC"><a href=". } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4."$_SESSION[newpwd]")./index. if ($_SESSION[valid] = 1) { update_account("$_SESSION[newusr]".</td><td>&nbsp. charset=iso-8859-1"> <link rel="stylesheet" href=".dtd"> <html> <head> <title>Publishing v1.</td></tr> <tr><td>&nbsp.php <?php session_start()./functions/func2.gif">&nbsp.Варна Дипломна работа ./style.</td><td>&nbsp..</td></tr> </table> Технически Университет .</td> <td width="" background=".php <table cellpadding="0" cellspacing="0"> <tr><td align="center" bgcolor="#F4F2EC"><strong><font size="3"><?php if (!empty($log_user)) { if ($result) { echo "Loged out successfully".01 Transitional//EN" "http://www.php">Exit</a></td></tr> <tr><td>&nbsp.</td></tr> <tr><td align="center" width="338"></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> </table> </tr> </table> </div> </body> </html> members/reg_update..org/TR/html4/loose. require_once(".html">About us</a></td></tr> <tr><td>&nbsp.php">Members</a></td></tr> <tr><td>&nbsp.</td><td bgcolor="#F4F2EC"><a href="log_out./images/logo1du.</td><td bgcolor="#F4F2EC"><a href="index.</td> <td width="404" valign="bottom"> <table cellpadding="0" cellspacing="4" align="left"> <tr><td>&nbsp.php"). Web Site</font></td></tr> <tr><td height="80"></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td align="center"><font style="font-size:16px.w3.css"> </head> <body> <div align="center"> <table width="600" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="6" bgcolor="#B3FE85" height="170">&nbsp.html"><strong>Return to Main Page</strong></a>&nbsp.</td> <td width="10" bgcolor="#67C6F6">&nbsp../about.</td><td>&nbsp..</td></tr> <tr><td>&nbsp. } } ?></font></font></strong></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="10"></td></tr> <tr><td align="center"><font style="font-size:12px">MP3 Opinion &reg.</td></tr> <tr><td>&nbsp.</td></tr> <tr valign="top"><td width="288" align="left">&nbsp.</td><td>&nbsp. 77 Приложение members/log_out.0b</title> <meta http-equiv="Content-Type" content="text/html."><a href=".</td><td>&nbsp.</td></tr> <tr><td>&nbsp.. } else { echo "Could not log out".

php"><strong>Log Out</strong></a>&nbsp. $_SESSION[newusr] = $_POST[newusr].org/TR/html4/loose.php"><strong>Return to Members Area</strong></a>&nbsp.</td> <td bgcolor="#67C6F6">&nbsp.0b</title> <meta http-equiv="Content-Type" content="text/html./style."><a href="log_out./functions/func2. 78 Приложение members/reg_update.</td> <td valign="top" bgcolor="#F4F2EC" height="418">&nbsp.</td></tr> <tr><td align="center" width="338"></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> </table> </tr> </table> <?php session_unregister(password).01 Transitional//EN" "http://www. ?> </div> </body> </html> members/update_acc. charset=iso-8859-1"> <link rel="stylesheet" href=". Web Site</font></td></tr> <tr><td height="80"></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td align="center"><font style="font-size:16px.</td> <td align="left" valign="top"> <table cellpadding="0" cellspacing="0"> <tr><td align="center" bgcolor="#F4F2EC"><strong><font size="3">Information Updated Successfully</font></font></strong></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="10"></td></tr> <tr><td align="center"><font style="font-size:12px">MP3 Opinion &reg."><a href="index.Варна Дипломна работа . if ( validate_update() == 1 ) { $_SESSION[valid] = 1.. require_once(". session_unregister(p3). session_unregister(p). session_unregister(p2). get_userid($_SESSION[username]). } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.dtd"> <html> <head> <title>Publishing v1.php </td> </tr> <tr> <td bgcolor="#B3FE85">&nbsp.php <?php session_start().css"> </head> Технически Университет .."newpwd").php").</td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td align="center"><font style="font-size:16px.w3. session_register("newusr".

</td><td bgcolor="#F4F2EC"><a href="about.</td> <td align="left" valign="top"> <table cellpadding="0" cellspacing="0"> <tr><td bgcolor="#F4F2EC"><strong><font size="3">User New Authentication Information</font></strong></td></tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr><td height="10"></td></tr> <tr><td><table cellpadding="0" cellspacing="0"> <tr> <td align="right" width="100">New Username: &nbsp.</td><td>&nbsp.php <body> <div align="center"> <table width="600" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="6" bgcolor="#B3FE85" height="170">&nbsp. $i = strlen($string).html">About us</a></td></tr> <tr><td>&nbsp.</td></tr> <tr valign="top"> <td width="288" align="left"><font style="font-size:12px">Review your update information and regiser</font></td> </tr> </table> &nbsp.</td><td><?php echo "$_SESSION[p1]" ?></td></tr> <tr> <td align="right">New Password: &nbsp. $n<$i.</td> </tr> <tr> <td bgcolor="#B3FE85">&nbsp. for ($n=0.google.</td> <td bgcolor="#67C6F6">&nbsp.?></td></tr> </table> </td></tr> <tr><td><table bgcolor="#F4F2EC" cellpadding="0" cellspacing="0"><tr> <tr><td bgcolor="#CCCCCC" height="4"></td></tr> <tr> <td align="center" width="338"><?php update($_SESSION[valid]).</td><td><?php echo "$_SESSION[p2]"."$_SESSION[ret]". ?> &nbsp.</td><td>&nbsp..</td><td bgcolor="#F4F2EC"><a href="http://www.</td><td>&nbsp. ?></td></tr> <tr><td>&nbsp.gif">&nbsp.Варна Дипломна работа .</td></tr> <tr><td>&nbsp.</td> <td><?php echo "$_SESSION[newusr]".</td><td>&nbsp.</td></tr> <tr><td>&nbsp.</td></tr> <tr><td><?php echo "$_SESSION[userid]". $string = "$_POST[password1]".</td><td>&nbsp."$_SESSION[p3]".</td></tr> <tr><td><?php echo "$_SESSION[username]" ?>&nbsp.} ?></td></tr> <tr><td>&nbsp.</td></tr> <tr><td>&nbsp. $n++) { echo "*".</td><td>&nbsp. ?></td> </tr> </table> </td></tr> </table> </tr> </table> </div> </body> </html> Технически Университет ./images/logo1du.</td> <td valign="top" bgcolor="#F4F2EC">&nbsp.</td> <td width="" background=".com">Exit</a></td></tr> <tr><td>&nbsp. 79 Приложение members/update_acc.</td> <td><?php $_SESSION[newpwd] = "$_POST[password1]".</td> <td width="404" valign="bottom"> <table cellpadding="0" cellspacing="4" align="left"> <tr><td>&nbsp.</td> <td width="10" bgcolor="#67C6F6">&nbsp.