ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Код Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π’Π°ΠΊ получаСтся Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ сайт mzcoding.com 3ΠΉ Ρ€Π°Π· мСняСт Π΄ΠΎΠΌΠ΅Π½ ΠΈ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈ всСгда ΠΏΡ€ΠΈ запускС Π½ΠΎΠ²ΠΎΠ³ΠΎ сайта я обновлял ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΠΎ написанию Π›ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° Π½Π° PHP! Π’ Π΄Π°Π»Π΅ΠΊΠΎΠΌ 2010 это Π±Ρ‹Π» простой Π›Πš Π½Π° PHP 5.0, Π² 2014 это Π±Ρ‹Π» Π›Πš 2.0 Π³Π΄Π΅ ΠΌΡ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ языка ΠΈ ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ нСсколько плюшСк. И Π²ΠΎΡ‚ настал 3ΠΉ Ρ€Π°Π· Π² этой ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ напишСм ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с рСгистрациСй, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Π›Πš с ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ! Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ вСсти с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ PHP7 ΠΈ Bootstrap 4, Π° Ρ‚Π°ΠΊ-ΠΆΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² symfony.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ создадим ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ lk, Π΄Π°Π»Π΅Π΅ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΏΠΎ адрСсу Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΈ Π²Π²Π΅Π΄Π΅ΠΌ:

Π£ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ глобально установлСн composer, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Ρ‚ΡƒΡ‚.

Π”Π°Π»Π΅Π΅ composer просит ввСсти Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°! Π― Π½Π°Π·ΠΎΠ²Ρƒ Π΅Π³ΠΎ mzcoding/lk. Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΅Ρ‰Π΅ нСсколько ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² описаниС, Π°Π²Ρ‚ΠΎΡ€ (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° своС усмотрСниС). ΠžΠΏΡ†ΠΈΡ Minimum Stability Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ dev. Π”Π°Π»Π΅Π΅ оставляйтС значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ!

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π’ ΠΊΠΎΠ½Ρ†Π΅ Ρƒ вас спросят, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ Π»ΠΈΠ±ΠΎ зависимости? Π’Π²ΠΎΠ΄ΠΈΠΌ no. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ„Π°ΠΉΠ» composer.json со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ установим Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ установим http ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΡ‚ symfony. Π’Π²Π΅Π΄Π΅ΠΌ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

ПослС установки Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, установим Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½, это Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ зависимостСй DI. Π’ качСствС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² symfony, pimple

Для установки Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° наш Ρ„Π°ΠΉΠ» composer.json. Если всС Π²Π΅Ρ€Π½ΠΎ Π² сСкции require ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:

ВСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ!

Π”Π°Π²Π°ΠΉΡ‚Π΅ сразу послС сСкции require, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ΅ΠΊΡ†ΠΈΡŽ autoload, Ρ‚Π°ΠΌ ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Π³Π΄Π΅ composer ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ нашСго прилоТСния ΠΈ автоматичСски ΠΈΡ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ, для всСх этих Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Π΅Π΄ΠΈΠ½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½. Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ„Π°ΠΉΠ»Π° composer.json Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’Π°ΠΊ-ΠΆΠ΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ сразу создадим всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ.

ВсС наши приготовлСния Π³ΠΎΡ‚ΠΎΠ²Ρ‹! Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создадим Ρ„Π°ΠΉΠ» index.php со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ сСссию, Π΄ΡƒΠΌΠ°ΡŽ Ρ‚ΡƒΡ‚ всС понятно. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ наши зависимости:

ΠŸΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° ΠΈ устанавливаСм Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ константу Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ try-catch Ρ‚Π΅ΠΌ самым отлаТивая возникшиС Π²Ρ‹ΡˆΠ΅ Π² ΠΊΠΎΠ΄Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали свой Ρ‚ΠΈΠΏ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ LkException.

Π’ Π±Π»ΠΎΠΊΠ΅ try ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ (ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ) всС запросы (requests), Π° Ρ‚Π°ΠΊ-ΠΆΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ зависимостСй (DI).

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ добавляСм Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

ЭкзСмпляр класса Session (Π΄Π°Π½Π½Ρ‹ΠΉ класс опишСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅)

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ добавлСния. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ factory нашСго ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ соотвСтствСнно ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ постоянно ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ сСссию ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² наш ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π‘Π” (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PDO). Π’ нашСм случаС ΠΌΡ‹ присваиваСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π±Π°Π·Π΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PDO.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π‘Π” PostgreSql.

И Π² Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ процСсс Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄:

Π’ΡƒΡ‚ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ init класса Router ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π² наш ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² конструктор класса.

Π§Ρ‚ΠΎ-ΠΆ Π΄Π°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс Router, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ процСссом.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„Π°ΠΉΠ» Router.php Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ app:

Π’ΡƒΡ‚ всС просто, ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° (action) ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Π½Ρ‹. Допустим ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚, url Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

http://localhost:8000/index.php?c=contact&a=create

БистСма ΡƒΠ²ΠΈΠ΄Π΅Π² Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ create() Ρƒ класса ContactController.php.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΠΈΠ»ΠΈΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс сСссий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ использовали Π²Ρ‹ΡˆΠ΅! Π­Ρ‚ΠΎΡ‚ класс просто прСдставляСт собой ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ Π½Π°Π΄ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ массивом сСссий. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Classes ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚ΡƒΠ΄Π° Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Session.php.

Π¨Π°Π³ 4: ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄Π°ΠΌΠΏ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ/Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ!

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ опишСм систСму Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ! НачнСм с ΠΌΠΎΠ΄Π΅Π»ΠΈ Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Models Π±Π°Π·ΠΎΠ²ΡƒΡŽ модСль Model.php:

Π”ΡƒΠΌΠ°ΡŽ здСсь всС понятно ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΌΡ‹ просто описываСм Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для всСх ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ!

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ создадим модСль Users:

Когда Ρƒ нас описана модСль ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Π»ΠΎΠ³ΠΈΠΊΠΈ прилоТСния ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ систСму рСгистрации/Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ!

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΊΠ°ΠΊ ΠΈ с модСлями ΠΌΡ‹ создадим Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Controllers ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π΅Π³ΠΎ Ρ„Π°ΠΉΠ» BaseController.php:

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ всС ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠ΅ зависимости (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ сСрвСра ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°)

ΠœΠ΅Ρ‚ΠΎΠ΄ getConfig() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ наш Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ view() ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π²Ρ‹Π²ΠΎΠ΄ Ρ„Π°ΠΉΠ»ΠΎΠ² прСдставлСния ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² Π½ΠΈΡ….

Π”Π°Π»Π΅Π΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… Π·Π° Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ!

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ RegisterController.php:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ прСдставлСниС, ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ это просто Ρ„ΠΎΡ€ΠΌΠ° рСгистрации register.phtml:

И слСдом Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ LoginController.php

Π€ΠΎΡ€ΠΌΠ° Π²Ρ…ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ login.phtml:

Π”Π°Π»Π΅Π΅ сразу-ΠΆΠ΅ создадим ΠΈ опишСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° Π²Ρ‹Π²ΠΎΠ΄ Π›Πš AccountController.php.

И Ρ‚Π°ΠΊ-ΠΆΠ΅ посмотрим Π½Π° Π²ΡŠΡŽΡ…Ρƒ account.php:

Если Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ…Π΅Π»ΠΏΠ΅Ρ€Ρ‹) ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ _hpswd ΠΈΠ»ΠΈ dbhelper, Π΄Π°Π²Π°ΠΉΡ‚Π΅ опишСм Ρ„Π°ΠΉΠ» helpers.php

МодСли стран, Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΈ Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², Π° Ρ‚Π°ΠΊ-ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΡƒ администратора Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ сами ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ВсС вопросы ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ профиля ΠΈΠ»ΠΈ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° MVC, PHP ΠΈ SQL

Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π”ΠΎΠ±Π°Π²ΠΈΠ»ΠΈΡΡŒ Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… поля – ava ΠΈ role. ПолС ava Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Π°Π²Π°Ρ‚Π°Ρ€ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ. ПолС role Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ статус ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: 0 – ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, 1 – администратор, 2 – младший ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€, 3 – ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ статус Π³ΠΎΡΡ‚ΡŒ.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ» routes.php, ΠΎΠ½ находится Π² ΠΏΠ°ΠΏΠΊΠ΅ config:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ для страницы профиля, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ UserController.php, ΠΎΠ½ находится Π² ΠΏΠ°ΠΏΠΊΠ΅ controllers. Π‘Π½Π°Ρ‡Π°Π»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ checkAdminId провСряСм, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Ссли Π΄Π°, Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ id_user вСрнСтся Π΅Π³ΠΎ id. Π”Π°Π»Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getUserById, ΠΏΠΎ id записанному Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ id_user, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π‘Π” ΠΈ записываСм ΠΈΡ… Π² ΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ user. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² полях Ρ„ΠΎΡ€ΠΌΡ‹.

Если Π½Π° страницС с Ρ„ΠΎΡ€ΠΌΠΎΠΉ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ», Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ POST ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ ΠΈ провСряСм, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½ Π»ΠΎΠ³ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π½Π΅ занят Π»ΠΈ ΠΎΠ½. Если Π΄Π°, Ρ‚ΠΎ провСряСм, Π²Ρ‹Π±Ρ€Π°Π» Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π°Π²Π°Ρ‚Π°Ρ€, Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ выставлСн Π°Π²Π°Ρ‚Π°Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π—Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° функция editUserProfile, ΠΎΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Если ΠΆΠ΅ Π°Π²Π°Ρ‚Π°Ρ€ Π²Ρ‹Π±Ρ€Π°Π½ Π² Ρ„ΠΎΡ€ΠΌΠ΅, Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ editUserProfileImg. Ѐункция Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π°Π²Π°Ρ‚Π°Ρ€Π° Π½Π° сСрвСр ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π΅ΠΏΠ΅Ρ€ΡŒ опишСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ models Π² Ρ„Π°ΠΉΠ»Π΅ News.php:

Ѐункция editUserProfile. Она соСдиняСтся с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ поля с Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Ѐункция editUserProfileImg. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ downloadAvatar Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½Π° сСрвСр ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ava_url имя с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ. Π”Π°Π»Π΅Π΅ выполняСт SQL запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обновляСт ΠΏΠΎΠ»Π΅ с Π°Π²Π°Ρ‚Π°Ρ€ΠΊΠΎΠΉ ΠΈ Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

Ѐункция downloadAvatar. Π­Ρ‚Π° функция ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° сСрвСр, Ρ€Π°Π·Π½ΠΈΡ†Π° лишь Π² ΠΏΡƒΡ‚ΠΈ сохранСния изобраТСния:

Ѐункция checkAdminId провСряСт, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сущСствования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ сСссии user. Если пСрСмСнная сущСствуСт, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ½Π°Ρ‡Π΅ Π΄Π΅Π»Π°Π΅ΠΌ Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚ Π½Π° страницу Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ:

Ѐункция getIserById ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ id:

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ страницу с Ρ„ΠΎΡ€ΠΌΠΎΠΉ профиля. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π³ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅ΠΌΡƒ сообщСниС, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½. Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ обычная страница с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ошибок ΠΈ проставлСниСм Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² поля.

Полям e-mail ΠΈ статус ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ½ΠΈ содСрТат ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€. ПослС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, страница Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° ΠΈ Ссли Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ сообщСниС ΠΎΠ± этом.

Π’ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ эта Ρ„ΠΎΡ€ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π’Π°ΠΊ ΠΊΠ°ΠΊ наши ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Ρ‹, Π΄Π° ΠΈ просто для удобства, создаСм Ρ„ΠΎΡ€ΠΌΡƒ смСны пароля. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΅Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² NewsController.php:

Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ, сравнили, Ρ€Π°Π²Π½Ρ‹ Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π±Ρ‹Π» Π½Π΅ ΠΊΠΎΡ€ΠΎΡ‡Π΅ ΡˆΠ΅ΡΡ‚ΠΈ символов. Π”Π°Π»Π΅Π΅ Ссли ошибок Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ generateHash, которая ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ (эта функция Π±Ρ‹Π»Π° Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π° Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎ созданию рСгистрации). Π—Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ editPassword (Π±Ρ‹Π»Π° рассмотрСна Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ) мСняСм ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ. Π€ΠΎΡ€ΠΌΠ° страницы рСдактирования пароля Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‚Π°ΠΊ:

Π’ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ смСны Π»ΠΎΠ³ΠΈΠ½Π° ΠΈ Π°Π²Π°Ρ‚Π°Ρ€Π°. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ downloadAvatar, ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π°Π²Π°Ρ‚Π°Ρ€ΠΊΠΈ вмСстС с Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°ΠΌΠΈ, Π° это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π›ΡƒΡ‡ΡˆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ downloadImg ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π³ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π°Π²Π°Ρ‚Π°Ρ€ΠΊΡƒ.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΎ MVC

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΡΡ‚Π°Ρ авторизация Π½Π° PHP.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ напишСм ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ авторизация Π½Π° web страницС. ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.Π΄. ВсС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎ ΠΈ просто.

Допустим Ρƒ нас Π΅ΡΡ‚ΡŒ страница index.php Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ. Для ограничСния доступа ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ Π»ΠΈ сСссии для этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Ссли ΠΏΡ€ΠΎΡ‰Π΅, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„Π°ΠΉΠ» ΠΈ запишСм Π² Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ :

header(Β«Location: login.phpΒ»); # ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° страницу login.php

Ну ΠΈ Π·Π° ΠΎΠ΄Π½ΠΎ создадим страницу Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ login.php :

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ этапом ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹. ΠšΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½\ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ прям Π² этом ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅. ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π² Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ md5(). А Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ…Π΅Ρˆ пароля ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ echo md5(β€˜mypass’); 😉 Π”Π΅Π»Π°Ρ‚ΡŒ это ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π½Π°ΠΆΠ°Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹.

Π£ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΅ΡΡ‚ΡŒ имя (Β«submitΒ»), Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ post. БоотвСтствСнно, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, сущСствуСт Π»ΠΈ элСмСнт submit Π² массивС $_POST. Если Π΅ΡΡ‚ΡŒ β€” ΠΊΠ½ΠΎΠΏΠΊΠ° Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π°, ΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствия ΠΏΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ присланных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ½Π°Ρ‡Π΅ β€” Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ.

Π’ Ρ„Π°ΠΉΠ» Ρ„ΠΎΡ€ΠΌΡ‹ (login.php) Π² самоС Π½Π°Ρ‡Π°Π»ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ :

Когда создаСтся сСссия, PHP Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ строку.ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ сСссии хранятся Π½Π° сСрвСрС Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.
Π‘Π΅Ρ€Π²Π΅Ρ€ отправляСт Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊΡƒΠΊΠΈ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ PHPSESSID, для хранСния строки ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии.
Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, сСссия PHP закрываСтся автоматичСски. Π˜Π½Π°Ρ‡Π΅ сСрвСр Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ сСссию ΠΏΠΎ истСчСнии Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Если Π²Ρ‹ нашли ΠΎΡˆΠΈΠ±ΠΊΡƒ, поТалуйста, Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ тСкста ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Ctrl+Enter.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

БСзопасный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° PHP

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΌΠΈΠ½ΠΈ-ΡΡ‚Π°Ρ‚ΡŒΡ написана для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π²ΠΎΠΊΡ€ΡƒΠ³: Ρ„ΠΎΡ€ΡƒΠΌΡ‹, ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ‹, гостСвыС ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Ρ‚.Π΄. ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. МоТно Π΄Π°ΠΆΠ΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΡ‡Ρ‚ΠΈ нСобходимая функция ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сайта (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли это Π½Π΅ домашняя страничка Васи ΠŸΡƒΠΏΠΊΠΈΠ½Π° ΠΈΠ»ΠΈ Π½Π΅ визитная ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°, ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ нСбольшой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ). БСгодня я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ со всСми Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ это всС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

1. МодСль (ΠΊΠ»ΠΈΠ΅Π½Ρ‚)
РСгистрация
β€” Π»ΠΎΠ³ΠΈΠ½ (a-z0-9)
β€” ΠΏΠ°Ρ€ΠΎΠ»ΡŒ
Π’Ρ…ΠΎΠ΄
β€” Π»ΠΎΠ³ΠΈΠ½
β€” ΠΏΠ°Ρ€ΠΎΠ»ΡŒ
Cookie
β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΡŽΠ·Π΅Ρ€Π°
β€” Ρ…ΡΡˆ

МодСль (сСрвСр)
MySQL
Π’Π°Π±Π»ΠΈΡ†Π° users
user_id (int(11))
user_login (Varchar(30))
user_password (varchar(32))
user_hash (varchar(32))
user_ip (int(10)) ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 0

ΠŸΡ€ΠΈ рСгистрации Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ΡŒΡΡ Π»ΠΎΠ³ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ(Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ md5 ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠΈ)

ΠŸΡ€ΠΈ авторизация, ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ΡŒΡΡ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Ссли ΠΎΠ½ΠΈ Π²Π΅Ρ€Π½Ρ‹, Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡŒΡΡ случайная строка, которая Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡŒΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ‚ΡŒΡΡ Π² Π‘Π” Π² строку user_hash. Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ΡŒΡΡ IP адрСс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ(Π½ΠΎ это Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ сидит Ρ‡Π΅Ρ€Π΅Π· Proxy, Π° Ρƒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ IP динамичСский… Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сам Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ удобство). Π’ ΠΊΡƒΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΡ‹ записываСм Π΅Π³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Π΄Π΅Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈ сгСнСрированный hash.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π°Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΊΡƒΠΊΠ°Ρ… Ρ…Π΅Ρˆ случайно сгСнСрированной строки, Π° Π½Π΅ Ρ…Π΅Ρˆ пароля?
1. Из-Π·Π° Π½Π΅Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ программиста, Π²ΠΎ всСй систСмС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ‹Ρ€ΠΊΠΈ, воспользовавшийсь этими Π΄Ρ‹Ρ€ΠΊΠ°ΠΌΠΈ, Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Ρ…Π΅Ρˆ пароля ΠΈΠ· Π‘Π” ΠΈ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² свои ΠΊΡƒΠΊΠΈ, Ρ‚Π΅ΠΌ самым ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ. Π’ нашСм ΠΆΠ΅ случаС, Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ…Π΅Ρˆ пароля Π½Π΅ Ρ‡Π΅ΠΌ Π½Π΅ смоТСт ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ…Π°ΠΊΠ΅Ρ€Ρƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ½ Π΅Π³ΠΎ Π½Π΅ смоТСт(тСорСтичСски это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π½Π° это ΠΎΠ½ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π½Π΅ ΠΎΠ΄ΠΈΠ½ мСсяц, Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π³ΠΎΠ΄) Π° Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим Ρ…Π΅ΡˆΠ΅ΠΌ Π΅ΠΌΡƒ Π½Π΅Π³Π΄Π΅, вСдь Ρƒ нас ΠΏΡ€ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ…Π΅Ρˆ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΊ IP ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

2. Если Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠΊ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ трояном Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ…Π΅Ρˆ, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ смоТСт(Ρ€Π°Π·Π²Π΅ Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π΅ΡˆΠΈΠ» ΠΏΡ€ΠΈΠ½Π΅Π±Ρ€Π΅Ρ‡ΡŒ своСй Π±Π΅Π·ΠΎΠΏΠ°ΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΠ» привязку ΠΊ IP ΠΏΡ€ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ).

2. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

— Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ `users`

CREATE TABLE `users` (

`user_id` int(11) unsigned NOT NULL auto_increment,

`user_login` varchar(30) NOT NULL,

`user_password` varchar(32) NOT NULL,

`user_hash` varchar(32) NOT NULL,

`user_ip` int(10) unsigned NOT NULL default ‘0’,

PRIMARY KEY (`user_id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

register.php

// Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° рСгситрации Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

$err [] = «Π›ΠΎΠ³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π±ΡƒΠΊΠ² английского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° ΠΈ Ρ†ΠΈΡ„Ρ€» ;

$err [] = «Π›ΠΎΠ³ΠΈΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ мСньшС 3-Ρ… символов ΠΈ Π½Π΅ большС 30» ;

# провСряСм, Π½Π΅ сущСстуСт Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ

$err [] = «ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с Ρ‚Π°ΠΊΠΈΠΌ Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ ΡƒΠΆΠ΅ сущСствуСт Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…» ;

# Если Π½Π΅Ρ‚ ошибок, Ρ‚ΠΎ добавляСм Π² Π‘Π” Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

# Π£Π±Π΅Ρ€Π°Π΅ΠΌ лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅

header ( «Location: login.php» ); exit();

print «ΠŸΡ€ΠΈ рСгистрации ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ошибки:
» ;

login.php

// Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

# Ѐункция для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ случайной строки

$chars = «abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789» ;

# ВытаскиваСм ΠΈΠ· Π‘Π” запись, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π»ΠΎΠ³ΠΈΠ½ Ρ€Π°Π²Π½ΡΠ΅Ρ‚ΡŒΡΡ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ

# Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ случайноС число ΠΈ ΡˆΠΈΡ„Ρ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ

$hash = md5 ( generateCode ( 10 ));

# Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²Ρ‹Π±Ρ€Π°Π» привязку ΠΊ IP

# ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ IP Π² строку

# ЗаписываСм Π² Π‘Π” Π½ΠΎΠ²Ρ‹ΠΉ Ρ…Π΅Ρˆ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ IP

# ΠŸΠ΅Ρ€Π΅Π°Π΄Ρ€Π΅ΡΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π° страницу ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ нашСго скрипта

header ( «Location: check.php» ); exit();

print «Π’Ρ‹ Π²Π²Π΅Π»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³ΠΈΠ½/ΠΏΠ°Ρ€ΠΎΠ»ΡŒ» ;

check.php

// Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ

print «Π₯ΠΌ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ» ;

print «Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΊΡƒΠΊΠΈ» ;

Для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ„ΠΎΡ€ΠΌΡ‹ Π»ΠΎΠ³ΠΈΠ½Π° ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ captcha.ru target=Β»_blank»>ΠΊΠ°ΠΏΡ‡Ρƒ.

Π₯ΠΎΡ‡Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ здСсь я рассматривал Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΡΠ½ΠΎΠ²ΠΎΠ½ΡƒΡŽ Π½Π° cookies, Π½Π΅ стоит Π² коммСнтариях ΠΊΡ€ΠΈΡ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ сСссии Π»ΡƒΡ‡ΡˆΠ΅/ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈ Ρ‚.Π΄. Бпасибо.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHP ΠΈ MySQL ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ систСму рСгистрации ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Π₯отя Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ пособий Π½Π° эту Ρ‚Π΅ΠΌΡƒ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ расскаТСт ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ систСмы Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ рСгистрации ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с использованиСм PHP ΠΈ MySQL для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ!

РСсурсы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этим руководством:

Π§Ρ‚ΠΎ ΠΌΡ‹ создаСм

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Настройка сСрвСра

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой хостинг с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ PHP ΠΈ MySQL ( Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ PHP вСрсии 5.3 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ ΠΈ MySQL вСрсии 4.1.3 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ ).

Π¨Π°Π³ 1 – MySQL

ВзглянитС Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ SQL :

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ auto_increment для автоматичСского назначСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² систСмС.

Π¨Π°Π³ 2 β€” Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рисункС Π½ΠΈΠΆΠ΅:

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ даст Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π¨Π°Π³ 3 β€” CSS

К этому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²Ρ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π¨Π°Π³ 4 β€” ΠœΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ элСмСнты

Π—Π°Ρ‚Π΅ΠΌ снова ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ эту Ρ‡Π°ΡΡ‚ΡŒ Π²ΠΎ всСх Ρ‚Ρ€Π΅Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… PHP ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:

Π¨Π°Π³ β€” 5 ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠΎΠ΄Π²Π°Π»Π°, ΠΏΠΎΡ€Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ». НазовитС Π΅Π³ΠΎ constants.php ΠΈ скопируйтС Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅, ΠΌΡ‹ создали константы ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π¨Π°Π³ β€” 6 ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Ρ„Π°ΠΉΠ»Π° register.php

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Ρƒ производится ΠΈΡ… валидация. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ message ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈΠ»ΠΈ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ дСйствия.

Π¨Π°Π³ β€” 7 ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Ρ„Π°ΠΉΠ»Π° login.php

Π¨Π°Π³ β€” 8 ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Ρ„Π°ΠΉΠ»Π° intropage.php

Π¨Π°Π³ β€” 9 ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Ρ„Π°ΠΉΠ»Π° logout.php

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» logout.php :

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΊΠΎΠ΄Ρ‹ ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ ΠΏΠΎ ΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ, Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΎΠ± этом Π² коммСнтариях.

НадСюсь, Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ эта ΡΡ‚Π°Ρ‚ΡŒΡ. Увидимся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·!

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

>
>
else <
$message = «That username already exists! Please try another one!»;
>
>
else <
$message = «All fields are required!»;
>
>
?>

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

md5 ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ нашСл Π² ΠΊΠΎΠ΄Π΅ 🙁

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ систСма Π΄ΠΎΠ½Π°Ρ‚ΠΎΠ² Π½Π° сайтС, ΠΊΠ°ΠΊ Π΅Ρ‘ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΊΠ°ΠΊ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π΅Π½Ρƒ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ Π²Π°Π»ΡŽΡ‚Ρƒ, Π±ΡƒΠ΄Ρƒ ΠΎΡ‡Π΅Π½ΡŒ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½!

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π΄ ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π±Π΄ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±ΡƒΠΊΠ²Ρƒ i
Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€
mysql_query ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ°Ρ
новая mysqli_query
Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Ρ‚ΡƒΡ‚ https://www.php.net/manual/ru/
Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€ https://phpcodechecker.com

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста шаг 4. Π—Π°Ρ‡Π΅ΠΌ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° header.php? А Π² footer.php Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚.

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

поТауйста ΡΠΊΠΈΠ½ΡŒΡ‚Π΅ исходник. Π½Π΅ ΠΌΠΎΠ³Ρƒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΊΠΎΠ΄ΠΎΠΌ!

ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° php

И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого всё Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΡ€ писал Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *