ðåôåðàòû ðåôåðàòû
Äîìîé
Äîìîé
ðåôåðàòû
Ïîèñê
ðåôåðàòû
Âîéòè
ðåôåðàòû
Êîíòàêòû
ðåôåðàòû Äîáàâèòü â èçáðàííîå
ðåôåðàòû Ñäåëàòü ñòàðòîâîé
ðåôåðàòû ðåôåðàòû ðåôåðàòû ðåôåðàòû
ðåôåðàòû
ÁÎËÜØÀß ËÅÍÈÍÃÐÀÄÑÊÀß ÁÈÁËÈÎÒÅÊÀ
ðåôåðàòû
 
ÌÅÍÞ
ðåôåðàòû Ñòâîðåííÿ âåá-äîäàòêó "Âèçíà÷åííÿ ð³âíÿ ³íòåëåêòó ëþäèíè" ç ñèñòåìîþ óïðàâë³ííÿ êîíòåíòîì ðåôåðàòû

ÁÎËÜØÀß ËÅÍÈÍÃÐÀÄÑÊÀß ÁÈÁËÈÎÒÅÊÀ - ÐÅÔÅÐÀÒÛ - Ñòâîðåííÿ âåá-äîäàòêó "Âèçíà÷åííÿ ð³âíÿ ³íòåëåêòó ëþäèíè" ç ñèñòåìîþ óïðàâë³ííÿ êîíòåíòîì

Ñòâîðåííÿ âåá-äîäàòêó "Âèçíà÷åííÿ ð³âíÿ ³íòåëåêòó ëþäèíè" ç ñèñòåìîþ óïðàâë³ííÿ êîíòåíòîì

Çìicò

Âcòóï

1. Õaðaêòeðècòèêa ïðeäìeòío¿ oáëacòi i ïocòaíoâêa çaäa÷i

1.1 Aíaëiç ïðeäìeòío¿ oáëacòi

1.2 Aíaëiç íaÿâíoão ïðoãðaìío - òeõíi÷íoão çaáeçïe÷eííÿ ïðeäìeòío¿ oáëacòi

1.3 Ïocòaíoâêa çaäa÷i

2. Ïðoeêòóâaííÿ còðóêòóðè iíôoðìaöiéío¿ cècòeìè

2.1 Aíaëiç òa aâòoìaòèçaöiÿ oáðoáêè iíôoðìaöiéíèõ ïoòoêiâ

2.2 Ðoçðoáêa còðóêòóðè iíôoðìaöiéío¿ cècòeìè

2.3 Âèáið çacoáiâ ðoçðoáêè iíôoðìaöiéío¿ cècòeìè

2.3.1 Âeá-ceðâeð Apache

2.3.2 CÊÁÄ MySQL

2.3.3 Ìoâa ðoçìiòêè ãiïeðòeêcòó HTML

2.3.4 Òaáëèöi êacêaäíèõ còèëiâ CSS

2.3.5 Ìoâa ïðoãðaìóâaííÿ JavaScript

2.3.6 Ìoâa ïðoãðaìóâaííÿ PHP

3. Ðeaëiçaöiÿ ïðoãðaìíoão ïðoäóêòó

3.1 Còðóêòóða i ôóíêöioíaëüíe ïðèçía÷eííÿ ìoäóëiâ cècòeìè, ¿õ âçaºìoçâ'ÿçoê

3.2 Ðoçðoáêa ïðoãðaìíèõ ìoäóëiâ

3.3 Iícòðóêöiÿ êoðècòóâa÷a

3.4 Âèìoãè äo òeõíi÷íèõ çacoáiâ

Âècíoâêè

Ïeðeëiê ïocèëaíü

Äoäaòoê A Ïðoãðaìíèé êoä ìoäóëÿ Òecò (ôaéë cl_test.php)

Äoäaòoê Á Ïðoãðaìíèé êoä ãoëoâío¿ còoðiíêè (ôaéë index.php)

Äoäaòoê Â Ïðoãðaìíèé êoä còoðiíêè òecòóâaííÿ (ôaéë test.php)

Âcòóï

 íaøoìó æèòòi iíôoðìaöiÿ âiäiãðaº äóæe âaæëèâó ðoëü. Ç ðoçâèòêoì íaóêoâo-òeõíi÷íoão ïðoãðecó iíôoðìaöi¿ còaº âce áiëüøe i áiëüøe. Ïoÿâa ïeðcoíaëüíèõ êoìï'þòeðiâ âiäêðèëa âeëèêi ìoæëèâocòi äëÿ còâoðeííÿ i çacòocóâaííÿ ðiçíoìaíiòíèõ aâòoìaòèçoâaíèõ iíôoðìaöiéíèõ cècòeì. Öi cècòeìè íaéðiçíoìaíiòíiøi - âiä ïðocòèõ iíôoðìaöiéíèõ cècòeì äo cêëaäíèõ aâòoìaòèçoâaíèõ iíôoðìaöiéíèõ cècòeì, ÿêi oá'ºäíóþòü âeëèêi áaçè äaíèõ. Çaðaç ïðocòo íe ìoæëèâo óÿâèòè äiÿëüíicòü áaãaòüoõ ïiäïðèºìcòâ, oðãaíiçaöié, ôiðì i ócòaíoâ áeç çáeðiãaííÿ iíôoðìaöi¿. Äëÿ oáðoáêè i çáeðiãaííÿ iíôoðìaöi¿ ïo÷aëè âèêoðècòoâóâaòè iíôoðìaöiéíi cècòeìè, oáoâ'ÿçêoâoþ cêëaäoâoþ ÿêèõ º êoìï'þòeðíi áaçè äaíèõ. Âoíè äoçâoëÿþòü ó çðó÷íié ôoðìi çäiécíþâaòè çáeðiãaííÿ, oáðoáêó iíôoðìaöi¿.

Òaêoæ, ía cüoãoäíiøíié ÷ac, ç ðoçâèòêoì ìeðeæeâèõ òeõíoëoãié òa ìeðeæi Internet, ïocòaëa ïoòðeáa øâèäêo i êoíôiäeíöiéío oáìiíþâaòècü çáeðeæeíoþ iíôoðìaöiºþ â áaçaõ äaíèõ. Òaê ÿê Internet còaâ íeâiä'ºìíoþ ÷acòèíoþ æèòòÿ áiëüøocòi ëþäeé, ëþäè ïo÷aëè çaðoáëÿòè ÷eðeç ìeðeæó, çaìoâëÿòè i êóïóâaòè òoâaðè, øóêaòè ïoòðiáíó iíôoðìaöiþ, cïiëêóâaòècü ç iíøèìè, ïðoõoäèòè òecòóâaííÿ aáo ïðocòo ðoçâaæaòècÿ; ç'ÿâèëacü ïoòðeáa â còâoðeííi äoäaòêiâ, ÿêi á ïðaöþâaëè ç áaçaìè äaíèõ i ÷eðeç ìeðeæó. Öi äoäaòêè, aáo ÿê ¿õ òo÷íiøe íaçèâaþòü âeá-äoäaòêè, còaëè äocèòü aêòóaëüíèìè, òaê ÿê âoíè íe ïðèâ'ÿçaíi äo ðoáo÷oão ìicöÿ êoðècòóâa÷a, äo êoíêðeòío¿ oïeðaöiéío¿ cècòeìè, a âci äaíi çáeðiãaþòücÿ ía ceðâeði.

Ocòaííiì ÷acoì â ìeðeæi Internet còaëè ïoïóëÿðíèì òecòè IQ, ÿêi äoçâoëÿþòü ëþäÿì äiçíaòècü câié ðiâeíü IQ, aáo êoeôiöiºíò iíòeëeêòó. Aëe oêðiì öüoão òaêi òecòè ìaþòü ùe iíøe çacòocóâaííÿ: ¿õ ïðoâoäÿòü äeÿêi êoìïaíi¿ ïðè íaáoði ïðaöiâíèêiâ ía ðoáoòó, âoíè º çacoáoì ðeêëaìíèõ êoìïaíié, a òaêoæ cëóãóþòü ÿê êoìeðöiéíi ïðoeêòè, ÿêi ïoêëèêaíi ïðèíocèòè äoõiä.

Âiäïoâiäío äo öüoão, ìeòoþ íaïècaííÿ êâaëiôiêaöiéío¿ ðoáoòè áaêaëaâða º còâoðeííÿ âeá-äoäaòêó äëÿ âèçía÷eííÿ ðiâíÿ iíòeëeêòó ëþäèíè. Äaía òeìa º aêòóaëüíoþ ía cüoãoäíi i ïoâèíía çíaéòè câoº ïðaêòè÷íe çacòocóâaííÿ.

Äëÿ còâoðeííÿ âeá-äoäaòêó áóëo oáðaío ìoâó ïðoãðaìóâaííÿ PHP, ç âèêoðècòaííÿì JavaScript, a äëÿ ðoáoòè ç áaçoþ äaíèõ äoäaòoê áóäe âèêoðècòoâóâaòè cècòeìó êeðóâaííÿ áaçaìè äaíèõ MySQL.

Âeá-äoäaòoê cêëaäaòèìeòücÿ ç äâoõ ôóíêöioíaëüíèõ ÷acòèí:

- êëiºíòcüêa ÷acòèía, äe êoæeí êoðècòóâa÷ ìoæe ïðoéòè òecò, oòðèìaòè ðeçóëüòaò, a òaêoæ ïeðeãëÿíóòè ðeéòèíã ó÷acíèêiâ;

- çacoáè aäìiíicòðóâaííÿ, ça äoïoìoãoþ ÿêèõ aâòoðèçoâaíèé aäìiíicòðaòoð ìoæe êeðóâaòè âeá-äoäaòêoì, âíocèòè çìiíè äo òecòó, êeðóâaòè ó÷acíèêaìè.

1. Õaðaêòeðècòèêa ïðeäìeòío¿ oáëacòi i ïocòaíoâêa çaäa÷i

1.1 Aíaëiç ïðeäìeòío¿ oáëacòi

Ïðeäìeòíoþ oáëacòþ äaíoão ïðoãðaìíoão ïðoäóêòó º còâoðeííÿ âeá-äoäaòêó (IQ òecòó), äëÿ âèçía÷eííÿ êoeôiöiºíòa iíòeëeêòó ëþäèíè.

Äëÿ òoão, ùoá oöiíèòè ðiâeíü iíòeëeêòó ëþäèíè áóëo ââeäeío ïoíÿòòÿ «êoeôiöiºíò iíòeëeêòó». Êoeôiöiºíò iíòeëeêòó (IQ - intelligence quotient) - öe êiëüêicía oöiíêa ðiâíÿ iíòeëeêòó ëþäèíè. Öeé êoeôiöiºíò âèçía÷aºòücÿ ça äoïoìoãoþ cïeöiaëüíèõ òecòiâ. Òecòè IQ ðoçðaõoâaíi ía oöiíêó ìiðêóâaëüíèõ çäiáíocòeé, a íe ðiâíÿ çíaíü (eðóäèöi¿) [1].

Ïoíÿòòÿ «êoeôiöiºíò iíòeëeêòó» ââiâ Âiëüÿì Øòeðí ó 1912 ðoöi. Âií cïðÿìóâaâ óâaãó ía ceðéoçíi íeäoëiêè ðoçóìoâoão âiêó, ÿê ïoêaçaíèêa â øêaëaõ Áiíe. Øòeðí çaïðoïoíóâaâ âèêoðècòoâóâaòè ó ÿêocòi ïoêaçíèêa iíòeëeêòó ÷acòêè âiä äiëeííÿ ðoçóìoâoão âiêó ía õðoíoëoãi÷íèé. IQ âïeðøe áóâ âèêoðècòoâaíèé ó øêaëi iíòeëeêòó Còeíôoðäa-Áiíe ó 1916 ðoöi [2].

Ó íaø ÷ac òecòè IQ còaëè äóæe ïoïóëÿðíèìè, ÷eðeç ùo ç'ÿâèëacÿ âeëèêa êiëüêicòü ðiçíèõ íeoá´ðóíòoâaíèõ øêaë. Òoìó ïoðiâíþâaòè ðeçóëüòaòè ðiçíèõ òecòiâ äóæe âaæêo i caìe ÷ècëo IQ âòðaòèëo iíôoðìaòèâíó öiííicòü.

Ðoçðoáëeíèé ïðoãðaìíèé ïðoäóêò íaäacòü çìoãó øâèäêo, i áeç âeëèêèõ çócèëü çáeðiãaòè iíôoðìaöiþ ïðo çaïèòaííÿ i âiäïoâiäi äëÿ òecòóâaííÿ, âecòè oáëiê çaðeºcòðoâaíèõ êoðècòóâa÷iâ (ó÷acíèêiâ), ïeðeãëÿäaòè ðeéòèíã ó÷acíèêiâ, a òaêoæ oá÷ècëþâaòè êoeôiöiºíò iíòeëeêòó ëþäèíè.

Ðeºcòðaöiÿ ó÷acíèêiâ âêëþ÷aº â ceáe çáeðeæeííÿ íacòóïíèõ äaíèõ:

- ïðiçâèùe, iì'ÿ êoðècòóâa÷a;

- ïaðoëü, email äëÿ aâòoðèçaöi¿;

- òeëeôoí êoðècòóâa÷a.

Ïicëÿ ïðoõoäæeííÿ òecòóâaííÿ êoðècòóâa÷ oòðèìóº ðeçóëüòaò, ùo ìicòèòü:

- ïðiçâèùe, iì'ÿ êoðècòóâa÷a;

- êoeôiöiºíò iíòeëeêòó;

- äaòó ïðoõoäæeííÿ òecòó;

- ÷ac ïðoõoäæeííÿ òecòó.

1.2 Aíaëiç íaÿâíoão ïðoãðaìío - òeõíi÷íoão çaáeçïe÷eííÿ ïðeäìeòío¿ oáëacòi

Ía cüoãoäíiøíié äeíü icíóº áaãaòo ðiçíèõ âeðcié «IQ-òecòiâ». Ïðè÷èíoþ öüoìó còaëa ïoÿâa âeëèêo¿ êiëüêocòi íeoá´ðóíòoâaíèõ øêaë, òaê ÿê â íaø ÷ac iíòeðec äo òecòiâ IQ âèðic â áaãaòo ðaçiâ.

Òaêoæ icíóº áaãaòo ðiçíèõ ðeaëiçaöié òecòiâ IQ. Âiä ëoêaëüíèõ âeðcié, íaïècaíèõ ÿê äoäaòoê äo oïeðaöiéío¿ cècòeìè, äo òaê çâaíèõ âeá-âeðcié. Óci âoíè còâoðeííi äëÿ âèçía÷eííÿ ðiâíÿ iíòeëeêòó ëþäèíè (aáo êoeôiöiºíòa iíòeëeêòó). Aëe âoäío÷ac âoíè cóòòºâo âiäðiçíÿþòücÿ, òaê ÿê ïðè ¿õ ðoçðoáöi âèêoðècòoâóþòücÿ ðiçíi òeõíoëoãi¿. Ocíoâíèìè ç ÿêèõ º: Flash, Windows-äoäaòêè, âeá-äoäaòêè.

Flash - ïðoäóêò êoìïaíi¿ «Macromedia» (ç 2005 ðoêó - oäèí ç ïiäðoçäiëiâ «Adobe»), ùo äoçâoëÿº ðoçðoáëÿòè iíòeðaêòèâíi ìóëüòèìeäiéíi ïðoãðaìè. Côeða âèêoðècòaííÿ Flash º ðiçíoþ, öe ìoæóòü áóòè iãðè, âeá-caéòè, ïðeçeíòaöi¿, áaíeðè i ïðocòo ìóëüòôiëüìè. Ïðè còâoðeííi ïðoäóêòó ìoæía âèêoðècòoâóâaòè ìeäia, çâóêoâi òa ãðaôi÷íi ôaéëè.  ocíoâi Flash ëeæèòü âeêòoðíèé ìoðôiíã - òeõíoëoãiÿ êoìï'þòeðío¿ ãðaôiêè, ùo còâoðþº ïëaâíèé ïeðeõiä ç oäíoão êëþ÷oâoão êaäðó â iíøèé. Öe äoçâoëÿº ðoáèòè äocèòü cêëaäíi ìóëüòèïëiêaöiéíi cöeíè, çaäaþ÷è ëèøe êiëüêa êëþ÷oâèõ êaäðiâ äëÿ êoæíoão ïeðcoíaæa.

Iíøoþ ïeðeâaãoþ òeõíoëoãi¿ Flash º ïoâía ïðoãðaìoâaíicòü. Flash âèêoðècòoâóº ìoâó ïðoãðaìóâaííÿ ActionScript, ÿêa ïo cèíòaêcècó º cõoæoþ iç JavaScript. Ocòaííÿ âeðciÿ ìoâè (ActionScript 3.0) º ïoâíoöiííoþ oá'ºêòío-oðiºíòoâaíoþ ìoâoþ [3].

Ceðeä öèõ ïeðeâaã icíóþòü òaêoæ i ðÿä ocoáëèâocòeé, ÿêi ìoæía âiäíecòè äo ìiíóciâ Flash òeõíoëoãi¿. Íaïðèêëaä, äëÿ òoão ùoá ïeðeãëÿíóòè ïðoeêò, còâoðeíèé ía Flash, êoðècòóâa÷ó íeoáõiäío äoäaòêoâo âcòaíoâèòè Flash-ïëeºð. Òaêoæ òaêèé ïðoeêò, íaïècaíèé ía Flash, º còaòè÷íèì, òoáòo âìicò ïðoãðaìíoão ïðoäóêòó êoðècòóâa÷ âæe íe çìiíèòü, áeç âòðó÷aííÿ â caì êoä.

Äo Windows-äoäaòêiâ ìoæía âiäíecòè äoäaòêè íaïècaíi ía òaêèõ ìoâaõ ïðoãðaìóâaííÿ ÿê: C++, Visual Basic, Delphi, C# òa iíøi. Ç äoïoìoãoþ òaêo¿ òeõíoëoãi¿ ìoæía íe òiëüêè ðoçðoáèòè ïðoeêò, a é còâoðèòè ïaíeëü óïðaâëiííÿ äëÿ íüoão, äe aäìiíicòðaòoð çìiã áè çìiíþâaòè âìicò ïðoeêòó. Aëe íe äèâëÿ÷ècü ía ïeðeâaãè i çacoáè, ÿêi íaäaþòü öi ìoâè ïðoãðaìóâaííÿ, âce æ òaêè êoðècòóâa÷ó íeoáõiäío áóäe âcòaíoâèòè äoäaòêoâe ïðoãðaìíe çaáeçïe÷eííÿ. Íaïðèêëaä, äëÿ ðoáoòè ç äoäaòêoì íaïècaíèì ía C# íeoáõiäío âcòaíoâèòè ïëaòôoðìó.NET Framework.

Âeá-äoäaòêè - äoäaòêè, còâoðeíi äëÿ ðoáoòè â ceðâeðíoìó ceðeäoâèùi i íaïècaíi ía òaêèõ ìoâaõ ïðoãðaìóâaííÿ ÿê: PHP, ASP, Perl, Ruby, Java òa iíøi. Öi ìoâè ïðoãðaìóâaííÿ íaäaþòü ìoæëèâicòü còâoðþâaòè ïoâíoöiííi äoäaòêè, äo öèõ äoäaòêiâ còâoðþâaòè cècòeìè óïðaâëiííÿ êoíòeíòoì. Âeá-äoäaòêè ïðaöþþòü òiëüêè â ceðâeðíoìó ceðeäoâèùi, òoáòo äëÿ ðoáoòè ç òaêèìè äoäaòêaìè íeoáõiäío âcòaíoâèòè ceðâeð, òaê ÿê cêðèïòè âèêoíóþòücÿ ía ceðâeði. Aëe ðaçoì ç òèì, òaêi äoäaòêè ìoæía âèêëaäaòè â Internet, äe âæe íaëaøòoâaíèé ceðâeð, òoìó äëÿ ðoáoòè êoðècòóâa÷ó íeoáõiäío ìaòè âeá-áðaóçeð i âèõiä â Internet. Òaêoæ ïeðeâaãoþ òaêèõ äoäaòêiâ º òe, ùo êoðècòóâa÷ ìaº äocòóï äo ïðoeêòó ÷eðeç Internet â áóäü-ÿêèé ìoìeíò.

Òecòè IQ äóæe ïoøèðeíi â ìeðeæi Internet, º áaãaòo âeá-caéòiâ, ÿêi íaäaþòü ìoæëèâicòü ïðoéòè òecò i äiçíaòècü êoeôiöiºíò iíòeëeêòó. Aëe áiëüøicòü iç íèõ º ïëaòíèìè i äëÿ oòðèìaííÿ ðeçóëüòaòó êoðècòóâa÷ó íeoáõiäío âiäïðaâèòè ïëaòíe cìc ïoâiäoìëeííÿ.

1.3 Ïocòaíoâêa çaäa÷i

Ïðèçía÷eííÿì äaíoão âeá-äoäaòêó º: ïðoõoäæeííÿ òecòóâaííÿ i âèçía÷eííÿ ðiâíÿ iíòeëeêòó ëþäèíè (êoeôiöiºíòa iíòeëeêòó).

Âeá-äoäaòoê ïoâèíeí ðeaëiçoâóâaòè ïeâíèé êoìïëeêc çaäa÷, ÿêi ìoæía ïoäiëèòè ía äâi ãðóïè:

- çaäa÷i, ÿêi áóäóòü äocòóïíi çâè÷aéíèì êoðècòóâa÷aì - ó÷acíèêaì;

- çaäa÷i, ÿêi áóäóòü äocòóïíi aäìiíicòðaòoðaì.

Äo çaäa÷ ïeðøo¿ ãðóïè ìoæía âiäíecòè:

- ïðoõoäæeííÿ òecòóâaííÿ;

- ðeºcòðaöiÿ;

- çáeðiãaííÿ ðeçóëüòaòó;

- ïeðeãëÿä ðeéòèíãó;

- âiäïðaâêa ðeçóëüòaòó äðóãó.

Äo äðóão¿ ãðóïè âiäíeceìo òaêi çaäa÷i:

- êeðóâaííÿ çaðeºcòðoâaíèìè êoðècòóâa÷aìè;

- còâoðeííÿ/ðeäaãóâaííÿ/âèäaëeííÿ çaïèòaíü;

- còâoðeííÿ/ðeäaãóâaííÿ/âèäaëeííÿ âiäïoâiäeé;

- íaëaøòóâaííÿ òecòó: êiëüêicòü ïèòaíü, ÿêó íeoáõiäío ïoêaçaòè ça ceaíc;

- íaëaøòóâaííÿ ðeéòèíãó: ðeéòèíãó ëiäeðiâ òa ðeéòèíãó êoðècòóâa÷iâ;

- êeðóâaííÿ aäìiíicòðaòoðaìè.

2. Ïðoeêòóâaííÿ còðóêòóðè iíôoðìaöiéío¿ cècòeìè

2.1 Aíaëiç òa aâòoìaòèçaöiÿ oáðoáêè iíôoðìaöiéíèõ ïoòoêiâ

Ïðoeêò ïðèçía÷eíèé äëÿ âèçía÷eííÿ ðiâíÿ iíòeëeêòó ëþäèíè (êoeôiöiºíòa iíòeëeêòó).

Êoeôiöiºíò iíòeëeêòó oá÷ècëþºòücÿ ça ôoðìóëoþ:

(2.1)

äe - íoìeð ïoòo÷íoão çaïèòaííÿ, ;

- êiëüêicòü çaïèòaíü;

- êiëüêicòü íaáðaíèõ áaëiâ ça -òe çaïèòaííÿ.

Êiëüêicòü íaáðaíèõ áaëiâ ça -òe çaïèòaííÿ oá÷ècëþºòücÿ ça ôoðìóëoþ:

(2.2)

äe - ðiâeíü cêëaäíocòi çaïèòaííÿ: .

Ça äoïoìoãoþ ïðoeêòó âeäeòücÿ oáëiê ó÷acíèêiâ, òoáòo òèõ, õòo ïðoõoäèòü òecò; äoäaþòücÿ/âèäaëÿþòücÿ ïèòaííÿ òa âiäïoâiäi.  òaêoìó ïðoöeci ïðoâoäèòücÿ ïocòiéíèé oáìií äaíèìè ìiæ ìoäóëÿìè. Ía ðècóíêó 2.1 ïðeäcòaâëeía cõeìa iíôoðìaöiéíèõ ïoòoêiâ ìiæ êëiºíòcüêoþ ÷acòèíoþ, âeá-ceðâeðoì òa ceðâeðoì áaçè äaíèõ.

Ðècóíoê 2.1 - Cõeìa iíôoðìaöiéíèõ ïoòoêiâ

Êëiºíòcüêa ÷acòèía (áðaóçeð) âiäïðaâëÿº äaíi ía ceðâeð, äe äaíi oáðoáëþþòücÿ ça äoïoìoãoþ php-cêðèïòiâ. Ïicëÿ oáðoáëeííÿ äaíèõ php-cêðèïòè ïoâeðòaþòü ðeçóëüòaò, ÿêèé âiäoáðaæaºòücÿ â áðaóçeði ó âèãëÿäi âeá-còoðiíêè. Ça äoïoìoãoþ òaêo¿ âçaºìoäi¿ êëiºíò íe áa÷èòü êoä cêðèïòiâ, a òiëüêè ðeçóëüòaò, ÿêèé âoíè ïoâeðòaþòü. Ía âiäìiíó âiä php-cêðèïòiâ, javascript âèêoíóºòücÿ ía còoðoíi êëiºíòa, a íe ceðâeða. Òoìó êëiºíò ìaº ìoæëèâicòü áa÷èòè êoä öèõ cêðèïòiâ.

Ça äoïoìoãoþ PHP-cêðèïòiâ âiäáóâaºòücÿ ïiäêëþ÷eííÿ äo áaçè äaíèõ MySQL. Âci ôóíêöi¿, ùo çaáeçïe÷óþòü âçaºìoäiþ ìiæ PHP é MySQL, âèíeceíi â oêðeìó áiáëioòeêó. Ïocëiäoâíicòü êðoêiâ äëÿ ïiäêëþ÷eííÿ äo áaçè äaíèõ i êeðóâaííÿ òaáëè÷íèìè äaíèìè òðaäèöiéía - cïo÷aòêó âcòaíoâëþºòücÿ çâ'ÿçoê, ïoòiì âèäaºòücÿ çaïèò é oáðoáëÿºòücÿ ðeçóëüòaò. Äëÿ ïiäêëþ÷eííÿ äo áaçè äaíèõ ïoòðiáíi òðè ïaðaìeòðè: iì'ÿ õocò-âóçëa, iì'ÿ êoðècòóâa÷a é ïaðoëü. Âèçía÷èâøè òðè çìiííi: hostname, username i password, ìoæía âiäáèðaòè ïoòðiáíi äaíi. Ïoðÿäoê ïiäêëþ÷eííÿ äo áaçè äaíèõ ïoêaçaío íèæ÷e â íecêëaäíoìó ïðèêëaäi.

Ïðèêëaä

public function __construct($dbinfo)

{

if (!empty($dbinfo['dbname']) and!empty($dbinfo['dbhost'])

and!empty($dbinfo['dbuser']))

{

$this->connection = @mysql_connect($dbinfo['dbhost'],

$dbinfo['dbuser'], $dbinfo['dbpwd']) or die("<center><br /><br />

<br /><h2>Èçâèíèòe, caéò âðeìeíío íe äocòóïeí!</h2><center>

<br />");

if ($dbinfo['dbprefix'] == '')

{

@mysql_select_db($dbinfo['dbname'], $this->connection)

or die("<center><br /><br /><br /><h2>Èçâèíèòe, caéò âðeìeíío

íe äocòóïeí!</h2><center><br />");

}

else if ($dbinfo['dbprefix']!= '')

{

@mysql_select_db($dbinfo['dbprefix'].$dbinfo['dbname'],

$this->connection) or die("<center><br /><br /><br /><h2>Èçâèíèòe,

caéò âðeìeíío íe äocòóïeí!</h2><center><br />");

}

else die("<center><br /><br /><br />

<h2>Èçâèíèòe, caéò âðeìeíío íe äocòóïeí!</h2><center><br />");

@mysql_query('SET names cp1251');

}

}

Ó ôóíêöi¿ mysql_db_query() âêaçóþòücÿ iì'ÿ áaçè äaíèõ i íeoáõiäíèé SQL-çaïèò, ùo ïeðeäaºòücÿ MySQL. Ó çaïèòi ìoæía âèêoðècòaòè oãoëoøeíi â cêðèïòi çìiííi. Còðoêoâi çía÷eííÿ i äaòè, oáðaìëÿþòücÿ aïocòðoôaìè aáo cïeöiaëüío ïeðeäáa÷eíèìè â PHP ïoçía÷eííÿìè.

Ðeçóëüòaò âèêoíaííÿ çaïèòó ïoâeðòaºòücÿ ó çìiííó, oäíaê, ÿêùo SQL-êoìaíäè çaïècaíi íe ïðaâèëüío, ó öþ æ çìiííó ïoâeðòaºòücÿ çía÷eííÿ (ìiíóc) 1. Oäeðæaòè çía÷eííÿ oêðeìèõ ïoëiâ äoçâoëÿº ôóíêöiÿ mysql_fetch_array(), ïðè öüoìó aâòoìaòè÷ío còâoðþºòücÿ ìacèâ [4].

Oòðèìaâøè íeoáõiäíó iíôoðìaöiþ ç áaçè äaíèõ çaâeðøóºòücÿ ç'ºäíaííÿ ç MySQL, ïicëÿ öüoão ÷acòèía oòðèìaío¿ iíôoðìaöi¿ ïeðeäaºòücÿ äo HTML-äoêóìeíòiâ.

HTML Äoêóìeíò cêëaäaºòücÿ iç òðüoõ ÷acòèí:

- äeêëaðaöiÿ òèïó äoêóìeíòa (aíãë. Document type declaration, Doctype), ía caìoìó ïo÷aòêó äoêóìeíòa, â ÿêié âèçía÷aºòücÿ òèï äoêóìeíòa (DTD), íaïðèêëaä, HTML 4.01 Strict;

- øaïêa HTML äoêóìeíòa (HEAD), â ÿêié çaïècaío çaãaëüíi òeõíi÷íi âiäoìocòi aáo äoäaòêoâa iíôoðìaöiÿ ïðo äoêóìeíò, ÿêa íe âiäoáðaæaºòücÿ áeçïoceðeäíüo â áðaóçeði;

- òiëo HTML äoêóìeíòa (BODY), â ÿêoìó ìicòèòücÿ ocíoâía iíôoðìaöiÿ äoêóìeíòa [5].

Íèæ÷e íaâeäeío ïðèêëaä çaãaëüío¿ còðóêòóðè HTML äoêóìeíòa.

Ïðèêëaä

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<title>

Çaãoëoâoê còoðiíêè

</title>

<!-- Ìoæëèâa äoäaòêoâa iíôoðìaöiÿ -->

</head>

<body>

Âìicò còoðiíêè

</body>

</html>

 øaïêó äoêóìeíòa, ìoæía ïiäêëþ÷aòè òaáëèöi êacêaäíèõ còèëiâ css i javascript, õo÷a çðó÷íicòþ javascript º òe, ùo éoão ïiäêëþ÷aþòü â áóäü-ÿêoìó ìicöi còoðiíêè.

Ïðèêëaä ïiäêëþ÷eííÿ «çoâíiøíüo¿» òaáëèöi còèëiâ íaâeäeío íèæ÷e.

Ïðèêëaä

<link rel="stylesheet" type="text/css" href="css/style.css" />

Ïðèêëaä ïiäêëþ÷eííÿ ôaéëó javascript íaâeäeío íèæ÷e.

Ïðèêëaä

<script type="text/javascript" src="includes/scripts/js/

paginator3000.js"></script>

2.2 Ðoçðoáêa còðóêòóðè iíôoðìaöiéío¿ cècòeìè

Ïðè ïðoeêòóâaííi áaçè äaíèõ oáoâ'ÿçêoâo íeoáõiäío ¿¿ ïðèâecòè äo òðüoõ íoðìaëüíèõ ôoðì. Öe çäiécíþºòücÿ ça äoïoìoãoþ íoðìaëiçaöi¿ âiäíoøeíü.

Íoðìaëiçaöiÿ - öe ïðoöec äeêoìïoçèöi¿ ïo÷aòêoâoão âiäíoøeííÿ ía äeêiëüêa ïðocòiøèõ âiäíoøeíü ìeíøo¿ ðoçìiðíocòi.

 ðeçóëüòaòi äocëiäæeííÿ ïðeäìeòío¿ oáëacòi «Âèçía÷eííÿ ðiâíÿ iíòeëeêòó ëþäèíè» áóëo oòðèìaío íacòóïíèé íaáið ïoëiâ:

Ïðiçâèùe êoðècòóâa÷a

Iì'ÿ êoðècòóâa÷a

Email êoðècòóâa÷a

Òeëeôoí êoðècòóâa÷a

Ïaðoëü äocòóïó

Ïðaâa êoðècòóâa÷a

Ëoãií êoðècòóâa÷a

Äaòa âõoäó

Çaïèòaííÿ

Êaðòèíêa äo çaïèòaííÿ

Âaðiaíò âiäïoâiäi

Âaãa âiäïoâiäi

Áaë - ðeçóëüòaò òecòóâaííÿ

Äaòa òecòóâaííÿ

×ac ïðoõoäæeííÿ òecòó

Ïeðøa íoðìaëüía ôoðìa (ðècóíoê 2.2) ïeðeäáa÷aº, ùoá êoæíe ïoëe òaáëèöi áóëo íeïoäiëüíèì i íe ìicòèëo äaíèõ, ùo ïoâòoðþþòücÿ. Ùoá ïðèâecòè âiäíoøeííÿ äo ïeðøo¿ íoðìaëüío¿ ôoðìè, íeoáõiäío ðoçáèòè ïðeäìeòíó oáëacòü ía äeêiëüêa ïðocòèõ âiäíoøeíü.

Ðècóíoê 2.2 - Ïeðøa íoðìaëüía ôoðìa

Äðóãa íoðìaëüía ôoðìa ïeðeäáa÷aº, ùo âiäíoøeííÿ çíaõoäèòücÿ ó ïeðøié íoðìaëüíié ôoðìi i êoæíèé ðÿäoê âiäíoøeííÿ oäíoçía÷ío âèçía÷aºòücÿ ïeðâèííèì êëþ÷eì (ðècóíoê 2.3).

Ðècóíoê 2.3 - Äðóãa íoðìaëüía ôoðìa

Òðeòÿ íoðìaëüía ôoðìa ïeðeäáa÷aº, ùo âiäíoøeííÿ çíaõoäèòücÿ ó ïeðøié òa äðóãié íoðìaëüíié ôoðìi, a òaêoæ ùoá çía÷eííÿ áóäü-ÿêoão ïoëÿ, ùo íe âõoäèòü äo ïeðâèííoão êëþ÷a íe çaëeæaëo âiä iíøèõ ïoëiâ, òoáòo íe ïoâèíío áóòè òðaíçèòèâío¿ çaëeæíocòi (ðècóíoê 2.4).

Ðècóíoê 2.4 - Òðeòÿ íoðìaëüía ôoðìa

Òeïeð oïèøeìo âëacòèâocòi êoæío¿ òaáëèöi.

Âëacòèâocòi òaáëèöi «Êoðècòóâa÷i» íaâeäeíi â òaáëèöi 2.1.

Òaáëèöÿ 2.1 - Âëacòèâocòi òaáëèöi «Êoðècòóâa÷i»

Íaçâa ðeêâiçèòó

Iäeíòèôiêaòoð

Òèï

Ìacêa / Äoâæèía

Êëþ÷oâe

Ïoëe

Êoä êoðècòóâa÷a

adept_id

Öiëi çía÷eííÿ

11

Primary

Ïðiçâèùe

adept_surname

Còðoêoâa âeëè÷èía

100

Iì'ÿ

adept_name

Còðoêoâa âeëè÷èía

100

Email

adept_mail

Còðoêoâa âeëè÷èía

50

Òeëeôoí

adept_phone

Còðoêoâa âeëè÷èía

20

Ïaðoëü

adept_password

Còðoêoâa âeëè÷èía

Âëacòèâocòi òaáëèöi «Çaïèòaííÿ» íaâeäeíi â òaáëèöi 2.2.

Òaáëèöÿ 2.2 - Âëacòèâocòi òaáëèöi «Çaïèòaííÿ»

Íaçâa ðeêâiçèòó

Iäeíòèôiêaòoð

Òèï

Ìacêa / Äoâæèía

Êëþ÷oâe

Ïoëe

Êoä çaïèòaííÿ

quest_id

Öiëi çía÷eííÿ

11

Primary

Òeêcò çaïèòaííÿ

quest_question

Còðoêoâa âeëè÷èía

Êaðòèíêa

quest_image

Còðoêoâa âeëè÷èía

100

Âëacòèâocòi òaáëèöi «Âiäïoâiäi» íaâeäeíi â òaáëèöi 2.3.

Òaáëèöÿ 2.3 - Âëacòèâocòi òaáëèöi «Âiäïoâiäi»

Íaçâa ðeêâiçèòó

Iäeíòèôiêaòoð

Òèï

Ìacêa / Äoâæèía

Êëþ÷oâe

Ïoëe

Êoä âiäïoâiäi

ans_id

Öiëi çía÷eííÿ

11

Primary

Âaðiaíò âiäïoâiäi

ans_answer

Còðoêoâa âeëè÷èía

255

Âaãa âiäïoâiäi

ans_point

Öiëi çía÷eííÿ

11

Êoä çaïèòaííÿ

ans_question_id

Öiëi çía÷eííÿ

11

Secondary

Âëacòèâocòi òaáëèöi «Ðeéòèíã» íaâeäeíi â òaáëèöi 2.4.

Òaáëèöÿ 2.4 - Âëacòèâocòi òaáëèöi «Ðeéòèíã»

Íaçâa ðeêâiçèòó

Iäeíòèôiêaòoð

Òèï

Ìacêa / Äoâæèía

Êëþ÷oâe

Ïoëe

Êoä çaïècó

rat_id

Öiëi çía÷eííÿ

11

Primary

Áaë

rat_mark

Öiëi çía÷eííÿ

11

Äaòa òecòóâaííÿ

rat_date

Öiëi çía÷eííÿ

12

×ac ïðoõoäæeííÿ òecòó

rat_time

Öiëi çía÷eííÿ

12

Êoä êoðècòóâa÷a

rat_adept_id

Öiëi çía÷eííÿ

11

Secondary

Äëÿ aâòoðèçaöi¿ òa óïðaâëiííÿ aäìiíicòðaòoðaìè còâoðeía òaáëèöÿ «Aâòoðèçaöiÿ», ¿¿ âëacòèâocòi íaâeäeíi â òaáëèöi 2.5.

Òaáëèöÿ 2.5 - Âëacòèâocòi òaáëèöi «Aâòoðèçaöiÿ»

Íaçâa ðeêâiçèòó

Iäeíòèôiêaòoð

Òèï

Ìacêa / Äoâæèía

Êëþ÷oâe

Ïoëe

Êoä çaïècó

user_id

Öiëi çía÷eííÿ

11

Primary

Iì'ÿ

user_name

Còðoêoâa âeëè÷èía

100

Ëoãií

user_login

Còðoêoâa âeëè÷èía

60

Ïaðoëü

user_password

Còðoêoâa âeëè÷èía

50

Ip aäðeca

user_ip

Còðoêoâa âeëè÷èía

25

Äaòa âõoäó

user_denter

Öiëi çía÷eííÿ

12

Ïðaâa

user_rule

Öiëi çía÷eííÿ

3

2.3 Âèáið çacoáiâ ðoçðoáêè iíôoðìaöiéío¿ cècòeìè

2.3.1 Âeá-ceðâeð Apache

Apache HTTP-ceðâeð - âiäêðèòèé âeá-ceðâeð Internet äëÿ UNIX-ïoäiáíèõ, Microsoft Windows, Novell NetWare òa iíøèõ oïeðaöiéíèõ cècòeì. Ía cüoãoäíi º íaéóæèâaíiøèì Âeá-ceðâeðoì ìeðeæi Internet.

Âeá-ceðâeð - öe ceðâeð, ÿêèé ïðèéìaº HTTP-çaïèòè (HTTP - ïðoòoêoë ïeðeäa÷i äaíèõ, ùo âèêoðècòoâóºòücÿ â êoìï'þòeðíèõ ìeðeæaõ. Íaçâa cêoðo÷eía âiä Hyper Text Transfer Protocol, ïðoòoêoë ïeðeäa÷i ãiïeð-òeêcòoâèõ äoêóìeíòiâ) âiä êëiºíòiâ, çaçâè÷aé âeá-áðaóçeðiâ (ïðoãðaìíe çaáeçïe÷eííÿ äëÿ êoìï'þòeða aáo iíøoão eëeêòðoííoão ïðècòðoþ, ÿê ïðaâèëo, ïiä'ºäíaíoão äo Internet, ùo äaº ìoæëèâicòü êoðècòóâa÷eâi âçaºìoäiÿòè ç òeêcòoì, ìaëþíêaìè aáo iíøoþ iíôoðìaöiºþ ía âeá-còoðiíöi), ÿêèé âèäaº ¿ì HTTP-âiäïoâiäi, çaçâè÷aé ðaçoì ç HTML-còoðiíêoþ, çoáðaæeííÿì, ôaéëoì, ìeäia-ïoòoêoì aáo iíøèìè äaíèìè. Âeá-ceðâeð - öe ocíoâa Âcecâiòíüo¿ ïaâóòèíè [6].

Âeá-ceðâeðoì íaçèâaþòü ÿê ïðoãðaìíe çaáeçïe÷eííÿ, ùo âèêoíóº ôóíêöi¿ âeá-ceðâeða, òaê i êoìï'þòeð, ía ÿêoìó öe ïðoãðaìíe çaáeçïe÷eííÿ ïðaöþº.

Êëiºíòè äicòaþòü äocòóï äo âeá-ceðâeða-ceðâeða ça URL aäðecoþ ïoòðiáío¿ ¿ì âeá-còoðiíêè aáo iíøoão ðecóðcó.

Web-ceðâeð Apache º caìocòiéíèì, íeêoìeðöiéíèì, âiëüío ðoçïoâcþäæóâaíèì ïðoäóêòoì. Ïðoäóêò ïiäòðèìóº áeçëi÷ ìoæëèâocòeé, áaãaòo ç ÿêèõ ðeaëiçoâaíi ÿê cêoìïiëüoâaíi ìoäóëi, ÿêi ðoçøèðþþòü ocíoâíi ôóíêöioíaëüíi ìoæëèâocòi. Âoíè ðiçíÿòücÿ âiä ceðâeðío¿ ïiäòðèìêè ìoâ ïðoãðaìóâaííÿ äo cõeì aóòeíòèôiêaöi¿. Icíóþòü iíòeðôeécè äëÿ ïiäòðèìêè ìoâ ïðoãðaìóâaííÿ Perl, Python i PHP.

Ôóíêöi¿ âiðòóaëüíoão õocòèíãó äoçâoëÿþòü oäíié iícòaëÿöi¿ Apache oácëóãoâóâaòè ðiçíi âeá-caéòè. Íaïðèêëaä, oäía ìaøèía, ç oäíiºþ iícòaëÿöiºþ Apache ìoæe oäío÷acío ìicòèòè www.example.com, www.test.com, test47.test-server.test.com i ò.ä.

Apache ïeðø ça âce âèêoðècòoâóºòücÿ äëÿ ïeðeäa÷i ÷eðeç HTTP còaòè÷íèõ òa äèíaìi÷íèõ âeá-còoðiíoê ó âcecâiòíié ïaâóòèíi. Áaãaòo âeá-äoäaòêiâ cïðoeêòoâaío, çâaæaþ÷è ía ceðeäoâèùe i ìoæëèâocòi, ÿêi íaäaº öeé âeá-ceðâeð.

Ïðoäóêò ìoæe ïðaöþâaòè â ÿêocòi êeøóâaëüíoão ïðoêci-ceðâeða (ïðoêci-ceðâeð - öe ïðoãðaìa aáo oêðeìèé êoìï'þòeð, ÿêèé cïeöiaëiçóºòücÿ ía oáðoáöi çaïèòiâ äo ìeðeæi i çáeðeæeííi ðeçóëüòaòiâ çaïèòiâ â câo¿é ëoêaëüíié êeø-ïaì'ÿòi), ùo äoçâoëÿº icòoòío ïiäâèùèòè ïðoäóêòèâíicòü ðoáoòè êoðècòóâa÷iâ ëoêaëüío¿ ìeðeæi ïðè ðoáoòi ç äoêóìeíòaìè, ðoçòaøoâaíèìè â Internet. Ìoæía çaäaâaòè òaêi ïaðaìeòðè i íacòðoþâaííÿ ïðoêci-ceðâeða:

- òèïè ôaéëiâ, ÿêi íeoáõiäío êeøóâaòè aáo íaâïaêè, íe âêëþ÷aòè â êeø;

- ìaêcèìaëüíèé oácÿã äècêoâoão ïðocòoðó, âiäâeäeíèé ïiä êeø;

- ïeðioäè÷íèé ïeðeãëÿä i iíäeêcóâaííÿ áaçè äaíèõ êeøa ç ìeòoþ âèâiëüíeííÿ äècêoâoão ïðocòoðó øëÿõoì âèäaëeííÿ çacòaðiëèõ oá'ºêòiâ.

Apache çiãðaâ êëþ÷oâó ðoëü ó ïo÷aòêoâoìó çðocòaííi âcecâiòíüo¿ ïaâóòèíè, i ïðoäoâæóº áóòè íaéïoïóëÿðíiøèì ó câiòi âeá-ceðâeðoì, äe-ôaêòo ïëaòôoðìoþ, ía ÿêó oðiºíòóþòücÿ iíøi âeá-ceðâeðè [7].

Äëÿ ðoçðoáêè ïðoãðaìíoão ïðoäóêòó áóëa âèêoðècòaía çáiðêa âiðòóaëüíoão âeá-ceðeâeða XAMPP. Òóò º Apache i MySQL.

2.3.2 CÊÁÄ MySQL

MySQL - âiëüía cècòeìa óïðaâëiííÿ áaçaìè äaíèõ (CÓÁÄ). Cècòeìa êeðóâaííÿ áaçaìè äaíèõ (CÊÁÄ) - êoìï'þòeðía ïðoãðaìa ÷è êoìïëeêc ïðoãðaì, ùo çaáeçïe÷óº êoðècòóâa÷aì ìoæëèâicòü còâoðeííÿ, çáeðeæeííÿ, oíoâëeííÿ, ïoøóê iíôoðìaöi¿ òa êoíòðoëþ äocòóïó â áaçaõ äaíèõ [8].

MySQL º âëacíicòþ êoìïaíi¿ MySQL AB, ùo çäiécíþº ðoçðoáêó i ïiäòðèìêó äoäaòêó. Ðoçïoâcþäæóºòücÿ ïiä GNU General Public License i ïiä âëacíoþ êoìeðöiéíoþ ëiöeíçiºþ, ía âèáið. Êðiì öüoão êoìïaíiÿ MySQL AB ðoçðoáëÿº ôóíêöioíaëüíicòü ça çaìoâëeííÿì ëiöeíçiéíèõ êoðècòóâa÷iâ, caìe çaâäÿêè òaêoìó çaìoâëeííþ ìaéæe â ïeðøèõ âeðciÿõ ç'ÿâèâcÿ ìeõaíiçì ðeïëiêaöi¿.

MySQL º ðiøeííÿì äëÿ ìaëèõ i ceðeäíiõ äoäaòêiâ. Âõoäèòü â LAMP. Çâè÷aéío MySQL âèêoðècòoâóºòücÿ ÿê ceðâeð, äo ÿêoão çâeðòaþòücÿ ëoêaëüíi aáo âèäaëeíi êëiºíòè, ïðoòe â äècòðèáóòèâ âõoäèòü áiáëioòeêa âíóòðiøíüoão ceðâeða, ùo äoçâoëÿº âêëþ÷aòè MySQL â aâòoíoìíi ïðoãðaìè.

Ãíó÷êicòü CÓÁÄ MySQL çaáeçïe÷óºòücÿ ïiäòðèìêoþ âeëèêo¿ êiëüêocòi òèïiâ òaáëèöü: êoðècòóâa÷i ìoæóòü âèáðaòè ÿê òaáëèöi òèïó MyISAM, ùo ïiäòðèìóþòü ïoâíoòeêcòoâèé ïoøóê, òaê i òaáëèöi InnoDB, ùo ïiäòðèìóþòü òðaíçaêöi¿ ía ðiâíi oêðeìèõ çaïèciâ. Áiëüø òoão, CÓÁÄ MySQL ïocòaâëÿºòücÿ iç cïeöiaëüíèì òèïoì òaáëèöü EXAMPLE, ùo äeìoícòðóº ïðèíöèïè còâoðeííÿ íoâèõ òèïiâ òaáëèöü. Çaâäÿêè âiäêðèòié aðõiòeêòóði i GPL-ëiöeíçóâaííþ, â CÓÁÄ MySQL ïocòiéío ç'ÿâëÿþòücÿ íoâi òèïè òaáëèöü.

MySQL âèíèêëa ÿê cïðoáa çacòocóâaòè mSQL äo âëacíèõ ðoçðoáoê êoìïaíi¿: òaáëèöÿì, äëÿ ÿêèõ âèêoðècòoâóâaëècÿ ISAM - ïiäïðoãðaìè íèçüêoão ðiâíÿ.  ðeçóëüòaòi áóâ âèðoáëeíèé íoâèé SQL-iíòeðôeéc, aëe API-iíòeðôeéc çaëèøèâcÿ â cïaäoê âiä mSQL. Çâiäêè âiäáóâaºòücÿ íaçâa "MySQL" - íaïeâío íe âiäoìo. Ðoçðoáíèêè äaþòü äâa âaðiaíòè: aáo òoìó, ùo ïðaêòè÷ío âci íaïðaöþâaííÿ êoìïaíi¿ ïo÷èíaëècÿ ç ïðeôiêca My, aáo ía ÷ecòü äiâ÷èíêè ía iì'ÿ My, äo÷êè Ìaéêëa Ìoíòi Âiäeíióca, oäíoão ç ðoçðoáíèêiâ cècòeìè.

MySQL ìaº API äëÿ ìoâ C, C++, Ýéôeëü, Java, Ëicï, Perl, PHP, Python, Ruby, Smalltalk áiáëioòeêè äëÿ ìoâ ïëaòôoðìè.NET, a òaêoæ çaáeçïe÷óº ïiäòðèìêó äëÿ ODBC ça äoïoìoãoþ ODBC-äðaéâeða MyODBC.

Äëÿ íeêoìeðöiéíoão âèêoðècòaííÿ MySQL º áeçêoøòoâíèì. Ìoæëèâocòi ceðâeða MySQL:

- ïðocòoòa ó âcòaíoâëeííi òa âèêoðècòaííi;

- ïiäòðèìóºòücÿ íeoáìeæeía êiëüêicòü êoðècòóâa÷iâ, ùo oäío÷acío ïðaöþþòü iç ÁÄ;

- êiëüêicòü ðÿäêiâ ó òaáëèöÿõ ìoæe äocÿãaòè 50 ìëí.;

- âècoêa øâèäêicòü âèêoíaííÿ êoìaíä;

- íaÿâíicòü ïðocòo¿ i eôeêòèâío¿ cècòeìè áeçïeêè.

Íeäoëiêè ceðâeða MySQL:

- íe ðeaëiçoâaía ïiäòðèìêa òðaíçaêöié. Íaòoìicòü ïðoïoíóºòücÿ âèêoðècòoâóâaòè LOCK/UNLOCK TABLE;

- âiäcóòíÿ ïiäòðèìêa çoâíiøíiõ (foreign) êëþ÷iâ;

- âiäcóòíÿ ïiäòðèìêa òðèãeðiâ i çáeðeæeíèõ ïðoöeäóð;

- âiäcóòíÿ ïiäòðèìêa ïðeäcòaâëeíü (VIEW).

Çaçía÷eíi íeäoëiêè íe º êðèòè÷íèìè ïðè ðoçðoáöi ìaëèõ i ceðeäíiõ IC-iíôoðìaöiéíèõ cècòeì äëÿ ðoáo÷èõ ãðóï [9].

2.3.3 Ìoâa ðoçìiòêè ãiïeðòeêcòó HTML

HTML (Hypertext Markup Language - ìoâa ðoçìiòêè ãiïeðòeêcòó) - öe còaíäaðòía ìoâa ðoçìiòêè äoêóìeíòiâ ó Âcecâiòíié ïaâóòèíi. Âci âeá-còoðiíêè còâoðþþòücÿ ça äoïoìoãoþ ìoâè HTML (aáo XHTML) [10].

Ìoâa ðoçìiòêè - øòó÷ía ìoâa, ÿêa âèêoðècòoâóº íaáið aíoòaöié äo òeêcòó, ùo íaäaº iícòðóêöi¿ còocoâío còðóêòóðè òeêcòó ÷è éoão âiäoáðaæeííÿ.

Ìoâè ðoçìiòêè âèêoðècòoâóâaëècÿ còoëiòòÿìè, a â ocòaííi ðoêè ïo÷aëè âèêoðècòoâóâaòècÿ â cècòeìaõ êoìï'þòeðío¿ âeðcòêè òa cècòeìaõ oáðoáêè òeêcòoâo¿ iíôoðìaöi¿ [11].

Ãiïeðòeêcò (aíãë. Hypertext) - äoêóìeíò (òeêcò), ùo ìicòèòü ãiïeðïocèëaííÿ ía iíøi äoêóìeíòè, ÿêi ìoæóòü áóòè âiäoáðaæeíi áeçïoceðeäíüo ç âèõiäíoão (ïeðâèííoão) äoêóìeíòó, øëÿõoì aêòèâiçaöi¿ ãiïeðïocèëaííÿ. Âeá-oãëÿäa÷ ïeðeìiùóº êoðècòóâa÷a Internetó ç oäíoão äoêóìeíòó ía iíøèé ÿê òiëüêè òoé âêaçóº ía ãiïeðïocèëaííÿ [12].

Ãiïeðïocèëaííÿ - aêòèâíèé (âèäiëeíèì êoëüoðoì) òeêcò, çoáðaæeííÿ ÷è êíoïêa ía âeá-còoðiíöi, íaòècíeííÿ ía ÿêó (aêòèâiçaöiÿ ãiïeðïocèëaííÿ) âèêëèêaº ïeðeõiä ía iíøó còoðiíêó ÷è iíøó ÷acòèíó ïoòo÷ío¿ còoðiíêè [13].

XHTML (ðoçøèðþâaía ìoâa ðoçìiòêè ãiïeðòeêcòó) - ìoâa ðoçìiòêè, ùo çaäoâoëüíÿº cèíòaêcè÷íèì ïðaâèëaì XML [14].

 òoé ÷ac ÿê HTML ïoáóäoâaío ía ocíoâi ïðaâèë SGML (còaíäaðòía óçaãaëüíeía ìoâa ðoçìiòêè, öe äeÿêa ìeòaìoâa ía ÿêié ìoæía âèçía÷aòè ìoâó ðoçìiòêè äëÿ äoêóìeíòiâ), XHTML ïoáóäoâaío ía ocíoâi ïðaâèë XML, cóâoðiøo¿ ïiäìíoæèíè ïðaâèë SGML. Ocêiëüêè XHTML äoêóìeíòè ìaþòü áóòè êoðeêòíèìè XML äoêóìeíòaìè, ¿õ oáðoáêó ìoæía çäiécíþâaòè còaíäaðòíèìè iícòðóìeíòaìè oáðoáêè XML äoêóìeíòiâ ía âiäìiíó âiä HTML, ÿêèé âèìaãaº ïoðiâíÿío cêëaäíiøèõ, âaæ÷èõ i ïoâiëüíiøèõ cèíòaêcè÷íèõ aíaëiçaòoðiâ. XHTML ìoæía ðoçãëÿäaòè ÿê, áaãaòo â ÷oìó, ïeðeòèí HTML i XML, ocêiëüêè öeé còaíäaðò º ïeðeôoðìóëþâaííÿì HTML çacoáaìè XML. XHTML 1.0 còaâ ðeêoìeíäaöiºþ êoícoðöióìó W3C 26 ci÷íÿ 2000 ðoêó. XHTML 1.1 còaâ ðeêoìeíäaöiºþ W3C 31 òðaâíÿ 2001 ðoêó.

Ìoâa HTML iíòeðïðeòóºòücÿ áðaóçeðoì i âiäoáðaæaºòücÿ ó âèãëÿäi äoêóìeíòa, çðó÷íoìó äëÿ ëþäèíè.

HTML º äoäaòêoì SGML (còaíäaðòío¿ óçaãaëüíeío¿ ìoâè ðoçìiòêè) i âiäïoâiäaº ìiæíaðoäíoìó còaíäaðòó ISO 8879.

HTML-äoêóìeíò º òeêcòoâèì ôaéëoì ðoçìi÷eíèé ça äoïoìoãoþ cïeöiaëüíèõ (ïðèðoäío, òeêcòoâèõ) êoìaíä. Òeêcòoâèé ôoðìaò ïðeäcòaâëeííÿ âeá-äoêóìeíòiâ áóâ âèáðaíèé âèõoäÿ÷è ç ocíoâíèõ âèìoã äo âeá-äoêóìeíòó: ïðocòoòa, ìoæëèâicòü áeçïoceðeäíüo¿ iíòeðïðeòaöi¿ â áóäü-ÿêié oïeðaöiéíié cècòeìi, ìiíiìaëüíèé ðoçìið ôaéëó, çðó÷íicòü ðeäaãóâaííÿ i iíòeðïðeòaöi¿.

Ìoâa ðoçìiòêè ãiïeðòeêcòoâèõ äoêóìeíòiâ HTML äoçâoëÿº âèçía÷èòè ðiçíi òèïè eëeìeíòiâ, ùo çaáeçïe÷óþòü ôóíêöioíaëüíicòü äoêóìeíòa: òeêcòoâi ôðaãìeíòè iç çaäaíèìè ïaðaìeòðaìè ôoðìaòóâaííÿ, cïècêè, òaáëèöi, çoáðaæeííÿ, ãiïeðïocèëaííÿ i ò.ä. Eëeìeíòè HTML oãoëoøóþòücÿ ça äoïoìoãoþ êoìaíä ðoçìiòêè, çâaíèõ òeãaìè (âiä aíãëiécüêoão tag - ÿðëèê). Óci HTML-òeãè, ùo çócòði÷aþòücÿ â òeêcòi äoêóìeíòa iíòeðïðeòóþòücÿ áðaóçeðoì ïðè âiäoáðaæeííi äoêóìeíòa.

Ç 1994 ðoêó ïo òeïeðiøíié ÷ac ðoçðoáêa ïðoâoäèòücÿ ïiä eãiäoþ íaääeðæaâío¿ oðãaíiçaöi¿ World Wide Web Consortium (W3C). Iíôoðìaöiþ "ç ïeðøèõ ðóê" ïðo còaíäaðòè, ðeêoìeíäaöi¿ i ïeðcïeêòèâè ðoçâèòêó íe òiëüêè ìoâè HTML, aëe i öiëoão ðÿäó iíøèõ web-òeõíoëoãié, ìoæía çíaéòè â Interneti ça aäðecoþ http://www.w3.orghttp://www.w3.org. Âcÿ äoêóìeíòaöiÿ ía caéòi W3C ïðeäcòaâëeía ía aíãëiécüêié ìoâi, ïðoòe º i ïocèëaííÿ ía ïeðeêëaäè (çoêðeìa, ía ðociécüêó ìoâó).

Ocíoâíèìè âiõaìè ía øëÿõó ðoçâèòêó còaíäaðòiâ HTML ìoæía ââaæaòè óõâaëeííÿ còaíäaðòiâ HTML 1.2, HTML 2.0, HTML 3.2, HTML 4.0.

Âeðci¿:

- RFC 1866 - HTML 2.0, cõâaëeíèé ÿê còaíäaðò 22 âeðecíÿ 1995 ðoêó;

- HTML 3.2 - 14 ci÷íÿ 1996 ðoêó;

- HTML 4.0 - 18 ãðóäíÿ 1997 ðoêó;

- HTML 4.01 (íeçía÷íi çìiíè) - 24 ãðóäíÿ 1999 ðoêó;

- ISO/IEC 15445:2000 (òaê çâaíèé ISO HTML, çacíoâaíèé ía HTML 4.01 Strict) 15 òðaâíÿ 2000 ðoêó.

Êoæeí còaíäaðò, ùo çíoâ ïðèéìaºòücÿ, íaäaº â ðoçïoðÿäæeííÿ web-ìaécòða íoâi ìoæëèâocòi, ùo äoçâoëÿþòü çðoáèòè HTML-äoêóìeíò eôeêòèâíèì i çoâíi ïðèâaáëèâèì [15].

Äëÿ ðoçðoáêè âeá-äoäaòêó áóëa âèêoðècòaía çìiøaía âeðcòêa âeá-còoðiíoê, òoáòo áóëè âèêoðècòaíi i òaáëè÷ía (äoêóìeíò ðoçìiùaºòücÿ â òaáëèöÿõ) i «äiâoâa» âeðcòêa (âeðcòêa ç äoïoìoãoþ cëo¿â).

2.3.4 Òaáëèöi êacêaäíèõ còèëiâ CSS

Cascading Style Sheets (êacêaäíi òaáëèöi còèëiâ) - òeõíoëoãiÿ oïècó çoâíiøíüoão âèãëÿäó äoêóìeíòa, íaïècaíoão ìoâoþ ðoçìiòêè. CSS âèêoðècòoâóºòücÿ ïeðeâaæío äëÿ oôoðìëeííÿ HTML- i XHTML-äoêóìeíòiâ, aëe iíoäi i äëÿ iíøèõ XML-còðóêòóðoâaíèõ äoêóìeíòiâ.

CSS âèêoðècòoâóºòücÿ òâoðöÿìè âeá-còoðiíoê äëÿ çaâäaííÿ êoëüoðiâ, øðèôòiâ, ðoçòaøóâaííÿ i iíøèõ acïeêòiâ ïðeäcòaâëeííÿ äoêóìeíòa. Ocíoâíoþ ìeòoþ ðoçðoáêè CSS áóëo ðoçäiëeííÿ âìicòó (íaïècaíoão ía HTML aáo iíøié ìoâi ðoçìiòêè) i ïðeäcòaâëeííÿ äoêóìeíòa (íaïècaíoão ía CSS). Öe ðoçäiëeííÿ ìoæe çáiëüøèòè äocòóïíicòü äoêóìeíòa, íaäaòè âeëèêó ãíó÷êicòü i ìoæëèâicòü óïðaâëiííÿ éoão óÿâëeííÿì, a òaêoæ çìeíøèòè cêëaäíicòü i ïoâòoðþâaíicòü â còðóêòóðíoìó âìicòi. Êðiì òoão, CSS äoçâoëÿº ïðeäcòaâëÿòè oäèí i òoé æe äoêóìeíò â ðiçíèõ còèëÿõ aáo ìeòoäaõ âècíoâêó, òaêèõ ÿê eêðaííe óÿâëeííÿ, äðóê, ÷èòaííÿ ãoëocoì (cïeöiaëüíèì ãoëocoâèì áðaóçeðoì aáo ïðoãðaìoþ ÷èòaííÿ ç eêðaíó), aáo ïðè âècíoâêó ïðècòðoÿìè, ùo âèêoðècòoâóþòü Øðèôò Áðaéëÿ.

Còaíäaðò CSS âèçía÷aº ïðioðèòeòè, ó ïoðÿäêó ÿêèõ çacòocoâóþòücÿ ïðaâèëa còèëiâ, ÿêùo äëÿ ÿêoãocü eëeìeíòó ïiäõoäÿòü äeÿêi ïðaâèëa oäío÷acío. Öe íaçèâaºòücÿ «êacêaäoì», â ÿêoìó äëÿ ïðaâèë ðoçðaõoâóþòücÿ ïðioðèòeòè aáo "âaãè", ùo ðoáèòü ðeçóëüòaòè ïeðeäáa÷eíèìè.

Òaáëèöÿ còèëiâ cêëaäaºòücÿ ç íaáoðó ïðaâèë. Êoæíe ïðaâèëo, ó câoþ ÷eðãó, cêëaäaºòücÿ ç oäíoão aáo äeêiëüêoõ ceëeêòoðiâ, ðoçäiëeíèõ êoìaìè i áëoêó âèçía÷eíü.

Äo ïoÿâè CSS oôoðìëeííÿ âeá-còoðiíoê çäiécíþâaëocÿ áeçïoceðeäíüo óceðeäèíi âìicòó äoêóìeíòa. Ïðoòe ç ïoÿâoþ CSS còaëo ìoæëèâèì ïðèíöèïoâe ðoçäiëeííÿ çìicòó i ïðeäcòaâëeííÿ äoêóìeíòa. Ça ðaõóíoê öüoão íoâoââeäeííÿ còaëo ìoæëèâèì ëeãêe çacòocóâaííÿ ºäèíoão còèëþ oôoðìëeííÿ äëÿ ìacè cõoæèõ äoêóìeíòiâ, a òaêoæ øâèäêa çìiía öüoão oôoðìëeííÿ.

Ïeðeâaãè CSS ðoçìiòêè:

- äeêiëüêa äèçaéíiâ còoðiíêè äëÿ ðiçíèõ ïðècòðo¿â ïeðeãëÿäó. Íaïðèêëaä, ía eêðaíi äèçaéí áóäe ðoçðaõoâaíèé ía âeëèêó øèðèíó, ïiä ÷ac äðóêó ìeíþ íe âèâoäèòèìeòücÿ, a ía ÊÏÊ i còiëüíèêoâoìó òeëeôoíi ìeíþ áóäe cëiä ça âìicòoì.

- çìeíøeííÿ ÷acó çaâaíòaæeííÿ còoðiíoê caéòó ça ðaõóíoê ïeðeíeceííÿ ïðaâèë ïðeäcòaâëeííÿ äaíèõ â oêðeìèé CSS-ôaéë. Â öüoìó âèïaäêó áðaóçeð çaâaíòaæóº òiëüêè còðóêòóðó äoêóìeíòa i äaíi, ùo çáeðiãaþòücÿ ía còoðiíöi, a ïðeäcòaâëeííÿ öèõ äaíèõ çaâaíòaæóºòücÿ áðaóçeðoì òiëüêè oäèí ðaç i êeøóþòücÿ.

- ïðocòoòa ïoäaëüøo¿ çìiíè äèçaéíó. Íe ïoòðiáío ïðaâèòè êoæíó còoðiíêó, a ëèøe çìiíèòè CSS-ôaéë.

- äoäaòêoâi ìoæëèâocòi oôoðìëeííÿ [16].

 äaíoìó âeá-äoäaòêó äëÿ oôoðìëeííÿ âeá-còoðiíoê áóëè âèêoðècòaíi «çoâíiøíi» òaáëèöi êacêaäíèõ còèëiâ, òoáòo còèëi ðoçìiùeííi â ôaéëaõ còèëiâ (ôaéë.css) i ïiäêëþ÷eíi äo âeá-còoðiíoê.

2.3.5 Ìoâa ïðoãðaìóâaííÿ JavaScript

JavaScript - cêðèïòoâa ìoâa, ùo íaé÷acòiøe âèêoðècòoâóºòücÿ ïðè còâoðeííi cöeíaði¿â ïoâeäiíêè áðaóçeða, ùo âáóäoâóþòücÿ ó âeá-còoðiíêè.

Íaçâa «JavaScript» º çaðeºcòðoâaíoþ òoðãoâoþ ìaðêoþ êoìïaíi¿ Sun Microsystems, Inc.

Ðoçðoáëeía êoìïaíiºþ Netscape, ìoâa áóëa âêëþ÷eía â áðaóçeð Netscape Navigator ïo÷èíaþ÷è ç äðóão¿ âeðci¿ i cïo÷aòêó íaçèâaëacü LiveScript. Cèíòaêcèc ìoâè áðaâ ïo÷aòoê âiä ìoâè CI, aëe, ocêiëüêè òeõíoëoãiÿ Java áóëa ó òoé ÷ac äóæe ìoäíoþ, LiveScript ïeðeéìeíóâaëè â JavaScript, oäeðæaâøè âiäïoâiäíó ëiöeíçiþ ó Sun. Êoìïaíiÿ Microsoft, ïoáa÷èâøè ócïiõ JavaScript, còâoðèëa câoþ âeðciþ öiº¿ ìoâè ïiä íaçâoþ JScript. Iíøi âèðoáíèêè áðaóçeðoâ òaêoæ còâoðèëè câo¿ âeðci¿ öiº¿ ìoâè, ùo ðoáèòü çaâäaííÿ íaïècaííÿ cêëaäíoão óíiâeðcaëüíoão (cóìicíoão ç áóäü-ÿêèì áðaóçeðoì) cêðèïòa äocèòü âaæêèì. Äëÿ âèðiøeííÿ ïðoáëeì cóìicíocòi acoöiaöiÿ ECMA çaïðoïoíóâaëa còaíäaðò ECMA-262. Ïo ìoæëèâocòÿõ ECMAScript ïðèáëèçío âiäïoâiäaº JavaScript 1.1.

JavaScript ìaº íèçêó âëacòèâocòeé oá'ºêòío-oðiºíòoâaío¿ ìoâè, aëe çaâäÿêè êoíöeïöi¿ ïðoòoòèïiâ ïiäòðèìêa oá'ºêòiâ â íiì âiäðiçíÿºòücÿ âiä òðaäèöiéíèõ ìoâ OOÏ. Êðiì òoão, JavaScript ìaº ðÿä âëacòèâocòeé, âëacòèâèõ ôóíêöioíaëüíèì ìoâaì, -- ôóíêöi¿ ÿê oá'ºêòè ïeðøoão ðiâíÿ, oá'ºêòè ÿê cïècêè, êaððiíã (currying), aíoíiìíi ôóíêöi¿, çaìèêaííÿ (closures) - ùo äoäaº ìoâi äoäaòêoâó ãíó÷êicòü.

JavaScript ìaº CI-ïoäiáíèé cèíòaêcèc, aëe â ïoðiâíÿííi ç ìoâoþ CI ìaº íacòóïíi êoðiííi âiäìiííocòi:

- oá'ºêòè, ç ìoæëèâicòþ iíòðocïeêöi¿ i äèíaìi÷ío¿ çìiíè òèïó ÷eðeç ìeõaíiçì ïðoòoòèïiâ;

- ôóíêöi¿ ÿê oá'ºêòè ïeðøoão êëacó;

- oáðoáêa âèíÿòêiâ;

- aâòoìaòè÷íe ïðèâeäeííÿ òèïiâ;

- aâòoìaòè÷íe ïðèáèðaííÿ cìiòòÿ;

- aíoíiìíi ôóíêöi¿.

Ceìaíòèêa ìoâè cõoæa ç ceìaíòèêoþ ìoâè Self.

Ïðè ðoçðoáöi âeëèêèõ i íeòðèâiaëüíèõ âeá-çacòocóâaíü ç âèêoðècòaííÿì JavaScript, êðèòè÷ío âaæëèâèì º äocòóï äo iícòðóìeíòiâ âiäëaäêè, ocêiëüêè áðaóçeðè âiä ðiçíèõ âèðoáíèêiâ äeùo âiäðiçíÿþòücÿ ó ïoâeäiíöi.

Òaêoæ icíóþòü êiëüêa iícòðóìeíòiâ, ÿê âiëüíèõ, íaïðèêëaä JSLint, iícòðóìeíò ïeðeâiðêè ÿêocòi êoäó, ùo cêaíóº JavaScript ïðoãðaìó, øóêaþ÷è ïðoáëeìè êoäó, òaê i êoìeðöiéíèõ ïðoäóêòiâ òèïó iícòðóìeíòó ç íaçâoþ JavaScript Debugger.

Ocêiëüêè JavaScript º iíòeðïðeòaòoðoì, áeç còðoão¿ òèïèçaöi¿, i ìoæe âèêoíóâaòècÿ â ðiçíèõ ceðeäoâèùaõ, êoæíe çi câo¿ìè âëacíèìè ocoáëèâocòÿìè cóìicíocòi, ïðoãðaìicò ìaº áóòè äóæe óâaæíèì, i ïoâèíeí ïeðeâiðÿòè, ùo éoão êoä âèêoíóºòücÿ ÿê o÷iêóºòücÿ â øèðoêoìó ïeðeëiêó ìoæëèâèõ êoíôiãóðaöié. Äóæe ÷acòo òðaïëÿþòücÿ âèïaäêè, êoëè cêðiïò, ùo ÷óäoâo ïðaöþº â oäíoìó ceðeäoâèùi, âèäaº íeêoðeêòíi ðeçóëüòaòè â iíøoìó.

Êoæeí áëoê cöeíaðiþ iíòeðïðeòaòoð ðoçáèðaº oêðeìo. Ía âeá-còoðiíêaõ, êoëè òðeáa êoìáiíóâaòè áëoêè JavaScript òa HTML, cèíòaêcè÷íi ïoìèëêè íaéòè ëeãøe, ÿêùo òðèìaòè ôóíêöi¿ cöeíaðiþ â oêðeìoìó áëoöi êoäó, aáo âèêoðècòoâóâaòè áaãaòo ìaëèõ ïoâ'ÿçaíèõ.js ôaéëiâ.  òaêèé cïociá cèíòaêcè÷ía ïoìèëêa íe cïðè÷èíÿòèìe «ïaäiííÿ» öiëo¿ còoðiíêè, i ìoæía íaäaòè äoïoìoãó, eëeãaíòío âèéøoâøè çi còoðiíêè [17].

2.3.6 Ìoâa ïðoãðaìóâaííÿ PHP

PHP («ïðeïðoöecoð ãiïeðòeêcòó») - cêðèïòoâa ìoâa ïðoãðaìóâaííÿ, còâoðeía äëÿ ãeíeðaöi¿ HTML-còoðiíoê ía âeá-ceðâeði i ðoáoòè ç áaçaìè äaíèõ. Â äaíèé ÷ac ïiäòðèìóºòücÿ ïeðeâaæíoþ áiëüøicòþ ïðoâaéäeðiâ õocòèíãó. Âõoäèòü â LAMP - «còaíäaðòíèé» íaáið äëÿ còâoðeííÿ âeá-caéòiâ (Linux, Apache, MySQL, PHP (Python aáo Perl)) [18].

Ïðeïðoöecoð -- ïðoãðaìa, ÿêa âèêoíóº ïoïeðeäíþ oáðoáêó äaíèõ, äëÿ òoão, ùoá âoíè ìoãëè âèêoðècòoâóâaòècü iíøoþ ïðoãðaìoþ, íaïðèêëaä, òaêoþ ÿê êoìïiëÿòoð. Ïðo äaíi ía âèõoäi ïðeïðoöecoða ãoâoðÿòü, ùo âoíè çíaõoäÿòücÿ â ïðeïðoöecoâaíié ôoðìi, ïðèäaòíié äëÿ oáðoáêè ïoäaëüøèìè ïðoãðaìaìè (êoìïiëÿòoð). Ðeçóëüòaò i âèä oáðoáêè çaëeæaòü âiä âèäó ïðe ïðoöecoða: òaê, äeÿêi ïðeïðoöecoðè ìoæóòü òiëüêè âèêoíaòè ïðocòó òeêcòoâó ïiäcòaíoâêó, iíøi çäaòíi ça ìoæëèâocòÿìè ïoðiâíÿòècÿ ç ìoâaìè ïðoãðaìóâaííÿ. Íaé÷acòiøèé âèïaäoê âèêoðècòaííÿ ïðeïðoöecoða - oáðoáêa ïo÷aòêoâoão êoäó ïeðeä ïeðeäa÷eþ éoão ía íacòóïíèé êðoê êoìïiëÿöi¿. Ìoâè ïðoãðaìóâaííÿ C/C++ i cècòeìa êoìï'þòeðío¿ âeðcòêè âèêoðècòoâóþòü ïðeïðoöecoðè, ùo çía÷ío ðoçøèðÿþòü ¿õíi ìoæëèâocòi. Íaçâa øèðoêo ïoøèðeío¿ cêðèïòoâo¿ ìoâè ïðoãðaìóâaííÿ PHP º ðeêóðcèâíèì aêðoíiìoì «PHP: Hypertext Preprocessor».

 oáëacòi ïðoãðaìóâaííÿ äëÿ ìeðeæi Internet, PHP - oäía ç ïoïóëÿðíèõ cêðèïòoâèõ ìoâ (ðaçoì ç JSP, Perl i ìoâaìè, âèêoðècòoâóâaíèìè â ASP.NET) çaâäÿêè câo¿é ïðocòoòi, øâèäêocòi âèêoíaííÿ, áaãaòié ôóíêöioíaëüíocòi i ðoçïoâcþäæeííþ ïo÷aòêoâèõ êoäiâ ía ocíoâi ëiöeíçi¿ PHP. PHP âiäðiçíÿºòücÿ íaÿâíicòþ ÿäða i ìoäóëiâ, ùo ïiäêëþ÷aþòücÿ, «ðoçøèðeíü»: äëÿ ðoáoòè ç áaçaìè äaíèõ, coêeòaìè, äèíaìi÷íoþ ãðaôiêoþ, êðèïòoãðaôi÷íèìè áiáëioòeêaìè, äoêóìeíòaìè ôoðìaòó PDF i ò.ï. Áóäü-ÿêèé oõo÷èé ìoæe ðoçðoáèòè câoº âëacíe ðoçøèðeííÿ i ïiäêëþ÷èòè éoão. Icíóþòü coòíi ðoçøèðeíü, ïðoòe â còaíäaðòíe ïocòa÷aííÿ âõoäèòü ëèøe äeêiëüêa äecÿòêiâ òèõ, ùo äoáðe çaðeêoìeíäóâaëè ceáe. Iíòeðïðeòaòoð PHP ïiäêëþ÷aºòücÿ äo âeá-ceðâeðó aáo ÷eðeç ìoäóëü, còâoðeíèé cïeöiaëüío äëÿ öüoão ceðâeða (íaïðèêëaä, äëÿ Apache aáo IIS), aáo ÿê CGI-äoäaòoê.

Oêðiì öüoão, âií ìoæe âèêoðècòoâóâaòècÿ äëÿ âèðiøeííÿ aäìiíicòðaòèâíèõ çaâäaíü â oïeðaöiéíèõ cècòeìaõ UNIX, GNU/Linux, Microsoft Windows, Mac OS X i AmigaOS. Ïðoòe â òaêié ÿêocòi âií íe íaáóâ ïoøèðeííÿ, âiääaþ÷è ïaëüìó ïeðøocòi Perl, Python i VBScript.

Cèíòaêcèc PHP ïoäiáíèé cèíòaêcècó ìoâè Ci. Äeÿêi eëeìeíòè, òaêi ÿê acoöiaòèâíi ìacèâè i öèêë foreach, çaïoçè÷eíi ç Perl.

Cüoãoäíi PHP âèêoðècòoâóºòücÿ coòíÿìè òècÿ÷ ðoçðoáíèêiâ. Äeêiëüêa ìiëüéoíiâ caéòiâ ïoâiäoìëÿþòü ïðo ðoáoòó ç PHP, ùo cêëaäaº áiëüø ï'ÿòo¿ ÷acòêè äoìeíiâ Internetó.

Ãðóïa ðoçðoáíèêiâ PHP cêëaäaºòücÿ ç áeçëi÷i ëþäeé, ùo äoáðoâiëüío ïðaöþþòü íaä ÿäðoì i ðoçøèðeííÿìè PHP, i cóìiæíèìè ïðoeêòaìè, òaêèìè, ÿê PEAR aáo äoêóìeíòaöiÿ ìoâè.

Íaçâa PHP - ðeêóðcèâía aáðeâiaòóða, ùo oçía÷aº «PHP: Hypertext Preprocessor» (ðaíiøe aêðoíiì ðoçøèôðoâóâaâcÿ ÿê «Personal Home Page Tools»). Cïo÷aòêó PHP còâoðþâaâcÿ ÿê íaäáóäoâa íaä Perl äëÿ ïoëeãøeííÿ ðoçðoáêè âeá-còoðiíoê [19].

Ó 1994 ðoöi äaícüêèé ïðoãðaìicò (ùo íèíi æèâe â Êaíaäi) Ðacìóc Ëeðäoðô (Rasmus Lerdorf) íaïècaâ íaáið cêðèïòiâ ía Perl/CGI äëÿ âècíoâêó i oáëiêó âiäâiäóâa÷iâ éoão oíëaéí-ðeçþìe, oáðoáëþâaëüíèé øaáëoíè HTML-äoêóìeíòiâ. Ëeðäoðô íaçâaâ íaáið Personal Home Page (Ocoáècòa Äoìaøíÿ Còoðiíêa). Íeçaáaðoì ôóíêöioíaëüíocòi i øâèäêocòi Perl - iíòeðïðeòaòoða cêðèïòiâ - ïeðecòaëo âècòa÷aòè, i Ëeðäoðô íaïècaâ ía ìoâi C íoâèé iíòeðïðeòaòoð øaáëoíiâ PHP/FI (aíãë. Personal Home Page / Forms Interpreter - «Ocoáècòa Äoìaøíÿ Còoðiíêa / Iíòeðïðeòaòoð ôoðì». PHP/FI âêëþ÷aâ áaçoâó ôóíêöioíaëüíicòü cüoãoäíiøíüoão PHP: oôoðìëeííÿ çìiííèõ â còèëi Perl ($iì'ÿ_çìiíío¿ äëÿ âèâeäeííÿ çía÷eííÿ), aâòoìaòè÷íó oáðoáêó ôoðì i âcòðoºíèé â HTML-òeêcò i áaãaòo ùo iíøe. Íoâoíaðoäæeía ìoâa âiäðiçíÿëacÿ âiä câoão ïðoðoäè÷a ïðocòiøèì i oáìeæeíèì cèíòaêcècoì.

Ó 1997 ðoöi ïicëÿ òðèâaëoão òecòóâaííÿ áeòè âèéøëa äðóãa âeðciÿ oáðoáíèêa, íaïècaíoão ía C - PHP/FI 2.0. ¯¿ âèêoðècòoâóâaëè áëèçüêo 1 % (ïðèáëèçío 50 òècÿ÷) âciõ Internet-äoìeíiâ câiòó.

PHP 3.0 áóëa ïeðøoþ âeðciºþ, ùo íaãaäóº PHP, ÿêèì ìè çíaºìo éoão cüoãoäíi. Ó 1997 ðoöi äâa içða¿ëücüêi ïðoãðaìicòè Eíäi Ãóòìaíc (Andi Gutmans) i Çiâ Cóðacüêi (Zeev Suraski), äâa ðoçðoáíèêè ç içða¿ëücüêoão iícòèòóòó òeõíoëoãié, ïeðeïècaëè êoä ç íóëÿ: ðoçðoáíèêè âèçíaëè PHP/FI 2.0 íeïðèäaòíèì äëÿ ðoçðoáêè äoäaòêó eëeêòðoíío¿ êoìeðöi¿, íaä ÿêèì âoíè ïðaöþâaëè äëÿ ïðoeêòó Óíiâeðcèòeòó ðoçòaøoâaíoão â Õaéôi, Içða¿ëü. Äëÿ cïiëüío¿ ðoáoòè íaä PHP 3.0 ça äoïoìoãoþ áaçè ðoçðoáíèêiâ PHP/FI 2.0 Eíäi, Ðacìóc i Çiâ âèðiøèëè oá'ºäíaòècÿ i oãoëocèòè PHP 3.0 oôiöiéíèì íacòóïíèêoì PHP/FI, ðoçðoáêa æ PHP/FI áóëa ïðaêòè÷ío ïoâíicòþ ïðèïèíeía.

Oäíiºþ ç cèëüíèõ còoðií PHP 3.0 áóëa ìoæëèâicòü ðoçøèðeííÿ ÿäða. Çãoäoì iíòeðôeéc íaïècaííÿ ðoçøèðeíü ïðèâeðíóâ äo PHP áeçëi÷ còoðoííiõ ðoçðoáíèêiâ, ùo ïðaöþþòü íaä câo¿ìè ìoäóëÿìè, ùo äaëo PHP ìoæëèâicòü ïðaöþâaòè ç âeëè÷eçíoþ êiëüêicòþ áaç äaíèõ, ïðoòoêoëiâ, ïiäòðèìóâaòè âeëèêe ÷ècëo API.

Aácoëþòío íoâa ìoâa ïðoãðaìóâaííÿ oäeðæaëa íoâe iì'ÿ. Ðoçðoáíèêè âiäìoâèëècÿ âiä äoïoâíeííÿ ïðo ïeðcoíaëüíe âèêoðècòaííÿ, ÿêe áóëo â aáðeâiaòóði PHP/FI. Ìoâa áóëa íaçâaía ïðocòo PHP - aáðeâiaòóða, ùo ìicòèòü ðeêóðcèâíèé aêðoíiì (aíãë. PHP: Hypertext Preprocessor - «PHP: Ïðeïðoöecoð Ãiïeðòeêcòó»).

Äo êiíöÿ 1998 ðoêó PHP âèêoðècòoâóâaâcÿ äecÿòêaìè òècÿ÷ êoðècòóâa÷iâ. Coòíi òècÿ÷ âeá-caéòiâ ïoâiäoìëÿëè ïðo òe, ùo âoíè ïðaöþþòü ç âèêoðècòaííÿì öiº¿ ìoâè. Ó òoé ÷ac PHP 3.0 áóâ âcòaíoâëeíèé ïðèáëèçío ía 10 % âeá-ceðâeðiâ Internetó.

PHP 3.0 áóâ oôiöiéío âèïóùeíèé â ÷eðâíi 1998 ðoêó ïicëÿ 9 ìicÿöiâ ïóáëi÷íoão òecòóâaííÿ.

Äo çèìè 1998 ðoêó, ïðaêòè÷ío âiäðaçó ïicëÿ oôiöiéíoão âèõoäó PHP 3.0, Eíäi Ãóòìaíc i Çiâ Cóðacüêi ïo÷aëè ïeðeðoáêó ÿäða PHP. Ó çaâäaííÿ âõoäèëo çáiëüøeííÿ ïðoäóêòèâíocòi cêëaäíèõ äoäaòêiâ i ïoëiïøeííÿ ìoäóëüíocòi áaçècó êoäó PHP. Ðoçøèðeííÿ äaëè PHP 3.0 ìoæëèâicòü ócïiøío ïðaöþâaòè ç íaáoðoì áaç äaíèõ i ïiäòðèìóâaòè âeëèêó êiëüêicòü ðiçíèõ API i ïðoòoêoëiâ, aëe PHP 3.0 íe ìaâ ÿêicío¿ ïiäòðèìêè ìoäóëiâ i äoäaòêè ïðaöþâaëè íeeôeêòèâío.

Íoâèé «äâèæoê», íaçâaíèé Zend Engine (âiä iìeí òâoðöiâ, Çiâa i Eíäi, òaêoæ çacíoâíèêiâ Zend Technologies), ócïiøío cïðaâëÿâcÿ ç ïocòaâëeíèìè çaâäaííÿìè i âïeðøe áóâ ïðeäcòaâëeíèé ó ceðeäèíi 1999 ðoêó. PHP 4.0, çacíoâaíèé ía öüoìó äâèæêó i òaêèé, ùo ïðèíic ç coáoþ íaáið äoäaòêoâèõ ôóíêöié, oôiöiéío âèéøoâ â òðaâíi 2000 ðoêó, ìaéæe ÷eðeç äâa ðoêè ïicëÿ âèõoäó câoão ïoïeðeäíèêa PHP 3.0. Ía äoäaòoê äo ïoëiïøeííÿ ïðoäóêòèâíocòi, PHP 4.0 ìaâ ùe äeêiëüêa êëþ÷oâèõ íoâoââeäeíü, òaêèõ ÿê ïiäòðèìêa cecié, áóôeðèçaöiÿ âècíoâêó, áeçïe÷íiøi cïocoáè oáðoáêè iíôoðìaöi¿, ùo ââoäèòücÿ êoðècòóâa÷eì, i äeêiëüêa íoâèõ ìoâíèõ êoícòðóêöié.

Oíoâëeííÿ PHP 4 âèïócêaòèìóòücÿ òiëüêè äo êiíöÿ 2007 ðoêó. Äo öüoão æ ÷acó çäiécíþâaòèìeòücÿ oôiöiéía ïiäòðèìêa ÷eòâeðòo¿ âeðci¿. Äaëi äo 8 ceðïíÿ 2008 ðoêó â ìiðó íeoáõiäíocòi ç'ÿâëÿòèìóòücÿ òiëüêè êðèòè÷íi oíoâëeííÿ áeçïeêè. Ç 9 ceðïíÿ ÷eòâeðòa âeðciÿ PHP ïiøëa â icòoðiþ.

Ï'ÿòa âeðciÿ PHP áóëa âèïóùeía ðoçðoáíèêaìè 13 ëèïíÿ 2004 ðoêó. Çìiíè âêëþ÷aþòü oíoâëeííÿ ÿäða Zend (Zend Engine 2), ùo icòoòío çáiëüøèëo eôeêòèâíicòü iíòeðïðeòaòoða. Ââeäeía ïiäòðèìêa ìoâè ðoçìiòêè XML. Ïoâíicòþ ïeðeðoáëeíi ôóíêöi¿ OOÏ, ÿêi còaëè áaãaòo â ÷oìó cõoæi ç ìoäeëëþ, âèêoðècòoâóâaíoþ â Java. Çoêðeìa, ââeäeía äecòðóêöiÿ, âiäêðèòi, çaêðèòi i çaõèùeíi ÷ëeíè i ìeòoäè, ocòaòo÷íi ÷ëeíè i ìeòoäè, iíòeðôeécè i êëoíóâaííÿ oá'ºêòiâ. Ía äaíèé ìoìeíò íaécòaáiëüíiøèìè i ÷acòo âèêoðècòoâóâaíèìè º caìe âeðci¿ 5.xx, íaâiòü íe äèâëÿ÷ècü ía òe, ùo âæe çíaõoäèòücÿ ó còaäi¿ ðoçðoáêè âeðciÿ PHP 6, ç æoâòíÿ 2006 ðoêó [20].

3. Ðeaëiçaöiÿ ïðoãðaìíoão ïðoäóêòó

3.1 Còðóêòóða i ôóíêöioíaëüíe ïðèçía÷eííÿ ìoäóëiâ cècòeìè, ¿õ âçaºìoçâ'ÿçoê

Äaíèé ïðoãðaìíèé ïðoäóêò cêëaäaºòücÿ ç áaãaòüoõ ìoäóëiâ, ÿêi ìicòÿòü êëacè, ôóíêöi¿ äëÿ oáðoáëeííÿ äaíèõ òa cêðèïòiâ, ÿêi ïðaöþþòü ç öèìè ìoäóëÿìè. Óci êëacè çíaõoäÿòücÿ â ðiçíèõ ôaéëaõ i ¿õ íaçâa ïo÷èíaºòücÿ ç ïðeôiêca «cl_». Âci êëacè íacëiäóþòücÿ âiä ãoëoâíoão êëacó, äðaéâeða áaçè äaíèõ MySQL mysqldriver.php, ÿêèé â câoþ ÷eðãó ðeaëiçóº aácòðaêòíèé êëac abstract.dbdriver.php. Äëÿ êoæíoão ìoäóëÿ icíóº oêðeìèé ôaéë index.php, ÿêèé ïðaöþº ç âiäïoâiäíèì ìoäóëeì.

Âeá-äoäaòoê cêëaäaºòücÿ ç òaêèõ ìoäóëiâ:

a) ìoäóëü äëÿ êeðóâaííÿ aäìiíicòðaòoðaìè - admin:

1) cl_administrators.php - êëac äëÿ ðoáoòè êeðóâaííÿ aäìiíicòðaòoðaìè;

2) checkFIO.php - ôaéë, äe âiäáóâaºòücÿ ïeðeâiðêa ía ââeäeííÿ ÏIÏ;

3) checkLogin.php - ôaéë äëÿ ïeðeâiðêè ââeäeíoão ëoãiía (÷è äocòóïíèé òaêèé ëoãií êoðècòóâa÷ó);

4) checkPassword.php - ôaéë, äëÿ ïeðeâiðêè ââeäeííÿ ïaðoëþ òa ïeðeâiðêè cïiâïaäaííÿ ïoâòoðíoão ïaðoëþ;

á) ìoäóëü äëÿ êeðóâaííÿ çaðeºcòðoâaíèìè êoðècòóâa÷aìè - users:

1) cl_users.php - êëac äëÿ ðoáoòè êeðóâaííÿ çaðeºcòðoâaíèìè êoðècòóâa÷aìè;

2) cl_autorize.php - êëac äëÿ aâòoðèçaöi¿ çaðeºcòðoâaíèõ êoðècòóâa÷iâ;

3) checkFIO.php - ôaéë, äe âiäáóâaºòücÿ ïeðeâiðêa ía ââeäeííÿ ÏIÏ;

4) checkLogin.php - ôaéë äëÿ ïeðeâiðêè ââeäeíoão ëoãiía (÷è äocòóïíèé òaêèé ëoãií êoðècòóâa÷ó);

5) checkPassword.php - ôaéë, äëÿ ïeðeâiðêè ââeäeííÿ ïaðoëþ òa ïeðeâiðêè cïiâïaäaííÿ ïoâòoðíoão ïaðoëþ;

â) ìoäóëü äëÿ ðoáoòè ç òecòoì - test:

1) cl_test.php - êëac äëÿ ðoáoòè ç òecòoì;

2) test_config.php - ôaéë êoíôiãóðaöi¿ òecòó;

ã) cl_authorization.php - êëac äëÿ äocòóïó â cècòeìó óïðaâëiííÿ;

ä) cl_db.php - êëac, ÿêèé âiäïoâiäaº ça ïiäêëþ÷eííÿ i âiäêëþ÷eííÿ âiä áaçè äaíèõ i ïiäêëþ÷aº äðaéâeð áaçè äaíèõ;

e) cl_navigation.php - êëac äëÿ íaâiãaöi¿ ïo còoðiíêaì;

º) ìoäóëü âiäïðaâêè ïoâiäoìëeíü - mailer:

1) class.phpmailer.php - êëac äëÿ âiäïðaâêè ïoâiäoìëeíü;

2) FriendMail.php - êëac äëÿ ïeðeâiðêè ââeäeíèõ äaíèõ, ÿêèé âèêoðècòoâóº êëac class.phpmailer.php;

æ) ìoäóëü aâòoìaòè÷íoão òecòó äëÿ ðoçïiçíaâaííÿ êoìï'þòeðiâ i ëþäeé - kcaptcha:

1) kcaptcha.php - êëac aâòoìaòè÷íoão òecòó äëÿ ðoçïiçíaâaííÿ êoìï'þòeðiâ i ëþäeé;

2) kcaptcha_config.php - ôaéë êoíôiãóðaöi¿ êaï÷i äëÿ caéòó;

3) kcaptcha_config_login.php - ôaéë êoíôiãóðaöi¿ êaï÷i äëÿ cècòeìè óïðaâëiííÿ;

4) font_preparer.php - ôaéë äëÿ íaëaøòóâaííÿ øðèôòó êaï÷i;

Âeá-äoäaòoê cêëaäaºòücÿ ç íacòóïíèõ ôaéëiâ:

- index.php - ãoëoâía còoðiíêa âeá-äoäaòêó;

- test.php - còoðiíêa òecòóâaííÿ;

- timershow.php - ôaéë, ÿêèé ïoêaçóº òaéìeð, ÷ac ïðoõoäæeííÿ òecòó;

- finish.php - còoðiíêa ðeçóëüòaòó òecòóâaííÿ;

- check.php - ôaéë äëÿ aâòoðèçaöi¿, ÿêèé âèêoðècòoâóº êëac äëÿ aâòoðèçaöi¿;

- main.php - ãoëoâía còoðiíêa cècòeìè óïðaâëiííÿ;

- logout.php - ôaéë, ÿêèé âèäaëÿº äaíi ç ceci¿, âèêëèêaºòücÿ ïðè âèõoäi ç cècòeìè óïðaâëiííÿ;

- config.php - ôaéë íaëaøòóâaííÿ, äe çáeðiãaþòücÿ ïaðaìeòðè äocòóïó äo áaçè äaíèõ;

- jquery.js - áiáëioòeêa JavaScript, ÿêa ïðèçía÷eía äëÿ âçaºìoäi¿ JavaScript òa HTML;

- jquery.alerts.js - ïëaãií äëÿ jquery, ÿêèé çaäaº còèëü còaíäaðòíèì äiaëoãoâèì âiêíaì;

- style.css - òaáëèöÿ còèëiâ äëÿ caéòó;

- main.css - òaáëèöÿ còèëiâ äëÿ cècòeìè óïðaâëiííÿ.

Íaâeäeìo cõeìó ãoëoâíoão ìeíþ cècòeìè óïðaâëiííÿ (ðècóíoê 3.1).

Ðècóíoê 3.1 - Cõeìa ãoëoâíoão ìeíþ cècòeìè óïðaâëiííÿ

3.2 Ðoçðoáêa ïðoãðaìíèõ ìoäóëiâ

Ðoçðoáêa ïðoãðaìíoão ïðoäóêòó ïo÷èíaºòücÿ çi còâoðeííÿ áaçè äaíèõ. Äëÿ çðó÷íocòi còâoðeííÿ áaçè áóëo oáðaío ìeíeäæeð áaçè äaíèõ phpMyAdmin. Çaéøoâøè â ìeíeäæeð áaçè äaíèõ, ó ïoëi «Íoâaÿ áaça äaííûõ» ïoòðiáío âêaçaòè íaçâó áaçè iq_test òa íaòècíóòè êíoïêó «Coçäaòü» (ðècóíoê 3.2).

Ðècóíoê 3.2 - Còâoðeííÿ íoâo¿ áaçè äaíèõ

Äaëi ïo÷èíaºìo còâoðþâaòè òaáëèöi. Cïo÷aòêó còâoðþºìo òaáëèöþ «Çaïèòaííÿ». Ó âiäïoâiäíe ïoëe âïècóºìo íaçâó òaáëèöi «t_question», çaäaºìo êiëüêicòü ïoëiâ i íaòècêóºìo êíoïêó «OÊ» (ðècóíoê 3.3).

Ðècóíoê 3.3 - Còâoðeííÿ òaáëèöi «Çaïèòaííÿ»

Äaëi çaäaºìo íaçâè ïoëiâ, êëþ÷i òaáëèöi, òèïè, aòðèáóòè, çía÷eííÿ ça çaìoâ÷óâaííÿì.

Ùoá âêaçaòè, ùo ïoëe º êëþ÷oâèì ïoòðiáío oáðaòè oïöiþ ç iêoíêoþ , ùoá âêaçaòè, ùo ïoëe º óíiêaëüíèì - oïöiþ ç iêoíêoþ , ÿêùo ïoëe º iíäeêcoâaíèì - ç iêoíêoþ . Oïècaâøè ïoëÿ òa âêaçaâøè äëÿ íèõ aòðèáóòè íaòècêóºìo êíoïêó «Coõðaíèòü», ïicëÿ ÷oão oòðèìóºìo ïoâiäoìëeííÿ ïðo ócïiøíe còâoðeííÿ òaáëèöi.

Âèãëÿä còðóêòóðè òaáëèöi «Çaïèòaííÿ» â ìeíeäæeði íaâeäeío ía ðècóíêó 3.4.

Ðècóíoê 3.4 - Còðóêòóða òaáëèöi «Çaïèòaííÿ»

Aíaëoãi÷ío còâoðþºìo òaáëèöi «Âiäïoâiäi», «Ðeéòèíã», «Aâòoðèçaöiÿ», «Êoðècòóâa÷i».

Äëÿ âèêoíaííÿ oïeðaöié íaä òaáëèöÿìè aáo íaä áaçoþ äaíèõ ìoæía âèêoðècòaòè ãoëoâíe ìeíþ ìeíeäæeða (ðècóíoê 3.5). A äëÿ òoão ùoá ïðaöþâaòè ç ïoòðiáíoþ òaáëèöeþ ¿¿ íeoáõiäío âèáðaòè çi cïècêó çëiâa (ðècóíoê 3.6).

Ðècóíoê 3.5 - Ãoëoâíe ìeíþ ìeíeäæeða áaçè äaíèõ

Ðècóíoê 3.6 - Cïècoê òaáëèöü â áaçi äaíèõ

Ïicëÿ còâoðeííÿ áaçè äaíèõ, ïðècòóïèâ äo íaïècaííÿ ìoäóëiâ cècòeìè.

Oïèc ìoäóëiâ, ùo ìicòÿòü ôóíêöi¿.

Ôaéë cl_administrators.php ìicòèòü íacòóïíi ôóíêöi¿:

- SelectData($table_names, $cond_names, $limit_from, $limit_count) - âiäïoâiäaº ça âèáiðêó iíôoðìaöi¿ ïðo aäìiíicòðaòoðiâ, ìaº ïaðaìeòðè: íaçâa òaáëèöi, óìoâa âèáoðó äaíèõ, ïoçèöiÿ ç ÿêo¿ âèáèðaòè äaíi òa êiëüêicòü çaïèciâ;

- DeleteData($table_names, $list) - ïðèçía÷eía äëÿ âèäaëeííÿ äaíèõ ïðo aäìiíicòðaòoðiâ, ìaº ïaðaìeòðè: íaçâa òaáëèöi, ìacèâ íoìeðiâ çaïèciâ;

- InsertData($table_names, $list_values) - âiäïoâiäaº ça äoäaâaííÿ çaïèciâ, ìaº ïaðaìeòðè: íaçâa òaáëèöi, çía÷eííÿ ïoëiâ âiäïoâiäío;

- Updatedata($table_names, $list_values, $cond_names) - ïðèçía÷eía äëÿ ðeäaãóâaííÿ çaïèciâ ïðo aäìiíicòðaòoðiâ, ìaº ïaðaìeòðè: íaçâa òaáëèöi, çía÷eííÿ ïoëiâ, óìoâa ðeäaãóâaííÿ;

- Showdata($limit_from, $limit_count, $query_string) - âiäïoâiäaº ça âiäoáðaæeííÿ iíôoðìaöi¿ ïðo aäìiíicòðaòoðiâ, ìaº ïaðaìeòðè: ïoçèöiÿ ç ÿêo¿ ïoêaçóâaòè çaïècè, êiëüêicòü çaïèciâ, ðÿäoê çaïèòó.

Ôaéë cl_users.php ìicòèòü íacòóïíi ôóíêöi¿:

- SelectData($table_names, $cond_names, $limit_from, $limit_count) - âiäïoâiäaº ça âèáiðêó iíôoðìaöi¿ ïðo çaðeºcòðoâaíèõ êoðècòóâa÷iâ, ìaº ïaðaìeòðè: íaçâa òaáëèöi, óìoâa âèáoðó äaíèõ, ïoçèöiÿ ç ÿêo¿ âèáèðaòè äaíi òa êiëüêicòü çaïèciâ;

- DeleteData($table_names, $list) - ïðèçía÷eía äëÿ âèäaëeííÿ äaíèõ ïðo êoðècòóâa÷iâ, ìaº ïaðaìeòðè: íaçâa òaáëèöi, ìacèâ íoìeðiâ çaïèciâ;

- InsertData($table_names, $list_values) - âiäïoâiäaº ça äoäaâaííÿ çaïèciâ, ìaº ïaðaìeòðè: íaçâa òaáëèöi, çía÷eííÿ ïoëiâ âiäïoâiäío;

- Updatedata($table_names, $list_values, $cond_names) - ïðèçía÷eía äëÿ ðeäaãóâaííÿ çaïèciâ ïðo êoðècòóâa÷iâ, ìaº ïaðaìeòðè: íaçâa òaáëèöi, çía÷eííÿ ïoëiâ, óìoâa ðeäaãóâaííÿ;

- Showdata($limit_from, $limit_count, $query_string) - âiäïoâiäaº ça âiäoáðaæeííÿ iíôoðìaöi¿ ïðo çaðeºcòðoâaíèõ êoðècòóâa÷iâ, ìaº ïaðaìeòðè: ïoçèöiÿ ç ÿêo¿ ïoêaçóâaòè çaïècè, êiëüêicòü çaïèciâ, ðÿäoê çaïèòó.

Ôaéë cl_autorize.php ìicòèòü íacòóïíi ôóíêöi¿:

- authorize() - íe ìaº ïaðaìeòðiâ, ïðèçía÷eía äëÿ aâòoðèçaöi¿ êoðècòóâa÷iâ.

Ôaéë cl_test.php ìicòèòü íacòóïíi ôóíêöi¿:

- FileRead($file) - ïðèçía÷eía äëÿ ÷èòaííÿ ç ôaéëó, ìaº ïaðaìeòð - øëÿõ äo ôaéëó;

- SelectAllId() - íe ìaº ïaðaìeòðiâ, ïðèçía÷eía äëÿ âèáiðêè íoìeðiâ çaïèciâ âciõ ïèòaíü;

- SelectAllIdL() - íe ìaº ïaðaìeòðiâ, ïðèçía÷eía äëÿ âèáiðêè íoìeðiâ çaïèciâ ëeãêèõ çaïèòaíü;

- SelectAllIdM() - íe ìaº ïaðaìeòðiâ, ïðèçía÷eía äëÿ âèáiðêè íoìeðiâ çaïèciâ ceðeäíiõ ïo cêëaäíocòi çaïèòaíü;

- SelectAllIdC()- íe ìaº ïaðaìeòðiâ, ïðèçía÷eía äëÿ âèáiðêè íoìeðiâ çaïèciâ òÿæêèõ ïo âaæêocòi çaïèòaíü;

- ForRead() - íe ìaº ïaðaìeòðiâ, ïoâeðòaº êiëüêicòü ïèòaíü äëÿ âiäoáðaæeííÿ;

- SelectPoint($perem1, $perem2) - âiäïoâiäaº ça âèáiðêó êiëüêocòi áaëiâ ça âiäïoâiäü, ìaº ïaðaìeòðè: íoìeð ïèòaííÿ, íoìeð âaðiaíòa âiäïoâiäi;

- Calculation($perem1, $perem2) - ïðèçía÷eía äëÿ ïiäðaõóíêó êiëüêocòi áaëiâ ça âiäïoâiäü, ìaº ïaðaìeòðè: âaãa âaðiaíòa âiäïoâiäi, êiëüêicòü âiäoáðaæeíèõ çaïèòaíü âiäïoâiäío;

- ShowSuperRatingMain() - ïðèçía÷eía äëÿ âiäoáðaæeííÿ ðeéòèíãó ëiäeðiâ ía ãoëoâíié còoðiíöi;

- ShowRatingMain()- ïðèçía÷eía äëÿ âiäoáðaæeííÿ ðeéòèíãó ó÷acíèêiâ ía ãoëoâíié còoðiíöi;

- ShowSuperRating() - ïðèçía÷eía äëÿ âiäoáðaæeííÿ ðeéòèíãó ëiäeðiâ;

- ShowRating() - ïðèçía÷eía äëÿ âiäoáðaæeííÿ ðeéòèíãó ó÷acíèêiâ;

- SaveRating($id, $mark, $date, $time) - âiäïoâiäaº ça çáeðeæeííÿ ðeéòèíãó ó÷acíèêiâ, ìaº ïaðaìeòðè: êoä ó÷acíèêa, áaë, äaòa, ÷ac.

- CountRating() - íe ìaº ïaðaìeòðiâ, ïðèçía÷eía äëÿ ïiäðaõóíêó çaïèciâ â ðeéòèíãó;

- ShowTest1($perem) - âiäïoâiäaº ça âiäoáðaæeííÿ çaïèòaíü i âiäïoâiäeé, ìaº ïaðaìeòð - êoä çaïèòaííÿ.

Ïðoãðaìíèé êoä ôaéëó cl_test.php íaâeäeío â äoäaòêó A.

Ôaéë cl_authorization.php ìicòèòü íacòóïíi ôóíêöi¿:

- authorization_check($users,$password) - ïðèçía÷eía äëÿ aâòoðèçaöi¿ aäìiíicòðaòoðiâ â cècòeìó óïðaâëiííÿ, ìaº ïaðaìeòðè: ëoãií i ïaðoëü.

Ôaéë kcaptcha.php ìicòèòü íacòóïíi ôóíêöi¿:

- KCAPTCHA() - ïðèçía÷eía äëÿ ãeíeðóâaííÿ ðÿäêa âiä aâòoìaòè÷íoão âiäïðaâëeííÿ ïoâiäoìëeíü;

- getKeyString() - ïðèçía÷eía äëÿ âiäoáðaæeííÿ ç ãeíeðoâaíoão ðÿäêa.

3.3 Iícòðóêöiÿ êoðècòóâa÷a

Äëÿ ïo÷aòêó ðoçïèøeìo iícòðóêöiþ âcòaíoâëeííÿ òa íaëaøòóâaííÿ âeá-äoäaòêó.

Ïo-ïeðøe, âecü êaòaëoã, äe ðoçìiùóºòücÿ âeá-äoäaòoê, êoïiþºìo â ïoòðiáíèé êaòaëoã ía âeá-ceðâeði. Äaëi còâoðþºìo áaçó äaíèõ, ÷eðeç sql-çaïèòè, aáo æ ÷eðeç ìeíeäæeð ÁÄ phpmyadmin. Ïicëÿ còâoðeííÿ áaçè äaíèõ íeoáõiäío eêcïoðòóâaòè òaáëèöi iç zip aðõiâó «DB/avtoparts.sql.zip» äëÿ òoão, ùoá íe íaáèðaòè ¿õ âðó÷íó. Äaëi ïoòðiáío íaëaøòóâaòè ïaðaìeòðè äocòóïó äo ÁÄ. Äëÿ öüoão íeoáõiäío âiäêðèòè ôaéë «config/config.php» i çaäaòè ïaðaìeòðè: òèï ÁÄ (mysql), iì'ÿ õocòa (localhost), iì'ÿ êoðècòóâa÷a (root), ïaðoëü (ÿêùo º), íaçâó ÁÄ, ïðeôiêc ÁÄ (ÿêùo ïoòðiáío).

Äëÿ êoðècòóâa÷iâ òa aäìiíicòðaòoðiâ ðoçðoáëeíi ðiçíi còoðiíêè äocòóïó. Êoðècòóâa÷ó ïðè çaâaíòaæeíi âeá-äoäaòêó äocòóïía ãoëoâía còoðiíêa òecòóâaííÿ, ç ÿêo¿ âií ïo÷èíaº ðoáoòó. Ïðoãðaìíèé êoä ãoëoâío¿ còoðiíêè íaâeäeío â äoäaòêó Á.

Êoðècòóâa÷ ìoæe ïðoéòè òecòóâaííÿ i äiçíaòècü câié êoeôiöiºíò iíòeëeêòó áeç ðeºcòðaöi¿. Òecòóâaííÿ ïo÷èíaºòücÿ ïicëÿ íaòècíeííÿ êíoïêè «Ía÷aòü òecò», çoáðaæeío¿ ía ðècóíêó 3.7.

Ðècóíoê 3.7 - Ïo÷aòoê òecòóâaííÿ

Ïicëÿ íaòècíeííÿ êíoïêè êoðècòóâa÷ ðoçïo÷èíaº òecòóâaííÿ. Âiäïoâiäaþ÷è ía çaïèòaííÿ êoðècòóâa÷ ïoâèíeí âèáðaòè oäèí iç çaïðoïoíoâaíèõ âaðiaíòiâ âiäïoâiäi, êëaöaþ÷è ïo öüoìó âaðiaíòi (ðècóíoê 3.8). ×ac ía ïðoõoäæeííÿ òecòó íeoáìeæeíèé, a òaéìeð ïðèçía÷eíèé ïðocòo äëÿ âiäoáðaæeííÿ ïðoéäeíoão ÷acó.

Ïðoãðaìíèé êoä còoðiíêè òecòóâaííÿ íaâeäeío â äoäaòêó Â.

Ðècóíoê 3.8 - Ïðoõoäæeííÿ òecòóâaííÿ

Ïicëÿ, òoão ÿê êoðècòóâa÷ äaâ âiäïoâiäi ía âci çaïèòaííÿ (¿õ êiëüêicòü çaäaºòücÿ â cècòeìi óïðaâëiííÿ), âií áa÷èòü ðeçóëüòaò. Ïðèêëaä ðeçóëüòaòó çoáðaæeíèé ía ðècóíêó 3.9.

Ðècóíoê 3.9 - Ðeçóëüòaò òecòóâaííÿ

Äaëi, ÿêùo êoðècòóâa÷ õo÷e âçÿòè ó÷acòü â ðeéòèíãó ó÷acíèêiâ, éoìó ïoòðiáío çaðeºcòðóâaòècü (ðècóíoê 3.10). ßêùo êoðècòóâa÷ âæe çaðeºcòðoâaíèé, òo éoìó, äëÿ òoão ùoá çáeðeãòè äaíi, íeoáõiäío aâòoðèçóâaòècü (ðècóíoê 3.11).

Ðècóíoê 3.10 - Ôoðìa ðeºcòðaöi¿

Ðècóíoê 3.11 - Ôoðìa aâòoðèçaöi¿

ßêùo âèíèêíe cèòóaöiÿ, êoëè êoðècòóâa÷ çaáóäe câié ïaðoëü, òo âií ìoæe cêoðècòóâaòècü ôoðìoþ äëÿ íaãaäóâaííÿ ïaðoëÿ, çoáðaæeío¿ ía ðècóíêó 3.12. Íoâèé ïaðoëü íaäiéäe êoðècòóâa÷ó ía âêaçaíèé ïðè ðeºcòðaöi¿ email.

Ðècóíoê 3.12 - Ôoðìa íaãaäóâaííÿ ïaðoëþ

Òaêoæ êoðècòóâa÷ ìoæe âiäïðaâèòè ðeçóëüòaò câoão òecòóâaííÿ äðóãó, çaïoâíèâøè íeoáõiäíi äaíi (ðècóíoê 3.13).

Ðècóíoê 3.13 - Ôoðìa äëÿ âiäïðaâêè äaíèõ äðóãó

Äaëi ïoãoâoðèìo ïðo ÷acòèíó aäìiíicòðaòoða.

Äëÿ ïo÷aòêó ðoáoòè aäìiíicòðaòoð ìaº aâòoðèçóâaòècü. Äëÿ öüoão íeoáõiäío ââecòè ëoãií òa ïaðoëü â ôoðìó, ïoäaíó ía ðècóíêó 3.14.

Ðècóíoê 3.14 - Ôoðìa äëÿ aâòoðèçaöi¿ aäìiíicòðaòoðiâ

Äëÿ êeðóâaííÿ çaðeºcòðoâaíèìè êoðècòóâa÷aìè íeoáõiäío cêoðècòóâaòècü ïóíêòoì ìeíþ «Ïoëüçoâaòeëè caéòa», ðoçòaøoâaíèì â âeðõíié ïaíeëi (ðècóíoê 3.15).

Ðècóíoê 3.15 - Êeðóâaííÿ êoðècòóâa÷aìè

 äaíoìó ïóíêòi ìeíþ ìoæía ïeðeãëÿäaòè iíôoðìaöiþ ïðo êoðècòóâa÷iâ, a òaêoæ êeðóâaòè íèìè (ðècóíoê 3.16).

Ðècóíoê 3.16 - Ïaíeëü êeðóâaííÿ êoðècòóâa÷aìè

Äëÿ aäìiíicòðóâaííÿ òecòoì íeoáõiäío oáðaòè ïóíêò ìeíþ «Òecòû». Â öüoìó ïóíêòi ìoæía äoäaâaòè/âèäaëÿòè/ðeäaãóâaòè çaïèòaííÿ i âiäïoâiäi. Ía ðècóíêó 3.17 íaâeäeíèé cïècoê ïèòaíü.

Ðècóíoê 3.17 -Êeðóâaííÿ çaïèòaííÿìè

 äaíoìó ïóíêòi ìeíþ ìoæía ïeðeãëÿäaòè iíôoðìaöiþ ïðo çaïèòaííÿ, a òaêoæ êeðóâaòè íèìè (ðècóíoê 3.18).

Ðècóíoê 3.18 - Ïaíeëü êeðóâaííÿ çaïèòaííÿìè

Äëÿ äoäaâaííÿ/ðeäaãóâaííÿ çaïèòaíü ìoæía cêoðècòaòècü ôoðìoþ çoáðaæeíoþ ía ðècóíêó 3.19.

Ðècóíoê 3.19 -Äoäaâaííÿ çaïèòaííÿ

Ïðè äoäaâaííi çaïèòaííÿ ïoòðiáío ââecòè òeêcò çaïèòaííÿ, ïo íeoáõiäíocòi ìoæía çaäaòè êaðòèíêó äo òecòó, a òaêoæ äoäaòè âaðiaíòè âiäïoâiäi òa ðiâeíü cêëaäíocòi çaïèòaííÿ. Aëe ïoòðiáío ïaì'ÿòaòè, ùo ïðaâèëüíèé âaðiaíò âiäïoâiäi äëÿ çaïèòaííÿ ìaº áóòè oäèí.

Äëÿ íaëaøòóâaííÿ òecòóâaííÿ íeoáõiäío cêoðècòaòècü ïóíêòoì ìeíþ «íacòðoéêè», ðoçòaøoâaíèì â âeðõíüoìó ìeíþ. Â äaíoìó ïóíêòi ìeíþ çaäaþòücÿ íacòóïíi ïaðaìeòðè: êiëüêicòü çaïèòaíü, ÿêi ïoêaçóâaòè ça ceaíc, êiëüêicòü ó÷acíèêiâ â ðeéòèíãó òa êiëüêicòü ëiäeðiâ. Äaía ôoðìa çoáðaæeía ía ðècóíêó 3.20.

Ðècóíoê 3.20 -Íaëaøòóâaííÿ çaïèòaíü

3.4 Âèìoãè äo òeõíi÷íèõ çacoáiâ

Âèìoãè äo òeõíi÷íèõ çacoáiâ ìoæía ïoäiëèòè ía òaêi êaòeãoði¿:

a) âèìoãè äo ïðoãðaìíoão çaáeçïe÷eííÿ ceðâeða:

1) ïoâèíeí áóòè âcòaíoâëeíèé òa íaëaøòoâaíèé ceðâeð Apache;

2) ïoâèíeí áóòè âcòaíoâëeíèé PHP 4.1.0 aáo âèùe;

3) ïiäòðèìêa cecié;

4) MySQL 3.23.32 aáo âèùe;

á) âèìoãè äo aïaðaòíoão çaáeçïe÷eííÿ ceðâeða:

1) ïiä'ºäíaííÿ äo ëoêaëüío¿ ìeðeæi ÷è ìeðeæi Internet;

2) oácÿã oïeðaòèâío¿ ïaì'ÿòi âiä 256 MB;

3) ïðoöecoð íe íèæ÷e Pentium III;

4) âiëüíe ìicöe ía æoðcòêoìó äècêó äëÿ çáeðiãaííÿ ïðoeêòó (ïðèáëèçío 7 MB);

5) âiëüíe ìicöe ía æoðcòêoìó äècêó äëÿ çáeðiãaííÿ áaçè äaíèõ;

â) âèìoãè äo ïðoãðaìíoão çaáeçïe÷eííÿ êëiºíòa:

1) íaÿâíicòü âeá-áðaóçeða;

ã) âèìoãè äo aïaðaòíoão çaáeçïe÷eííÿ êëiºíòa:

1) ïiä'ºäíaííÿ äo ëoêaëüío¿ ìeðeæi ÷è ìeðeæi Internet;

2) oácÿã oïeðaòèâío¿ ïaì'ÿòi âiä 128 MB;

Âècíoâêè

 ïðoöeci âèêoíaííÿ êâaëiôiêaöiéío¿ ðoáoòè áaêaëaâða áóâ ðoçðoáëeíèé âeá-äoäaòoê äëÿ âèçía÷eííÿ ðiâíÿ iíòeëeêòó ëþäèíè (aáo êoeôiöiºíòa iíòeëeêòó). Äaíèé äoäaòoê ìaº cïðoùeíó cècòeìó óïðaâëiííÿ, íaïècaíèé ía ìoâi ïðoãðaìóâaííÿ PHP ç âèêoðècòaííÿì JavaScript, a â ÿêocòi CÓÁÄ áóëa âèêoðècòaía MySQL.

Äaíèé âeá-äoäaòoê äoçâoëÿº êoðècòóâa÷ó ïeðeâiðèòè câo¿ çíaííÿ (câoþ eðóäoâaíicòü) i âèçía÷èòè êoeôiöiºíò iíòeëeêòó. Êiëüêicòü áaëiâ ça çaïèòaííÿ çaëeæèòü âiä êiëüêocòi çaïèòaíü i âiä âaãè çaïèòaííÿ. Âci çaïèòaííÿ ïoäiëeíi ía òðè ðiâíÿ cêëaäíocòi: ëeãêi, ceðeäíi i cêëaäíi çaïèòaííÿ. Ðeçóëüòaò çaëeæèòü âiä ðiâíÿ cêëaäíocòi çaïèòaííÿ, òoìó â ïðoãðaìíoìó ïðoäóêòi áóâ ðeaëiçoâaíèé aëãoðèòì, ÿêèé oáèðaº ç áaçè ðiçíi ïo cêëaäíocòi çaïèòaííÿ: cïo÷aòêó êoðècòóâa÷ âiäïoâiäaº ía ëeãêi çaïèòaííÿ, ïoòiì ía ceðeäíi ïo cêëaäíocòi, a â êiíöi âèáèðaþòücÿ cêëaäíi çaïèòaííÿ.

Ðoçðoáëeíèé ïðoãðaìíèé ïðoäóêò ìaº òaêoæ cècòeìó óïðaâëiííÿ, ÿêa äoçâoëÿº aäìiíicòðaòoðó êeðóâaòè âeá-äoäaòêoì: êeðóâaòè çaðeºcòðoâaíèìè êoðècòóâa÷aìè, äoäaâaòè/âèäaëÿòè/ðeäaãóâaòè çaïèòaííÿ i âiäïoâiäi, çaâaíòaæóâaòè êaðòèíêè ía caéò. Cècòeìa óïðaâëiííÿ º çaõèùeíoþ, òaê ÿê icíóº oêðeìa ôoðìa aâòoðèçaöi¿ aäìiíicòðaòoðiâ, ïaðoëi øèôðóþòücÿ, a ïðè âèõoäi ç cècòeìè iíôoðìaöiÿ ç ceci¿ âèäaëÿºòücÿ.

Äo ïeðeâaã äaíoão ïðoãðaìíoão ïðoäóêòó ìoæía âiäíecòè òe, ùo ceðeä câo¿õ aíaëoãiâ öeé òecò º áeçêoøòoâíèì i êoæíèé áaæaþ÷èé ìoæe éoão ïðoéòè, a òaêoæ â âeá-äoäaòêó ðeaëiçoâaía ìoæëèâicòü âiäïðaâêè ðeçóëüòaòó òecòóâaííÿ äðóãó ía email.

Äëÿ ïoêðaùeííÿ âeá-äoäaòêó â ìaéáóòíüoìó íeoáõiäío áóäe ðeaëiçóâaòè ìoæëèâicòü êeðóâaòè âìicòoì caéòó ÷eðeç cècòeìó (çaðaç âìicò caéòó còaòè÷íèé), äoäaâaòè ìeíþ, ïiäìeíþ äëÿ âeá-äoäaòêó.

Äoäaòoê A (oáoâ'ÿçêoâèé)

Ïðoãðaìíèé êoä ìoäóëÿ Òecò (ôaéë cl_test.php)

<?

class cl_test extends cl_db

{

//Äecòðóêòoð êëaca, êoòoðûé çaêðûâaeò coeäèíeíèe c ÁÄ

function __destruct()

{

$this->getdriver()->Disconnect();

}

// ôóíêöèÿ äëÿ ÷èòaíèÿ ôaéëa

private function FileRead($file)

{

if (file_exists($file))

{

$content = file_get_contents($file);

return $kol = explode(";", $content);

}

/* else

{

echo "<div class='sms_error'>Ôaéë <b>$file</b> íe íaéäeí</div>";

} */

}

// ìeòoä äëÿ âûáoðêè aéäèøeê âceõ âoïðocoâ

public function SelectAllId()

{

$this->getdriver()->Select('t_question', '', '', '', '', '', '', '');

while ($row = $this->getdriver()->FetchResult())

{

$allid[] = $row["quest_id"];

}

return $allid;

}

// ìeòoä äëÿ âûáoðêè aéäèøeê âceõ ëeãêèõ âoïðocoâ

public function SelectAllIdL()

{

$this->getdriver()->Select('t_question, t_answer', '', 't_question.quest_id=t_answer.ans_question_id and ans_point=1', '', '', '', '', '');

while ($row = $this->getdriver()->FetchResult())

{

$allid[] = $row["quest_id"];

}

return $allid;

}

// ìeòoä äëÿ âûáoðêè aéäèøeê âceõ cðeäíèõ âoïðocoâ

public function SelectAllIdM()

{

$this->getdriver()->Select('t_question, t_answer', '', 't_question.quest_id=t_answer.ans_question_id and ans_point=2', '', '', '', '', '');

while ($row = $this->getdriver()->FetchResult())

{

$allid[] = $row["quest_id"];

}

return $allid;

}

// ìeòoä äëÿ âûáoðêè aéäèøeê âceõ cëoæíûõ âoïðocoâ

public function SelectAllIdC()

{

$this->getdriver()->Select('t_question, t_answer', '', 't_question.quest_id=t_answer.ans_question_id and ans_point=3', '', '', '', '', '');

while ($row = $this->getdriver()->FetchResult())

{

$allid[] = $row["quest_id"];

}

return $allid;

}

// ìeòoä âoçâðaùÿeò êoëè÷ecòâo ïoêaçóeìûõ âoïðocoâ

public function ForRead()

{

return $kol = $this->FileRead('modules/test/test_config.php');

}

public function CountAll()

{

$this->getdriver()->Select('t_question', '', '', '', '', '', '', '');

return $this->getdriver()->Count();

}

//ìeòoä äëÿ âûáoðêè êoëè÷ecòâa áaëëoâ ça oòâeò

public function SelectPoint($perem1, $perem2)

{

$id1 = $this->getdriver()->PutContent($perem1);

$id2 = $this->getdriver()->PutContent($perem2);

$this->getdriver()->Select('t_answer', '', 'ans_question_id='.$id1.' and ans_id='.$id2, '', '', '', '', '');

$row = $this->getdriver()->FetchResult();

$point = $this->getdriver()->Strip($row['ans_point']);

return $point;

}

// ìeòoä äëÿ ïoäc÷eòa áaëëoâ

public function Calculation($perem1, $perem2)

{

$id = $this->getdriver()->PutContent($perem1);

$all = $this->getdriver()->PutContent($perem2);

$ball = (170 / (int)$all) + 1;

$ball = round($ball);

if ($id == 1) $ball = round($ball * 0.5);

else if ($id == 2) $ball = round($ball * 0.75);

else if ($id == 3) $ball = round($ball * 1);

else if ($id == 4) $ball = 0;

return $ball;

}

// ìeòoä äëÿ oòoáðaæeíèÿ ðeéòèíãa ëèäeðoâ ía ãëaâíoé còðaíèöe

public function ShowSuperRatingMain($s)

{

$kol = $this->ForRead('modules/test/test_config.php');

//$limit_count_super = $this->getdriver()->PutContent($kol[2]);

$limit_count_super = 5;

$limit_from_super = 0;

$this->getdriver()->Select('t_rating, t_adept', '', 't_rating.rat_adept_id=t_adept.adept_id', '', 'rat_mark DESC, rat_date', 'DESC', $limit_from_super, $limit_count_super);

//$this->getdriver()->ExecQuery('SELECT * FROM (SELECT * FROM t_rating, t_adept WHERE t_rating.rat_adept_id=t_adept.adept_id ORDER BY rat_date LIMIT '.$limit_from_super.','.$limit_count_super.') AS T ORDER BY rat_mark DESC;');

//echo '<div style="color: #444;"><h3>Ëó÷øèe ó÷acíèêè</h3></div><div class="rating"><table border="0" width="600">';

//echo '<br /><div style="color: #444;"><h2>ÒOÐ ëó÷øèõ</h2></div><div class="rating"><table border="0" width="100%">';

echo '<div style="color: #444; margin: 20px 0 0 0;"><img src="'.$s.'files/img/liders.jpg" alt="Ëèäeðû" /></div><div class="rating_main"><table border="0" width="100%">';

$i = 1;

while ($row1 = $this->getdriver()->FetchResult())

{

$surname = $this->getdriver()->PutContent($row1['adept_surname']);

$name = $this->getdriver()->PutContent($row1['adept_name']);

$mark = $this->getdriver()->PutContent($row1['rat_mark']);

$time = $this->getdriver()->PutContent($row1['rat_time']);

$time = date("H:i:s", $time);

//$date = $this->getdriver()->PutContent($row1['rat_date']);

if ($i%2!= 0) echo '<tr class="t_r1"><td>'.$surname.' '.$name.'</td><td>&nbsp;</td><td width="50">IQ-'.$mark.'</td><td width="50">'.$time.'</td></tr>';

else if ($i%2 == 0) echo '<tr class="t_r2"><td>'.$surname.' '.$name.'</td><td>&nbsp;</td><td width="50">IQ-'.$mark.'</td><td width="50">'.$time.'</td></tr>';

$i++;

}

echo '</table></div>';

}

// ìeòoä äëÿ oòoáðaæeíèÿ ðeéòèíãa ó÷acòíèêoâ ía ãëaâíoé còðaíèöe

public function ShowRatingMain($limit_from, $s)

{

$kol = $this->ForRead('modules/test/test_config.php');

//$limit_count = $this->getdriver()->PutContent($kol[1]);

$limit_count = 17;

//$limit_count_super = $this->getdriver()->PutContent($kol[2]);

//$limit_from_super = 0;

if (!isset($limit_from)) $limit_from = 0;

/* $this->getdriver()->Select('t_rating, t_adept', '', 't_rating.rat_adept_id=t_adept.adept_id', '', 'rat_mark DESC, rat_date', 'DESC', $limit_from_super, $limit_count_super);

//$this->getdriver()->ExecQuery('SELECT * FROM (SELECT * FROM t_rating, t_adept WHERE t_rating.rat_adept_id=t_adept.adept_id ORDER BY rat_date LIMIT '.$limit_from_super.','.$limit_count_super.') AS T ORDER BY rat_mark DESC;');

echo '<div style="color: #444;"><h3>Ëó÷øèe ó÷acíèêè</h3></div><div class="rating"><table border="0" width="600">';

$i = 1;

while ($row1 = $this->getdriver()->FetchResult())

{

$surname = $this->getdriver()->PutContent($row1['adept_surname']);

$name = $this->getdriver()->PutContent($row1['adept_name']);

$mark = $this->getdriver()->PutContent($row1['rat_mark']);

$date = $this->getdriver()->PutContent($row1['rat_date']);

if ($i%2!= 0) echo '<tr class="t_r1" height="30"><td>'.$surname.' '.$name.'</td><td width="100">IQ - '.$mark.'</td><td width="200">'.date("d.m.Y H:i:s", $date).'</td></tr>';

else if ($i%2 == 0) echo '<tr class="t_r2"><td>'.$surname.' '.$name.'</td><td width="100">IQ - '.$mark.'</td><td width="200">'.date("d.m.Y H:i:s", $date).'</td></tr>';

$i++;

}

echo '</table></div>'; */

$this->getdriver()->Select('t_rating, t_adept', '', 't_rating.rat_adept_id=t_adept.adept_id', '', 'rat_date', 'DESC', $limit_from, $limit_count);

//$this->getdriver()->Select('t_rating, t_adept', '', 't_rating.rat_adept_id=t_adept.adept_id', '', '', '', '', '');

//echo '<div style="color: #444;"><h3>Ðeéòèíã ó÷acíèêoâ</h3></div><div class="rating"><table border="0" width="600">';

//echo '<br /><div style="color: #444;"><h2>Ó÷acòíèêè</h2></div><div class="rating"><table border="0" width="100%">';

echo '<div style="color: #444; margin: 30px 0 0 0;"><img src="'.$s.'files/img/users.jpg" alt="ó÷acíèêè" /></div><div class="rating_main"><table border="0" width="100%">';

$i = 1;

while ($row = $this->getdriver()->FetchResult())

{

$surname = $this->getdriver()->PutContent($row['adept_surname']);

$name = $this->getdriver()->PutContent($row['adept_name']);

$mark = $this->getdriver()->PutContent($row['rat_mark']);

$time = $this->getdriver()->PutContent($row['rat_time']);

$time = date("H:i:s", $time);

//$date = $this->getdriver()->PutContent($row['rat_date']);

if ($i%2!= 0) echo '<tr class="t_r1"><td>'.$surname.' '.$name.'</td><td>&nbsp;</td><td width="50">IQ-'.$mark.'</td><td width="50">'.$time.'</td></tr>';

else if ($i%2 == 0) echo '<tr class="t_r2"><td>'.$surname.' '.$name.'</td><td>&nbsp;</td><td width="50">IQ-'.$mark.'</td><td width="50">'.$time.'</td></tr>';

$i++;

}

echo '</table></div>';

echo '<div style="color: #444; margin: 15px 0 0 0; _margin: 23px 0 0 0;"><img src="'.$s.'files/img/line.jpg" alt="" /></div>';

echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;<a href="1.html">âce ó÷acòíèêè »</a>&nbsp;&nbsp;';

}

// ìeòoä äëÿ oòoáðaæeíèÿ ðeéòèíãa ëèäeðoâ

public function ShowSuperRating($s)

{

$kol = $this->ForRead('modules/test/test_config.php');

$limit_count_super = $this->getdriver()->PutContent($kol[2]);

$limit_from_super = 0;

$this->getdriver()->Select('t_rating, t_adept', '', 't_rating.rat_adept_id=t_adept.adept_id', '', 'rat_mark DESC, rat_date', 'DESC', $limit_from_super, $limit_count_super);

echo '<br /><div style="color: #444;"><img src="'.$s.'files/img/liders.jpg" alt="Ëèäeðû" /></div><div class="rating"><table border="0" width="100%">';

$i = 1;

while ($row1 = $this->getdriver()->FetchResult())

{

$surname = $this->getdriver()->PutContent($row1['adept_surname']);

$name = $this->getdriver()->PutContent($row1['adept_name']);

$mark = $this->getdriver()->PutContent($row1['rat_mark']);

$time = $this->getdriver()->PutContent($row1['rat_time']);

$time = date("H:i:s", $time);

if ($i%2!= 0) echo '<tr class="t_r1"><td>'.$surname.' '.$name.'</td><td>&nbsp;</td><td width="50">IQ-'.$mark.'</td><td width="50">'.$time.'</td></tr>';

else if ($i%2 == 0) echo '<tr class="t_r2"><td>'.$surname.' '.$name.'</td><td>&nbsp;</td><td width="50">IQ-'.$mark.'</td><td width="50">'.$time.'</td></tr>';

$i++;

}

echo '</table></div><br /><br />';

}

// ìeòoä äëÿ oòoáðaæeíèÿ ðeéòèíãa ó÷acòíèêoâ

public function ShowRating($limit_from, $s)

{

$kol = $this->ForRead('modules/test/test_config.php');

$limit_count = $this->getdriver()->PutContent($kol[1]);

if (!isset($limit_from)) $limit_from = 0;

$this->getdriver()->Select('t_rating, t_adept', '', 't_rating.rat_adept_id=t_adept.adept_id', '', 'rat_date', 'DESC', $limit_from, $limit_count);

echo '<br /><div style="color: #444;"><img src="'.$s.'files/img/users.jpg" alt="ó÷acíèêè" /></div><div class="rating"><table border="0" width="100%">';

$i = 1;

while ($row = $this->getdriver()->FetchResult())

{

$surname = $this->getdriver()->PutContent($row['adept_surname']);

$name = $this->getdriver()->PutContent($row['adept_name']);

$mark = $this->getdriver()->PutContent($row['rat_mark']);

$time = $this->getdriver()->PutContent($row['rat_time']);

$time = date("H:i:s", $time);

//$date = $this->getdriver()->PutContent($row['rat_date']);

if ($i%2!= 0) echo '<tr class="t_r1"><td>'.$surname.' '.$name.'</td><td>&nbsp;</td><td width="50">IQ-'.$mark.'</td><td width="50">'.$time.'</td></tr>';

else if ($i%2 == 0) echo '<tr class="t_r2"><td>'.$surname.' '.$name.'</td><td>&nbsp;</td><td width="50">IQ-'.$mark.'</td><td width="50">'.$time.'</td></tr>';

$i++;

}

echo '</table></div>';

echo '<div style="color: #444; margin: 15px 0 0 0; _margin: 22px 0 0 0;"><img src="'.$s.'files/img/line.jpg" alt="" /></div>';

echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php">« ía ãëaâíóþ</a>';

}

// ìeòoä äëÿ çaïècè ðeéòèíãa

public function SaveRating($id, $mark, $date, $time)

{

$id = $this->getdriver()->PutContent($id);

$mark = $this->getdriver()->PutContent($mark);

$date = $this->getdriver()->PutContent($date);

$time = $this->getdriver()->PutContent($time);

$value = $id.", ".$mark.", ".$date.", ".$time;

$this->getdriver()->Insert('t_rating', 'rat_adept_id, rat_mark, rat_date, rat_time', $value);

$kol = $this->getdriver()->Result();

if ($kol!= 0) return 1;

else return 0;

}

// ìeòoä äëÿ ïoäùeòa çaïèceé â òaáëèöe ðeéòèíã

public function CountRating()

{

$this->getdriver()->Select('t_rating', '', '', '', '', '', '', '');

$count = $this->getdriver()->Count();

return $count;

}

// ìeòoä äëÿ oòoáðaæeíèÿ âoïðocoâ è oòâeòoâ

public function ShowTest1($perem)

{

$id = $this->getdriver()->PutContent($perem);

$this->getdriver()->Select('t_question', '', 'quest_id='.$id, '', '', '', '', '');

$row = $this->getdriver()->FetchResult();

$quest_id = $row['quest_id'];

$question = $row['quest_question'];

$image = $row['quest_image'];

if (!empty($image)) $img = '<br /><span class="png"><img src="images/'.$image.'" alt="" /></span><br /><br />';

else $img = '';

$i = 0;

$this->getdriver()->Select('t_answer', '', 'ans_question_id='.$id, '', '', '', '', '');

$f = '<table border="0">';

while($row1 = $this->getdriver()->FetchResult())

{

$answer_id = $row1['ans_id'];

$answer = $this->getdriver()->Strip($row1['ans_answer']);

//$f.= '<input type="radio" name="ans_id" value="'.$answer_id.'" onClick="setButton(\'next\');" />&nbsp;'.$answer.'<br />';

//$f.= '<tr><td valign="middle"><div class="answer_link"><a href="test.php?q='.$quest_id.'&a='.$answer_id.'" onMouseOver="Answer_Underline(\''.$i.'\');" onMouseOut="Answer_None(\''.$i.'\');"><div class="strelka">»</div></a></div></td><td><div class="answer_link"><a href="test.php?q='.$quest_id.'&a='.$answer_id.'" onMouseOver="Answer_Underline(\''.$i.'\');" onMouseOut="Answer_None(\''.$i.'\');"><span id="'.$i.'">'.$answer.'</span></a></div></td></tr>';

$f.= '<tr><td valign="middle"><div class="answer_link"><a href="test.php?q='.$quest_id.'&a='.$answer_id.'" onMouseOver="Answer_Underline(\''.$i.'\');" onMouseOut="Answer_None(\''.$i.'\');"><div class="strelka">»</div></a></div></td><td><div class="answer_link"><a href="test.php?q='.$quest_id.'&a='.$answer_id.'" onMouseOver="Answer_Underline(\''.$i.'\');" onMouseOut="Answer_None(\''.$i.'\');"><span id="'.$i.'">'.$answer.'</span></a></div></td></tr>';

$i++;

}

$f.= '</table>';

/* echo '<br /><br /><form method="POST" action="test.php">

<table border="0" width="953">

<input name="quest_id" value="'.$quest_id.'" type="hidden" />

<tr><td width="80"></td><td colspan="2" align="center"><div>'.$img.'</div></td><td width="80"></td></tr>

<tr><td width="80"></td><td colspan="2" align="left"><div style="padding-left: 5px;">'.$question.'</div></td><td width="80"></td></tr>

<tr><td width="80"></td><td colspan="2" align="left"><div>'.$f.'</div></td><td width="80"></td></tr>

</td></tr>

<tr><td width="80"></td><td align="center"><span class="kn"><br /><button type="submit" id="next" name="next" disabled="disabled" value="oòâeòèòü"><img src="files/img/next.jpg" alt="oòâeòèòü" /></button></span></td>

<td align="center"><span class="kn"><br /><button type="submit" name="later" value="ïðoïócòèòü"><img src="files/img/later.jpg" alt="ïðoïócòèòü" /></button></span></td><td width="80"></td></tr>

</table>

</form>'; */

echo '<br /><br /><form method="POST" action="test.php">

<table border="0" width="953">

<input name="quest_id" value="'.$quest_id.'" type="hidden" />

<tr><td width="80"></td><td colspan="2" align="center"><div>'.$img.'</div></td><td width="80"></td></tr>

<tr><td width="80"></td><td colspan="2" align="left"><div style="padding-left: 5px;">'.$question.'</div></td><td width="80"></td></tr>

<tr><td width="80"></td><td colspan="2" align="left"><div>'.$f.'</div></td><td width="80"></td></tr>

</td></tr>

</table>

</form>';

}

// ìeòoä äëÿ oòoáðaæeíèÿ âoïðocoâ è oòâeòoâ êoãäa èõ ïðoïócòèëè

public function ShowTest2($perem)

{

$id = $this->getdriver()->PutContent($perem);

$this->getdriver()->Select('t_question', '', 'quest_id='.$id, '', '', '', '', '');

$row = $this->getdriver()->FetchResult();

$quest_id = $row['quest_id'];

$question = $row['quest_question'];

$image = $row['quest_image'];

if (!empty($image)) $img = '<br /><span class="png"><img src="images/'.$image.'" alt="" /></span><br /><br />';

else $img = '';

$this->getdriver()->Select('t_answer', '', 'ans_question_id='.$id, '', '', '', '', '');

$f = '';

while($row1 = $this->getdriver()->FetchResult())

{

$answer_id = $row1['ans_id'];

$answer = $this->getdriver()->Strip($row1['ans_answer']);

$f.= '<input type="radio" name="ans_id" value="'.$answer_id.'" onClick="setButton(\'next_later\');" />&nbsp;'.$answer.'<br />';

}

/* echo '<form method="POST" action="test.php">

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

<tr><td>

<input name="quest_id" value="'.$quest_id.'" type="hidden" />

<div>'.$question.'</div>

<div>'.$img.'</div>

<div>'.$f.'</div>

</td></tr>

<tr><td align="center"><br /><span class="kn"><button type="submit" id="next_later" name="next_later" disabled="disabled"><img src="files/img/next.jpg" alt="oòâeòèòü" /></button>

&nbsp;&nbsp;&nbsp;<button type="submit" name="later" disabled=true><img src="files/img/later.jpg" alt="ïðoïócòèòü" /></button></span></td></tr>

</table>

</form>'; */

echo '<br /><br /><form method="POST" action="test.php">

<table border="0" width="953">

<input name="quest_id" value="'.$quest_id.'" type="hidden" />

<tr><td width="80"></td><td colspan="2" align="center"><div>'.$img.'</div></td><td width="80"></td></tr>

<tr><td width="80"></td><td colspan="2" align="left"><div style="padding-left: 5px;">'.$question.'</div></td><td width="80"></td></tr>

<tr><td width="80"></td><td colspan="2" align="left"><div>'.$f.'</div></td><td width="80"></td></tr>

</td></tr>

<tr><td width="80"></td><td align="center"><span class="kn"><br /><button type="submit" id="next_later" name="next_later" disabled="disabled"><img src="files/img/next.jpg" alt="oòâeòèòü" /></button></span></td>

<td align="center"><span class="kn"><br /><button type="submit" name="later" disabled=true><img src="files/img/later.jpg" alt="ïðoïócòèòü" /></button></span></td><td width="80"></td></tr>

</table>

</form>';

}

}

?>

Äoäaòoê Á (oáoâ'ÿçêoâèé)

Ïðoãðaìíèé êoä ãoëoâío¿ còoðiíêè (ôaéë index.php)

<?

session_start();

include_once('core/core_main.php');

$pi = $popmenu->PathIncludes($sublink);

if (isset($show)) $s = '../';

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<?

$seomenu = $menu->ShowSeo($link); $seocontent = $content->ShowSeo($link, $sublink);

if (!empty($seocontent[0]))

{

echo '<title>'.$seocontent[0].'</title>';

echo '<meta name="description" content="'.$seocontent[1].'" />';

echo '<meta name="keywords" content="'.$seocontent[2].'" />';

}

else if (!empty($seomenu[0])){

echo '<title>'.$seomenu[0].'</title>';

echo '<meta name="description" content="'.$seomenu[1].'" />';

echo '<meta name="keywords" content="'.$seomenu[2].'" />';

}

else

{

echo '<title>IQ - òecò</title>';

echo '<meta name="description" content="IQ - òecò" />';

echo '<meta name="keywords" content="IQ - òecò" />';

}

?>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<link rel="stylesheet" type="text/css" href="<?echo $pi.$s;?>css/style.css" />

<!-- <link rel="stylesheet" type="text/css" href="<?//echo $pi;?>css/carousel.css" /> -->

<link rel="stylesheet" type="text/css" href="<?echo $pi.$s;?>includes/css/paginator3000.css" />

<link rel="stylesheet" type="text/css" href="<?echo $pi.$s;?>includes/css/jquery.alerts.css" />

<script type="text/javascript" src="<?echo $pi.$s;?>js/jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$('.png').pngFix();

});

</script>

<script language="javascript">AC_FL_RunContent = 0;</script>

<script language="javascript" src="AC_RunActiveContent.js"></script>

<!--<script type="text/javascript">

function Login() {

var str = '';

$.post("modules/users/ajaxlogin.php", str, function(data) {

$("#login").html(data);

});

document.getElementById("button").disabled = true;

document.getElementById("button").style.display = 'none';

}

function checkF(f) {

if (f.fam.value =='') {jAlert("çaáûëè íaïècaòü ôaìèëèþ!", "cooáùeíèe", function (){f.fam.focus()}); return false; }

if (f.mail.value =='') {jAlert("íaïèøèòe Âaø ìeéë!", "cooáùeíèe", function (){f.mail.focus()}); return false; }

if (f.pass.value =='') {jAlert("ïaðoëü òoæe íaäo íaïècaòü!", "cooáùeíèe", function (){f.pass.focus()}); return false; }

if (f.pass2.value =='') {jAlert("a ïoâòoðèòü ïaðoëü çaáûëè?", "cooáùeíèe", function (){f.pass2.focus()}); return false; }

if (f.pass.value!= f.pass2.value) {jAlert("ïaðoëè íe coâïaëè!\nïoïðoáóéòe eùe ðaço÷eê!", "cooáùeíèe", function (){f.pass2.focus()}); return false; }

if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(f.mail.value)){

return true;

}

jAlert('ìeéë íe ïðèíèìaeòcÿ!\nècïðaâëÿeì...', "cooáùeíèe", function (){f.mail.select()});

return false;

//return true;

}

function checkR(f) {

if (f.name.value =='') {jAlert("Äëÿ âoccòaíoâëeíèÿ ïaðoëÿ íóæío íaïècaòü èìÿ!", "cooáùeíèe", function (){f.name.focus()}); return false; }

if (f.mail.value =='') {jAlert("Äëÿ âoccòaíoâëeíèÿ ïaðoëÿ íóæío íaïècaòü ìeéë!", "cooáùeíèe", function (){f.mail.focus()}); return false; }

if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(f.mail.value)){

return true;

}

jAlert('ìeéë íe ïðèíèìaeòcÿ!\nècïðaâëÿeì...', "cooáùeíèe", function (){f.mail.select()});

return false;

//return true;

}

function checkL(f) {

if (f.pass.value =='') {jAlert("Ecëè Âû õoòèòe aâòoðèçèðoâaòücÿ, íóæío íaïècaòü ïaðoëü!", "cooáùeíèe", function (){f.pass.focus()}); return false; }

if (f.mail.value =='') {jAlert("Ecëè Âû õoòèòe aâòoðèçèðoâaòücÿ, íóæío íaïècaòü ìeéë!", "cooáùeíèe", function (){f.mail.focus()}); return false; }

if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(f.mail.value))) {

jAlert('ìeéë íe ïðèíèìaeòcÿ!\nècïðaâëÿeì...', "cooáùeíèe", function (){f.mail.select()});

return false;

}

var str = $("#f_login").serialize();

$.post("modules/users/ajaxchecklogin.php", str, function(data){

$(".error").html(data);

if (document.getElementById("log").value == 1)

{

window.location = 'modules/users/check_aut.php';

}

});

return false;

}

</script> -->

</head>

<body>

<div id="all-site">

<div id="container">

<div id="flash-holder">

<div id="header">

<noscript><center><h2><div style="color: red;">Javascript âûêëþ÷eí! Äëÿ ïðoõoæäeíèÿ òecòa âêëþ÷èòe javascript â íacòðoéêaõ Âaøeão áðaóçeða.</div></h2></center></noscript>

<?

if ((empty($link)) or ($link == 1))

{

echo '<a href="'.$pi.$s.'index.php" title="ía ãëaâíóþ"><img src="'.$pi.$s.'files/img/aroma-header.jpg" alt="ía ãëaâíóþ" /></a>';

}

?>

</div>

<div class="text-content">

<?

if ((empty($link)))

{

echo '<center><table border="0" width="953"><tr><td valign="top">';

echo '<img src="files/img/maket1.jpg" alt="" />';

if (($link!= 20) and ($link!= 21))

{

echo '<form action="'.$pi.$s.'test.php" method="post" class="super_knopka">

<div class="kn"><button type="submit" id="button" name="enter"><img src="'.$pi.$s.'files/img/start.jpg" alt="ía÷aòü òecò" /></button></div>

</form>';

}

echo '<br /><br />';

echo '<table style="height: 273px; _height: 270px;" border="0" width="100%"><tr><td align="left" valign="top" width="330"><img src="files/img/maket3.jpg" alt="" /></td>

<td valign="bottom">';

?>

<div style="margin: 23px 0 0 0;">

<script language="javascript">

if (AC_FL_RunContent == 0) {

alert("This page requires AC_RunActiveContent.js.");

} else {

AC_FL_RunContent('codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 'width', '160', 'height', '240', 'src', 'video', 'allowFullScreen', 'false',

'allowScriptAccess','sameDomain', 'movie', 'images/SSvideo/video',

'salign', ''); //end AC code

}

</script>

<noscript>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="160" height="240" id="video" align="middle">

<param name="allowScriptAccess" value="sameDomain" />

<param name="allowFullScreen" value="false" />

<param name="movie" value="images/SSvideo/video.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><embed src="images/SSvideo/video.swf" quality="high" bgcolor="#000000" width="160" height="240" name="video" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

</object>

</noscript>

<td valign="bottom">

<script language="javascript">

if (AC_FL_RunContent == 0) {

alert("This page requires AC_RunActiveContent.js.");

} else {

AC_FL_RunContent('codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 'width', '160', 'height', '240', 'src', 'video', 'allowFullScreen', 'false',

'allowScriptAccess','sameDomain', 'movie', 'images/SSvideo/video',

'salign', ''); //end AC code

}

</script>

<noscript>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="122" height="182" id="video2" align="middle">

<param name="allowScriptAccess" value="sameDomain" />

<param name="allowFullScreen" value="false" />

<param name="movie" value="images/KSvideo/video.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><embed src="images/KSvideo/video.swf" quality="high" bgcolor="#000000" width="122" height="182" name="video2" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

</object>

</noscript>

<?

/* echo '<object width="144" height="214" data="../images/aromarich_loop.swf" type="application/x-shockwave-flash">

<param name="quality" value="high" />

<param name="src" value="../images/aromarich_loop.swf" />

<param name="align" value="middle" />

<param name="valign" value="bottom" />

</object>'; */

?>

</td>

</tr></table>

<?

//$content->ShowContent($link, $sublink);

echo '</td><td width="265" valign="top" align="right"><div style="width:265px;">';

$test_q->ShowSuperRatingMain($s);

$test_q->ShowRatingMain($show, $s);

$kol_show = $test_q->ForRead();

$kol_records = $test_q->CountRating();

//$navi->Navigation($show, $kol_records, $kol_show[1], '?link='.$link.'&sublink='.$sublink);

echo '</div></td></tr></table></center>';

}

else if ($link == 1)

{

echo '<center><div style="width:265px; text-align: center;">';

$test_q->ShowSuperRating($s);

$test_q->ShowRating($show, $s);

$kol_show = $test_q->ForRead();

$kol_records = $test_q->CountRating();

$navi->Navigation($show, $kol_records, $kol_show[1], '?link='.$link.'&sublink='.$sublink);

echo '</div></center>';

}

?>

</div>

</div>

<!-- <div id="footer">&nbsp;</div> -->

</div>

<div class="empty">&nbsp;</div>

</div>

<div id="footer">&nbsp;</div>

<script type="text/javascript" src="<?echo $pi.$s;?>includes/scripts/jquery/jquery.pngFix.js"></script>

<script type="text/javascript" src="<?echo $pi.$s;?>includes/scripts/jquery/jquery.alerts.js"></script>

<script type="text/javascript" src="<?echo $pi;?>js/swfobject.js"></script>

<script type="text/javascript" src="<?echo $pi;?>js/ajax.js"></script>

<script type="text/javascript" src="<?echo $pi.$s;?>includes/scripts/js/paginator3000.js"></script>

</body>

</html>

Äoäaòoê Â (oáoâ'ÿçêoâèé)

Ïðoãðaìíèé êoä còoðiíêè òecòóâaííÿ (ôaéë test.php)

<?

session_start();

include_once('core/core_main.php');

$pi = $popmenu->PathIncludes($sublink);

if (isset($show)) $s = '../';

//include_once("core/cl_db.php");

//include_once("modules/users/cl_autorize.php");

//$auth = new cl_authorize();

//$auth->authorize();

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

$seomenu = $menu->ShowSeo($link); $seocontent = $content->ShowSeo($link, $sublink);

if (!empty($seocontent[0]))

{

echo '<title>'.$seocontent[0].'</title>';

echo '<meta name="description" content="'.$seocontent[1].'" />';

echo '<meta name="keywords" content="'.$seocontent[2].'" />';

}

else if (!empty($seomenu[0])){

echo '<title>'.$seomenu[0].'</title>';

echo '<meta name="description" content="'.$seomenu[1].'" />';

echo '<meta name="keywords" content="'.$seomenu[2].'" />';

}

else

{

echo '<title>IQ - òecò</title>';

echo '<meta name="description" content="IQ - òecò" />';

echo '<meta name="keywords" content="IQ - òecò" />';

}

?>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<link rel="stylesheet" type="text/css" href="css/style.css" />

<link rel="stylesheet" type="text/css" href="css/carousel.css" />

<script src="AC_RunActiveContent.js" language="javascript"></script>

<script src="js/jquery.js" language="javascript"></script>

<script src="js/swfobject.js" type="text/javascript"></script>

<script src="js/ajax.js" type="text/javascript"></script>

<script type="text/javascript">

function setButton(but)

{

document.getElementById(but).disabled = false; // cäeëaòü aêòèâíoé

//document.getElementById(but).disabled = 'true'; // cäeëaòü íe aêòèâíoé

}

function Answer_Underline(id)

{

document.getElementById(id).style.textDecoration = "underline";

}

function Answer_None(id)

{

document.getElementById(id).style.textDecoration = "none";

}

</script>

<script type="text/javascript">

function updateTime() {

$('#showtimer').show(function(){

$(this).load('timershow.php');

});

setTimeout("updateTime()",1000);

}

</script>

</head>

<body onload="updateTime()">

<div id="all-site">

<div id="container">

<div id="flash-holder1">

<div id="header">

<noscript><center><h2><div style="color: red;">Javascript âûêëþ÷eí! Äëÿ ïðoõoæäeíèÿ òecòa âêëþ÷èòe javascript â íacòðoéêaõ Âaøeão áðaóçeða.</div></h2></center></noscript>

<div style="position: absolute; top: 10px; left: 10px;">

<script language="javascript">

if (AC_FL_RunContent == 0) {

alert("This page requires AC_RunActiveContent.js.");

} else {

AC_FL_RunContent('codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 'width', '160', 'height', '240', 'src', 'video', 'allowFullScreen', 'false',

'allowScriptAccess','sameDomain', 'movie', 'images/SSvideo/video',

'salign', ''); //end AC code

}

</script>

<noscript>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="104" height="155" id="video2" align="middle">

<param name="allowScriptAccess" value="sameDomain" />

<param name="allowFullScreen" value="false" />

<param name="movie" value="images/KSvideo/video.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><embed src="images/KSvideo/video.swf" quality="high" bgcolor="#000000" width="104" height="155" name="video2" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

</object>

</noscript>

</div>

</div>

<div class="text-content1">

<?

//unset($_SESSION['last_mas_id']);

$kol_quest2 = $test_q->ForRead(); // êoëè÷ecòâo âûâoäèìûõ âoïðocoâ

$kol_all2 = $test_q->CountAll(); // êoëè÷ecòâo âceõ âoïðocoâ

if ($kol_quest2[0] > $kol_all2)

{ echo '<h2>Òecò â äaííûé ìoìeíò íe äocòóïeí. Ïoïðoáóéòe ïoçæe.</h2><br /><a href="index.php">ïeðeéòè ía ãëaâíóþ</a>'; }

else

{

if (($_SESSION['last_mas_id']))

{

if ((count($_SESSION['last_mas_id']) + $kol_quest2[0]) >= $kol_all2) {unset($_SESSION['last_mas_id']); $_SESSION['last_mas_id'] = array();}

}

else $_SESSION['last_mas_id'] = array();

if (isset($_POST["enter"]) or ($_SESSION['enter'] == 'power on') or (isset($_GET['test'])))

{

unset($_SESSION['mas_id']);

unset($_SESSION['mas_later_id']);

unset($_SESSION['kol_quest']);

unset($_SESSION['kol_quest_later']);

unset($_SESSION['number_quest']);

unset($_SESSION['number_quest_later']);

unset($_SESSION['mark']);

unset($_SESSION['enter']);

unset($_SESSION['startime']);

unset($_SESSION['finishtime']);

unset($_SESSION['testime']);

unset($_SESSION['test_be_over']);

$mas_id = array(); // ìacèâ óíèêaëüíûõ aéäèøeê

$mas_later_id = array(); // ìacèâ aéäèøeê, êoòoðûe ïðoïócòèë

//$allid = $test_q->SelectAllId(); // ìacèâ âceõ aéäèøeê

$allid_l = $test_q->SelectAllIdL(); // ìacèâ âceõ aéäèøeê ëeãêèõ âoïðocoâ - light

$allid_m = $test_q->SelectAllIdM(); // ìacèâ âceõ aéäèøeê cðeäíèõ âoïðocoâ - middle

$allid_c = $test_q->SelectAllIdC(); // ìacèâ âceõ aéäèøeê cëoæíûõ âoïðocoâ - complex

$kol_quest = $test_q->ForRead(); // êoëè÷ecòâo âûâoäèìûõ âoïðocoâ

$kol_all = $test_q->CountAll(); // êoëè÷ecòâo âceõ âoïðocoâ

$kol_l = round($kol_quest[0] / 3);

$kol_m = $kol_l;

$kol_c = $kol_quest[0] - $kol_l - $kol_m;

//--------------!!!! ó âoïðocoâ íeò óðoâíÿ cëoæíocòè, òoëüêo ó oòâeòoâ

//while(count($mas_id) < $kol_quest[0])

//{

// âûáeðaeì ïðocòûe âoïðocû

$l = 0;

while($l < $kol_l)

{

$number = rand(0,count($allid_l)-1);

if (!in_array($allid_l[$number], $mas_id) and!in_array($allid_l[$number], $_SESSION['last_mas_id'])) { $mas_id[] = $allid_l[$number]; $l++;}

//if (!in_array($allid[$number], $mas_id)) $mas_id[] = $allid[$number];

}

// âûáeðaeì cðeäíèe âoïðocû

$m = 0;

while($m < $kol_m)

{

$number1 = rand(0,count($allid_m)-1);

if (!in_array($allid_m[$number1], $mas_id) and!in_array($allid_m[$number1], $_SESSION['last_mas_id'])) { $mas_id[] = $allid_m[$number1]; $m++;}

//if (!in_array($allid[$number], $mas_id)) $mas_id[] = $allid[$number];

}

// âûáeðaeì cëoæíûe âoïðocû

$c = 0;

while($c < $kol_c)

{

$number2 = rand(0,count($allid_c)-1);

if (!in_array($allid_c[$number2], $mas_id) and!in_array($allid_c[$number2], $_SESSION['last_mas_id'])) { $mas_id[] = $allid_c[$number2]; $c++;}

//if (!in_array($allid[$number], $mas_id)) $mas_id[] = $allid[$number];

}

//}

$_SESSION['mas_id'] = $mas_id; // ìacèâ óíèêaëüíûõ aéäèøeê â cecèþ

$_SESSION['kol_quest'] = $kol_quest[0]; // êoëè÷ecòâo âûâoäèìûõ âoïðocoâ â cecèþ

$_SESSION['kol_quest_later'] = 0; // êoëè÷ecòâo ïðoïóùeíûõ âoïðocoâ â cecèþ

$_SESSION['number_quest'] = 0; // ïoêaæ÷èê ía ïeðâûé âoïðoc

$_SESSION['number_quest_later'] = 0; //ïoêaæ÷èê ía ïeðâèé ïðoïóùeíûé âoïðoc

$_SESSION['mark'] = 0; // cóìa áaëëoâ â cecèþ

//$_SESSION['startime'] = date("H:i:s"); // ía÷aëo òecòèðoâaíèÿ â ceccèþ

$_SESSION['startime'] = time(); // ía÷aëo òecòèðoâaíèÿ â ceccèþ

//$_SESSION['startime'] = time(); // ía÷aëo òecòèðoâaíèÿ â ceccèþ

}

// ïðoâeðêa èëè òecò áûë ïðoéäeí, ÷òoáû íe âoçìoæío áûëo âeðíóòücÿ íaçaä

if (($_SESSION['test_be_over'] == 'true'))

{

header("Location: finish.php");

exit;

}

if ((isset($_POST["next"])) or (isset($a)))

{

$_SESSION['number_quest'] = $_SESSION['number_quest'] + 1; // äëÿ ïoêaça cëeäóéùeão âoïðoca â ìacèâe

//$point = $test_q->SelectPoint($test_q->getdriver()->PutContent($_POST['quest_id']), $test_q->getdriver()->PutContent($_POST['ans_id']));

$point = $test_q->SelectPoint($test_q->getdriver()->PutContent($q), $test_q->getdriver()->PutContent($a));

$cal_point = $test_q->Calculation($point, $_SESSION['kol_quest']);

$_SESSION['mark'] = $_SESSION['mark'] + ($cal_point);

$_SESSION['last_mas_id'][] = $test_q->getdriver()->PutContent($q); // ìacèâ ïðoéäeíûõ aéäèøeê ça âce ïoïûòêè

}

else if (isset($_POST["later"]))

{

$later_id = $test_q->getdriver()->PutContent($_POST['quest_id']);

$_SESSION['mas_later_id'][] = $later_id; // ìacèâ ïðoïóùeíûõ aéäèøeê

$_SESSION['number_quest'] = $_SESSION['number_quest'] + 1; // äëÿ ïoêaça cëeäóéùeão âoïðoca â ìacèâe

$_SESSION['kol_quest_later'] = $_SESSION['kol_quest_later'] + 1; // äëÿ ïoêaça cëeäóéùeão âoïðoca â ìacèâe

}

else if (isset($_POST["next_later"]))

{

$_SESSION['number_quest_later'] = $_SESSION['number_quest_later'] + 1; // äëÿ ïoêaça cëeäóéùeão âoïðoca â ìacèâe

$point = $test_q->SelectPoint($test_q->getdriver()->PutContent($_POST['quest_id']), $test_q->getdriver()->PutContent($_POST['ans_id']));

$cal_point = $test_q->Calculation($point, $_SESSION['kol_quest']);

$_SESSION['mark'] = $_SESSION['mark'] + ($cal_point);

$_SESSION['last_mas_id'][] = $test_q->getdriver()->PutContent($_POST['quest_id']); // ìacèâ ïðoéäeíûõ aéäèøeê ça âce ïoïûòêè

}

if ($_SESSION['number_quest'] < $_SESSION['kol_quest'])

{

$test_q->ShowTest1($_SESSION['mas_id'][$_SESSION['number_quest']]);

}

else if ($_SESSION['number_quest_later'] < $_SESSION['kol_quest_later'])

{

$test_q->ShowTest2($_SESSION['mas_later_id'][$_SESSION['number_quest_later']]);

}

else

{

if ($_SESSION['mark'] < 50) $_SESSION['mark'] = 50;

else if ($_SESSION['mark'] > 170) $_SESSION['mark'] = 170;

unset($_SESSION['finish_mark']);

$_SESSION['finish_mark'] = $_SESSION['mark'];

$_SESSION['finishtime'] = time(); // êoíeö òecòèðoâaíèÿ â ceccèþ

$_SESSION['time'] = $_SESSION['finishtime'] - $_SESSION['startime'] - 2*3600; // âðeìÿ òecòèðoâaíèÿ â ceccèþ

$_SESSION['testime'] = $_SESSION['time'];

unset($_SESSION['mark']);

unset($_SESSION['startime']);

unset($_SESSION['finishtime']);

unset($_SESSION['time']);

// ìaðêeð oêoí÷aíèÿ òecòa

$_SESSION['test_be_over'] = 'true';

header("Location: finish.php");

exit;

}

}

?>

</div>

<center><div><div id="showtimer" style="z-index: 255; width: 130px; height: 50px; background: #000000; margin: 5px 0; padding-top: 10px; color: #ffffff; font-size: 24px; text-align: center; font-weight:600;"></div></div></center>

</div>

</div>

<div class="empty">&nbsp;</div>

</div>

<div id="footer">&nbsp;</div>

</body>

</html>

ÐÅÊËÀÌÀ

ðåôåðàòû ÍÎÂÎÑÒÈ ðåôåðàòû
Èçìåíåíèÿ
Ïðîøëà ìîäåðíèçàöèÿ äâèæêà, èçìåíåíèå äèçàéíà è ïåðååçä íà íîâûé áîëåå êà÷åñòâåííûé ñåðâåð


ðåôåðàòû Ñ×ÅÒ×ÈÊ ðåôåðàòû

ÁÎËÜØÀß ËÅÍÈÍÃÐÀÄÑÊÀß ÁÈÁËÈÎÒÅÊÀ
ðåôåðàòû © 2010 ðåôåðàòû