php ΡΠΊΡΠΈΠΏΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ°ΠΉΡ php
ΠΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° PHP + Javascript
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°
ΠΠ΅Π΄Π°Π²Π½ΠΎ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ Π²ΠΏΠΎΠ»Π½Π΅, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ: Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π ΠΌΠΎΡΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π±ΡΠ»ΠΎ: ΡΠΎΡΠΎ ΡΠΎΠ²Π°ΡΠ°, Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ. ΠΠ»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ²Π°Ρ ΡΠΊΡΠΈΠ½ΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°:
ΠΠ΄Π΅Ρ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·, ΡΠ΅ΡΠ΅Π½ΠΎ Π±ΡΠ»ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡ Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ: ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΡΠΎΡΠΎ-ΠΈΠΊΠΎΠ½ΠΊΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π° ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, Π° ΠΏΡΠΈ Π½Π΅ΡΡΠΏΠ΅Ρ Π΅ β Β«errorΒ». Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π°, ΡΠΎΡΠΎ-ΠΈΠΊΠΎΠ½ΠΊΠ° Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΎ, Π° Π² ΡΠΊΡΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠΎΡΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π΅Ρ ΠΈΠΌΡ, Π° ΠΏΡΠΈ Π½Π΅ΡΡΠΏΠ΅Ρ Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΡΠΎ-ΠΈΠΊΠΎΠ½ΠΊΡ ΠΈ ΠΏΡΡΡΠΎΠ΅ ΡΠΊΡΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠΎΡΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ΅Π΅ Π·Π° ΠΈΠΌΡ ΡΠΎΡΠΎ. Π’Π΅ΠΊΡΡΠΎΠ²Π°Ρ ΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΡΠΎΡΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² [ΠΈΠΌΡΠ€ΠΎΡΠΎ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΠ΅ΡΠ°Π»ΠΈ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠ¨Ρ] β ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎ: ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠΎΠ²Π°ΡΠΎΠ² ΠΏΡΠΈ ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ. ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, AJAX Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΉΠ»Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ target ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΊΠ°ΠΆΠ΅ΠΌ ΡΠΊΡΡΡΡΠΉ ΡΡΠ΅ΠΉΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΡΠ°ΠΊ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ HTML, PHP ΠΈ Javascript. ΠΠΎΠ΅Ρ Π°Π»ΠΈ:
1. ΠΠ΅ΡΡΡΠ°Π΅ΠΌ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠΎΡΠΌΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΡΠΎ. ΠΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ input, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΏΡΡΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ css:
2. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠΊΡΡΡΡΠΉ iframe, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ:
3. ΠΠ΅ΡΡΡΠ°Π΅ΠΌ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ²Π°ΡΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
3. ΠΠΈΡΠ΅ΠΌ PHP-ΠΊΠΎΠ΄ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π°:
ΠΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° CodeIgniter, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠ΄ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ, Π½ΠΎ Π² ΡΠ΅Π»ΠΎΠΌ, ΡΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΈΠ· ΡΠΎΡΠΌΡ ΡΠ°ΠΉΠ», Π΅ΡΠ»ΠΈ Π²ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π² Π½Π°Ρ iframe Π΅Π³ΠΎ ΠΈΠΌΡ, Π΅ΡΠ»ΠΈ Π½Π΅Ρ β Β«errorΒ».
4. ΠΠΈΡΠ΅ΠΌ Javascript, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ:
ΠΠΎΡ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΡΠ°ΠΊΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ, ΡΠ΄Π΅Π»Π°Ρ Π΄Π΅ΠΌΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Ρ ΡΡΠ΄Π° ΡΡΡΠ»ΠΊΡ, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π΄Π°ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ°ΠΉΡ: PHP, AJAX, HTML5 ΠΈ DragβnβDrop
Π‘ΠΊΡΡΠ½ΡΠ΅ ΡΠΎΡΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ β ΠΏΡΠΎΡΠ»ΡΠΉ Π²Π΅ΠΊ. HTML5 Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ DragβnβDrop, Π° AJAX ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ Π±Π΅Π· ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΡΠΌΠΎΠ³ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ» Π½Π° ΡΠ°ΠΉΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π° PHP, Π½ΠΎ Ρ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ HTML5 ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ β Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΈ ΠΎ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ , ΠΈ ΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡΡ .
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° PHP
ΠΠ°ΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌΡ:
ΠΠ»Ρ ΡΠ΅Π³Π° ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ:
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ΅Π³ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π°ΡΡΠΈΠ±ΡΡ multiple ΠΈ ΠΈΠΌΡ file[] β ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ div, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·ΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°Π»Π΅Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠΈΠ»ΠΈ CSS:
Π Π²ΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ:
Π‘Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° ΡΠ°ΠΉΡ. ΠΠ½Π°ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Π²Π·Π»ΠΎΠΌΡΠΈΠΊΠΈ Π·Π°Π³ΡΡΠ·ΡΡ Π½Π° ΡΠ°ΠΉΡ PHP-ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΠΌΠΎΠ³ΡΡ ΠΈΡ Π·Π°ΠΏΡΡΡΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ:
ΠΡΠ»ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΎΠ². ΠΠ°ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ move_uploaded_file ΡΠ°ΠΉΠ» ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ.
Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Ρ ΠΎΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π΅Π½ ΠΈ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΡΡΡ:
Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠΎΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΡΠ°ΠΉΠ»Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»ΠΈ ΡΠ³ΡΠΎΠ·Ρ Π΄Π»Ρ ΡΠ°ΠΉΡΠ° ΠΈ Π½Π΅ Π²Π°Π»ΡΠ»ΠΈΡΡ Π±Π΅Π· Π΄Π΅Π»Π°.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ°ΠΉΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ AJAX
ΠΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ JavaScript, ΡΠΎΡΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Π΅Π΅ ΠΈ ΠΊΡΠ°ΡΠΈΠ²Π΅Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΠ΅Π· AJAX, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠΈ:
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΠΉΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° FormData, Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ Π½Π°ΡΠ°Π»Π°ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ°, ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΉΠ».
ΠΠΎΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° AJAX:
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°Π»ΡΡΠ΅ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ:
ΠΡΠΎ Π»ΠΈΡΡ ΠΌΠ°Π»Π°Ρ ΡΠ°ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ PHP β ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ·Π½Π°ΡΡ ΠΎ Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· ΠΊΡΡΡΠ° Β«PHP-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΈΠ»ΡΠ½Π°Ρ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±Π°Π·Π° Π·Π°ΠΊΡΠ΅ΠΏΠ»ΡΠ΅ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ, Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ.
ΠΠΈΡΠ΅Ρ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ³ΡΡ. ΠΠ΅ΡΡΠ°Π΅Ρ ΠΎΡΠΊΡΡΡΡ ΡΠ²ΠΎΡ ΡΡΡΠ΄ΠΈΡ ΠΈ Π²ΡΠΏΡΡΠΊΠ°ΡΡ Π»Π°ΠΌΠΏΠΎΠ²ΡΠ΅ RPG.
PHP. ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ
ΠΡΠ°ΠΊ, ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΡ Π½Π΅ ΡΠΈΡΠ°Π»ΠΈ ΡΡΠ°ΡΡΡ Β«Π§ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅ΡΒ», ΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π½Π°ΡΠ°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ Π½Π΅Ρ.
Π Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ ΠΎΠ±ΡΠΈΠ΅ Π½ΡΠ°Π½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ! Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ:
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Ρ ΡΡΠ°Π·Ρ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π±Π΅Π· Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΈΠ·ΡΡΠΊΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ .
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ Π±ΡΠ΄ΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅:
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
ΠΠΎΠ΄Π° ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΠΏΡΠ³Π°ΠΉΡΠ΅ΡΡ! ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΠ° Π²Π°ΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠΎΡΠΌΠ° Π±ΡΠ»Π° ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π°, ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ can_upload. ΠΡΠ»ΠΈ ΠΎΠ½Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»Π°, ΡΡΠΎ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π½Π°ΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ, ΡΠΎ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ make_upload. ΠΠ½Π°ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΠ΄Π΅ΡΡ Π²ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΊΠΎ ΠΈ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ. Π‘Ρ Π΅ΠΌΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ, Π° ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΈ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ can_upload ΠΈ make_upload!
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΉΠ» functions.php
Π‘Π½Π°ΡΠ°Π»Π° Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΡ ΡΠ»ΠΎΠ² ΠΏΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ make_upload, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° ΠΏΡΠΎΡΠ΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π° Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ mt_rand(0, 10000), Ρ.Π΅, ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΡ 0 Π΄ΠΎ 10000. ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Ρ ΡΠ°ΠΉΠ»Π° Π±ΡΠ»ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π΄Π²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π²ΡΠΎΡΠ°Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΡΡ.
ΠΡΡΠ°ΡΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Π΄Π°Π»ΠΈΡΡ ΡΠ΅Π·ΠΎΠ½Π½ΡΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, Π° Π³Π΄Π΅ ΠΆΠ΅ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π³ php Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π·Π½Π°ΡΠΈΡ, Π²Ρ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΈΡΠ°Π»ΠΈ ΡΡΠ°ΡΡΡ Β«ΠΡΠΈΠ±ΠΊΠ° headers already sentΒ»!
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π΄Π»Ρ Π½Π°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ can_upload.
ΠΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π³ΠΎΠ²ΠΎΡΡ ΠΈ Π²ΡΡ! Π‘ΠΊΡΠΈΠΏΡ Π½Π°Π΄ΡΠΆΠ½ΡΠΉ, Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΉ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ.
Π Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π»ΠΎΠΆΠΈΡΡ Π½Π° Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ!
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. Π§Π°ΡΡΡ ΠΏΠ΅ΡΠ²Π°Ρ
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ. Π ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΠ°ΠΌΡΠ΅ Π°Π·Ρ, Π² Π²ΡΡΡ-Π»ΠΈ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»Π°ΠΌ. ΠΠΎ ΡΠ΅ΠΌ Π½Π΅ΠΌΠ΅Π½Π΅Π΅ β ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ PHP-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ.
Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ. Π€ΠΎΡΡΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Β«Π°Π²Π°ΡΠ°ΡΡΒ». Π€ΠΎΡΠΎΠ³Π°Π»Π΅ΡΠ΅ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ. Π‘ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΈΠ΄Π΅ΠΎ, ΠΈ Ρ.Π΄. ΠΠ»ΠΎΠ³ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΎΠΏΡΡΡ ΠΆΠ΅ Π°Π²Π°ΡΠ°ΡΠΊΠΈ ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π§Π°ΡΡΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π΅Π· ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π½Π°Π΄Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΡΠ°Π»ΠΈ Π½Π°ΡΡΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π½Π° PHP.
ΠΡΠΎΠ²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ. ΠΡΠΈ Β«Π΄ΡΡΡΒ» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ ΠΎΠ±ΡΠΈΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ Π·Π°ΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ° ΡΡΠ°ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΠ± ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Β«Π΄ΡΡΠ°Ρ Β» Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π°Ρ ΠΈΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ.
ΠΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ
Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ:
www.scanit.be/uploads/php-file-upload-examples.zip.
ΠΡΠ»ΠΈ ΠΡ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅, Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΡΠ΅ΡΠ΅ΠΉ. ΠΡΠΈΠΌΠ΅ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ ΠΈΠ·Π²Π½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌ.
ΠΠ±ΡΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π°
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ β ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΠΊΠ°Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ±Π΅ ΡΠ°ΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ (upload1.php):
ΠΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΎΡΠΌΡ:
form name =»upload» action =»upload1.php» method =»POST» ENCTYPE =»multipart/form-data» >
Select the file to upload: input type =»file» name =»userfile» >
input type =»submit» name =»upload» value =»upload» >
form >
ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Perl-ΡΠΊΡΠΈΠΏΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ β ΠΏΡΠΈΠΌ. ΠΏΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°), ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ², Π΄Π°Π±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΡΠ²ΠΎΠ΅ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅.
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±ΠΎΠ»ΡΡΡΡ Π΄ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ: upload1.php ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠΎΡΠ΅Π½Ρ ΡΠ°ΠΉΡΠ°. ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ PHP-ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠ΅ΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°. Π’Π°ΠΊΠΎΠΉ ΡΠΊΡΠΈΠΏΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ PHP-Shell. ΠΠΎΡ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°:
ΠΡΠ»ΠΈ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π»ΡΠ±ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΠΎΡ:
server/shell.php?command=any_Unix_shell_command
ΠΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ PHP-shell ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Ρ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ SQL, ΠΈ Ρ.Π΄.
ΠΡΡ ΠΎΠ΄Π½ΠΈΠΊ Perl, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅, Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ PHP-Shell Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ upload1.php:
ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ libwwwperl, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Perl, ΡΠΌΡΠ»ΠΈΡΡΡΡΠ΅ΠΉ HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
Π Π²ΠΎΡ ΡΡΠΎ ΡΠ»ΡΡΠΈΡΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°:
POST /upload1.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Length: 156
Content-Type: multipart/form-data; boundary=xYzZY
—xYzZY
Content-Disposition: form-data; name=»userfile»; filename=»shell.php»
Content-Type: text/plain—xYzZYβ
HTTP/1.1 200 OK
Date: Wed, 13 Jun 2007 12:25:32 GMT
Server: Apache
X-Powered-By: PHP/4.4.4-pl6-gentoo
Content-Length: 48
Connection: close
Content-Type: text/html
File is valid, and was successfully uploaded.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ shell-ΡΠΊΡΠΈΠΏΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ curl localhost/uploads/shell.php?command=id
uid=81(apache) gid=81(apache) groups=81(apache)
cURL β command-line ΠΊΠ»ΠΈΠ΅Π½Ρ HTTP, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π½Π° Unix ΠΈ Windows. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. cURL ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½ ΠΎΡ curl.haxx.se
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Content-Type
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π΄ΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π»ΠΈ ΡΠ°ΠΉΠ»Ρ ΡΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Content-Type:
ΠΡΠΈΠΌΠ΅Ρ 2 (upload2.php):
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ shell.php, Π½Π°Ρ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ MIME-ΡΠΈΠΏ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΠΈ ΠΎΡΡΠ΅ΠΈΠ²Π°ΡΡ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ΅.
POST /upload2.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 156
—xYzZY
Content-Disposition: form-data; name=»userfile»; filename=»shell.php»
Content-Type: text/plain—xYzZY—
HTTP/1.1 200 OK
Date: Thu, 31 May 2007 13:54:01 GMT
Server: Apache
X-Powered-By: PHP/4.4.4-pl6-gentoo
Content-Length: 41
Connection: close
Content-Type: text/html
Sorry, we only allow uploading GIF images
ΠΠΎΠΊΠ° Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΡ Π·Π°ΡΠΈΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠΉ MIME-ΡΠΈΠΏ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ. Π Π·Π°ΠΏΡΠΎΡΠ΅ Π²ΡΡΠ΅ ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ Β«text/plainΒ» (Π΅Π³ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π±ΡΠ°ΡΠ·Π΅Ρ β ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°). ΠΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² Β«image/gifΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΌΡΠ»ΡΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ»Π°Π΅Ρ (upload2.pl):
Π Π²ΠΎΡ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ.
POST /upload2.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 155
—xYzZY
Content-Disposition: form-data; name=»userfile»; filename=»shell.php»
Content-Type: image/gif—xYzZYβ
Π ΠΈΡΠΎΠ³Π΅, Π½Π°Ρ upload2.pl ΠΏΠΎΠ΄Π΄Π΅Π»ΡΠ²Π°Π΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Content-Type, Π·Π°ΡΡΠ°Π²Π»ΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΠ°ΠΉΠ».
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ²Π΅ΡΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡ Content-Type, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ PHP ΠΌΠΎΠ³ Π±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΡΠΎΠ±Ρ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ PHP getimagesize() ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. ΠΠ½Π° Π±Π΅ΡΠ΅Ρ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ ΡΠΈΠΏΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ upload3.php Π½ΠΈΠΆΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π½Π°ΠΏΠ°Π΄Π°Π²ΡΠΈΠΉ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ shell.php, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Content-Type Π² Β«image/gifΒ», ΡΠΎ upload3.php Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
POST /upload3.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 155
—xYzZY
Content-Disposition: form-data; name=»userfile»; filename=»shell.php»
Content-Type: image/gif—xYzZYβ
HTTP/1.1 200 OK
Date: Thu, 31 May 2007 14:33:35 GMT
Server: Apache
X-Powered-By: PHP/4.4.4-pl6-gentoo
Content-Length: 42
Connection: close
Content-Type: text/html
Sorry, we only accept GIF and JPEG images
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π±ΡΠ²Π°ΡΡ Π² ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ, ΡΡΠΎ Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»Ρ GIF ΠΈΠ»ΠΈ JPEG. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. Π€Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ GIF ΠΈΠ»ΠΈ JPEG, ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ PHP-ΡΠΊΡΠΈΠΏΡΠΎΠΌ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π½Π΅ΡΡΠΈ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ΄ PHP Π² ΡΡΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ³Π΄Π° getimagesize() ΡΠΌΠΎΡΡΠΈΡ Π½Π° ΡΠ°ΠΉΠ», ΠΎΠ½ Π²ΠΎΡΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ GIF ΠΈΠ»ΠΈ JPEG. ΠΠΎΠ³Π΄Π° ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ PHP ΡΠΌΠΎΡΡΠΈΡ Π½Π° ΡΠ°ΠΉΠ», ΠΎΠ½ Π²ΠΈΠ΄ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΉ ΠΊΠΎΠ΄ PHP Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ Β«ΠΌΡΡΠΎΡΠ΅Β», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½. Π’ΠΈΠΏΠΎΠ²ΠΎΠΉ ΡΠ°ΠΉΠ», Π½Π°Π·Π²Π°Π½Π½ΡΠΉ crocus.gif ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ (ΡΠΌ. Π½Π°ΡΠ°Π»ΠΎ ΡΡΠ°ΡΡΠΈ). ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΎ Π² Π»ΡΠ±ΠΎΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅.
ΠΡΠ°ΠΊ, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ perl-ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π°ΡΠ΅ΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ:
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π±Π΅ΡΠ΅Ρ ΡΠ°ΠΉΠ» crocus.gif ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΡΠΎ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ crocus.php. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ:
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΏΠ°Π΄Π°Π²ΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ uploads/crocus.php ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΠ΅Π΅:
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ PHP ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ » » Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ GIF.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
Π§ΠΈΡΠ°ΡΠ΅Π»Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΌΠΎΠ³ Π±Ρ Π·Π°Π΄Π°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°? ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ *.php, ΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΊΠ°ΠΊ ΡΠΊΡΠΈΠΏΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΠΌΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΠΈΠ³Π½ΠΎΡΠΈΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ°ΠΉΠ»Π° Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ (upload4.php):
POST /upload4.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 14835
—xYzZY
Content-Disposition: form-data; name=»userfile»; filename=»crocus.php»
Content-Type: image/gif
GIF89(. skipping binary data. )
—xYzZYβ
HTTP/1.1 200 OK
Date: Thu, 31 May 2007 15:19:45 GMT
Server: Apache
X-Powered-By: PHP/4.4.4-pl6-gentoo
Content-Length: 36
Connection: close
Content-Type: text/html
We do not allow uploading PHP files
POST /upload4.php HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: libwww-perl/5.803
Content-Type: multipart/form-data; boundary=xYzZY
Content-Length: 14835
—xYzZY
Content-Disposition: form-data; name=»userfile»; filename=»crocus.gif»
Content-Type: image/gif
GIF89(. skipping binary data. )
—xYzZY—
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΏΡΠΎΡΠΈΠΌ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ», ΡΠΎ ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ:
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°:
Π ΡΠ»ΡΡΠ°Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΡΠ°ΠΌΡΠΌ Π»ΡΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π° ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ getimagesize(). Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ ΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ. Π‘ΡΠΎΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΡΠΎ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ jpeg. ΠΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ (Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ) ΠΏΠΎΡΠ΅ΡΡΡΡΡΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ² ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΡΠ½ΠΎΡΡΡ.
ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠΎΡΠΎ Π½Π° ΡΠ°ΠΉΡ php
ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠΎΡΠΎ Π½Π° ΡΠ°ΠΉΡ php
Π€ΠΎΡΠΌΠ° Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΡΠΎ php
Π£ Π½Π°Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π Π΅ΡΠ»ΠΈ ΠΌΡ Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅ΠΌ, ΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠΎΡΠΎ ΠΌΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΠΌ:
ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ!
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΡΠΎΡΠΌΡ enctype=»multipart/form-data»
Π ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π° Π² input ΠΌΠ΅Π½ΡΠ΅ΠΌ Ρ «text» Π½Π° «file»
ΠΠΎΡ ΡΡΠΎ Ρ Π½Π°Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ:
ΠΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΡΠΎ Π½Π° ΡΠ°ΠΉΡ php
Π Π΄Π°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ php ΡΠΊΡΠΈΠΏΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΠΎΡΠΎ Π½Π° ΡΠ°ΠΉΡ!
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΠ΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ! Π§ΡΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΠΈ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½.
ΠΠΎ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ. ΠΏΡΠΎΡΡΠΎ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ
Π ΡΠ΅ΡΠΈ Π΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ, Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ Ρ!
Π§ΡΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ php
ΠΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ Π²ΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΡΠΎΡΠΌΡ Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΡΠΎΡΠΎ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. β Π΅ΡΠ»ΠΈ ΠΆΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ, ΡΠΎ php Π²Π°ΠΌ ΠΎΠ± ΡΡΠΎΠΌ ΡΠΎΠΎΠ±ΡΠΈΡ! ΠΠΎ ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π½Π°ΡΡΡΠΎΠ΅Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ! ΠΠΎΠΊΡΠΏΠ°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Ρ ΠΎΡΡΠΈΠ½Π³!, Π³Π΄Π΅ ΡΠ΅ΡΠ²Π΅Ρ Π½Π°ΡΡΡΠΎΠ΅Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΈ Π½Π΅ ΡΠ°ΠΊ, ΡΠΎ Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΎ Π½ΡΠΌ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅!
Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½, ΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π½Π°Ρ ΡΠ°ΠΉΠ» Π² ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ, Π³Π΄Π΅ ΠΈ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΡΠ°ΠΉΠ» ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΎ Π΅Π³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ.
Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΠ΅ Π·Π°Π±ΡΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΏΠ°ΡΠΈΠ±ΠΎ!
ΠΠ΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π² Π½Π°Ρ «DirectAdmin» β Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΡΡΠΎΠΊΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ php:
ΠΠ°Π½Π½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ «http»
ΠΠ΄Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ getimagesize
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π° ΡΠΈΠΏ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
[3] => width=»1920″ height=»1080″
ΠΡ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ explode
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° «test.$mime[1]»
ΠΡΠΎ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°! Π Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π²Π΅Ρ ΡΠΎΡΠΎ! + ΠΠ° Π½Π°Π»ΠΈΡΠΈΠ΅ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ²Π΅ΡΠΈΠΌ ΡΠΆΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π·!
ΠΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ΅ΠΌΡ ΡΠΎΡΠΎ php.
ΠΠ½ΠΎΠ³Π΄Π° Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΡΡΠΎ ΠΈ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡ, ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠΌΠ΅Π΅Ρ Π²Π²ΠΈΠ΄Ρ, ΡΠΏΡΠ°ΡΠΈΠ²Π°Ρ ΡΡΠΎ:
ΠΊΠ°ΠΊ Π² php ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΊ ΡΠ°ΠΉΡΡ
ΠΡΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½Π° ΡΠ°ΠΉΡ, ΡΡΠΎ ΠΌΡ Π²ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ.
ΠΠΎΠΌΠ΅ΡΡΠΈΡΡ html ΠΊΠΎΠ΄ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ:
ΠΠΎΡΠΎΠΌ Π²ΡΠ²Π΅ΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ echo.
ΠΠΈΠ±ΠΎ ΡΠ°ΠΊ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ :
Π€ΠΎΡΠΌΠ° ΠΏΠΎΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π°Π΄ΠΌΠΈΠ½Ρ. ΡΠΊΠΎΡΠΎ Π²ΡΠ΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π½Π°Π΄Π΅ΡΡΡ.