ΠΊΠΎΠ΄ Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ° 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. ΠΠ°Π»Π΅Π΅ ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ!
Π ΠΊΠΎΠ½ΡΠ΅ Ρ Π²Π°Ρ ΡΠΏΡΠΎΡΡΡ, Ρ ΠΎΡΠΈΡΠ΅ Π»ΠΈ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅ Π»ΠΈΠ±ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ? ΠΠ²ΠΎΠ΄ΠΈΠΌ 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
Π‘Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π΄ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:
ΠΠΎΠ±Π°Π²ΠΈΠ»ΠΈΡΡ Π΄Π²Π° Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ»Ρ β 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 ΠΈ ΡΡΠ°ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ½ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ. ΠΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΡΡΡΠ°Π½ΠΈΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ΅Π½Π° ΠΈ Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ, ΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ.
Π Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΡΡΠ° ΡΠΎΡΠΌΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΡΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Ρ, Π΄Π° ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΎΡΠΌΡ ΡΠΌΠ΅Π½Ρ ΠΏΠ°ΡΠΎΠ»Ρ. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΅Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π² NewsController.php:
Π ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΡ ΠΏΠ°ΡΠΎΠ»ΠΈ, ΡΡΠ°Π²Π½ΠΈΠ»ΠΈ, ΡΠ°Π²Π½Ρ Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠ°ΡΠΎΠ»Ρ Π±ΡΠ» Π½Π΅ ΠΊΠΎΡΠΎΡΠ΅ ΡΠ΅ΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ°Π»Π΅Π΅ Π΅ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρ, ΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ generateHash, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΈΡΡΡΠ΅Ρ ΠΏΠ°ΡΠΎΠ»Ρ (ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ»Π° ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Π° Π² ΡΡΠ°ΡΡΠ΅ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ). ΠΠ°ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ editPassword (Π±ΡΠ»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ) ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½Π° Π½ΠΎΠ²ΡΠΉ. Π€ΠΎΡΠΌΠ° ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ°ΠΊ:
Π Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΌΠ΅Π½Ρ Π»ΠΎΠ³ΠΈΠ½Π° ΠΈ Π°Π²Π°ΡΠ°ΡΠ°. Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ downloadAvatar, ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π°Π²Π°ΡΠ°ΡΠΊΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°ΠΌΠΈ, Π° ΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΡΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΈ downloadImg ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π³ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΏΡΡΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π°Π²Π°ΡΠ°ΡΠΊΡ.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ ΠΏΡΠΎ MVC
ΠΡΠΎΡΡΠ°Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π° PHP.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π° web ΡΡΡΠ°Π½ΠΈΡΠ΅. ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Ρ.Π΄. ΠΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ.
ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΠ° index.php Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ³ΡΡ Π·Π°Ρ ΠΎΠ΄ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ. ΠΠ»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΅ΡΡΡ Π»ΠΈ ΡΠ΅ΡΡΠΈΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅, Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΌ Π² Π½Π΅Π³ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ :
header(Β«Location: login.phpΒ»); # ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ login.php
ΠΡ ΠΈ Π·Π° ΠΎΠ΄Π½ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΡΠ°Π½ΠΈΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ login.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 ΠΈ MySQL ( ΡΠΎΠ»ΡΠΊΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ PHP Π²Π΅ΡΡΠΈΠΈ 5.3 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ ΠΈ MySQL Π²Π΅ΡΡΠΈΠΈ 4.1.3 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ ).
Π¨Π°Π³ 1 β MySQL
ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ SQL :
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ auto_increment Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
Π¨Π°Π³ 2 β Π Π°Π·ΠΌΠ΅ΡΠΊΠ°
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅:
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π΄Π°ΡΡ Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π¨Π°Π³ 3 β CSS
Π ΡΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π²Ρ ΡΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΡΡΠΎ ΠΈ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ°ΡΡΠΈ.
Π¨Π°Π³ 4 β ΠΠ½ΠΎΠ³ΠΎΡΠ°Π·ΠΎΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
ΠΠ°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° ΡΠ΄Π°Π»ΠΈΡΠ΅ ΡΡΡ ΡΠ°ΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΡΠ΅Ρ ΡΠ°ΠΉΠ»Π°Ρ PHP ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
Π¨Π°Π³ β 5 ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠΎΠ΄Π²Π°Π»Π°, ΠΏΠΎΡΠ° ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». ΠΠ°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ constants.php ΠΈ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅, ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
Π¨Π°Π³ β 6 ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»Π° register.php
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ Π² Π±Π°Π·Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΈΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ message ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΈΠ»ΠΈ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Π¨Π°Π³ β 7 ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»Π° login.php
Π¨Π°Π³ β 8 ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»Π° intropage.php
Π¨Π°Π³ β 9 ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»Π° logout.php
Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ» logout.php :
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΈΠ΄Π΅ΠΈ ΠΏΠΎ ΠΈΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ, Π±ΡΠ΄Ρ ΡΠ°Π΄ ΡΡΠ»ΡΡΠ°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ .
ΠΠ°Π΄Π΅ΡΡΡ, Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ ΡΡΠ° ΡΡΠ°ΡΡΡ. Π£Π²ΠΈΠ΄ΠΈΠΌΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·!
>
>
else <
$message = «That username already exists! Please try another one!»;
>
>
else <
$message = «All fields are required!»;
>
>
?>
md5 ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊ ΠΈ Π½Π΅ Π½Π°ΡΠ΅Π» Π² ΠΊΠΎΠ΄Π΅ 🙁
ΠΠ±ΡΡΡΠ½ΠΈΡΠ΅ Π½ΠΎΠ²ΠΈΡΠΊΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ½Π°ΡΠΎΠ² Π½Π° ΡΠ°ΠΉΡΠ΅, ΠΊΠ°ΠΊ Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΠΈ ΠΊΠ°ΠΊ ΠΌΠ΅Π½ΡΡΡ ΡΠ΅Π½Ρ Π½Π° ΠΈΠ³ΡΠΎΠ²ΡΡ Π²Π°Π»ΡΡΡ, Π±ΡΠ΄Ρ ΠΎΡΠ΅Π½Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½!
Π³Π΄Π΅ Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±Π΄ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π±Π΄ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π±ΡΠΊΠ²Ρ i
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
mysql_query ΡΡΡΠ°ΡΠ΅Π²ΡΠ°Ρ
Π½ΠΎΠ²Π°Ρ mysqli_query
ΡΠΈΡΠ°Π΅ΠΌ ΡΡΡ https://www.php.net/manual/ru/
Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ https://phpcodechecker.com
ΠΠ±ΡΡΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° ΡΠ°Π³ 4. ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π½Π° header.php? Π Π² footer.php ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΏΠΈΡΠ°ΠΉΡ.
ΠΏΠΎΠΆΠ°ΡΠΉΡΡΠ° ΡΠΊΠΈΠ½ΡΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ. Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ!
Π ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΡ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, ΠΊΠ°ΠΊ Π°Π²ΡΠΎΡ ΠΏΠΈΡΠ°Π» Π² ΡΡΠ°ΡΡΠ΅: