# ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Β· ΠΠ°Π³Π»ΡΠΉ PHP
<form enctype="multipart/form-data" action="script.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎΡ ΡΠ°ΠΉΠ»: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
Π script.php
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ» ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π½Π΅ΠΌ Π±ΡΠ΄ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ $_FILES[«userfile»]. ΠΠ±ΡΠ°ΡΠ°Ρ ΠΠ°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ userfile — ΡΡΠΎ ΡΠΎ ΠΈΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π² <input type=»file» name Π² Π½Π°ΡΠ΅ΠΉ ΡΠΎΡΠΌΠ΅
$_FILES[«userfile»][«name»] — Ρ
ΡΠ°Π½ΠΈΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°
$_FILES[«userfile»][«tmp_name»] — Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ, ΠΏΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°ΠΉΠ» ΡΠΎΡ
ΡΠ°Π½ΠΈΠ»ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
$_FILES[«userfile»][«size»] — ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ
move_uploaded_file($_FILES['userfile']['tmp_name'],$_FILES['userfile']['name'] )
PHP ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ°ΠΉΠ»Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Ρ-Ρ move_uploaded_file Π·Π°Π±ΠΈΡΠ°Π΅Ρ ΡΠ°ΠΉΠ» Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² ΡΠ°Π±ΠΎΡΡΡ ΠΏΠ°ΠΏΠΊΡ
//ΠΊΠ»ΡΡ userfile ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ name Π² inputβe
Π Π°Π±ΠΎΡΠ° Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½, ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ. ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΠΠ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π΅Π΅ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ. ΠΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»Π° Π±ΡΠ΄Π΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π΅Π³ΠΎ ΠΈΠΌΡ Π² ΠΠ.
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°
<form action="file-upload.php" method="post" enctype="multipart/form-data"> Π€Π°ΠΉΠ»Ρ:<br /> <input name="userfile[]" type="file" multiple="true" /><br /> <input type="submit" value="ΠΡΠΏΡΠ°Π²ΠΈΡΡ" /> </form>
Π’ΠΎ Π΅ΡΡΡ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ []. ΠΠ»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ multiple=βtrueβ.
$_FILES[‘userfile’][‘name’] β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π½ Π²ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
$_FILES[‘userfile’][‘name’][0] β Π΄ΠΎΡΡΡΠΏ ΠΊ Π½ΡΠ»Π΅Π²ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
count($_FILES[‘userfile’][‘name’]) — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΡΡΠΈΠ²ΠΎ:
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ²Π°Ρ https://habr.com/ru/post/44610/
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΡΠ°ΡΡΡ Π²ΡΠΎΡΠ°Ρ https://habr. com/ru/post/44615/
ΠΡΠ°ΠΊΡΠΈΠΊΠ°
- ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ
- ΠΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°Π½Π΅Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ(Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΠ)
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Β«Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ²Β»
- ΠΡΠ»ΡΡΠΈΠ·Π°Π³ΡΡΠ·ΠΊΠ°
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π² PHP (upload)
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ HTML-ΡΠΎΡΠΌΠ° ΠΈ PHP-ΡΠΊΡΠΈΠΏΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΡΡΠΎΠΉ ΡΠΎΡΠΌΠΎΠΉ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΎΠ½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ.
HTML ΡΠΎΡΠΌΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ°ΠΉΠ»Π°
Π‘Π°ΠΌΠ°Ρ ΠΏΡΠΎΡΡΠ°Ρ ΡΠΎΡΠΌΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π°:
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name=" my_file ">
<input type="submit" value="ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»">
</form>
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΡΠΌΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΏΠΎΠ»Π΅ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΠΉΠ»Π° ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΌΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ:
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ entype ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π² ΡΡΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ multipart/form-data, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π±ΠΈΠ½Π°ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , Ρ. Π΅. ΡΠ°ΠΉΠ»Π°. ΠΡΠ»ΠΈ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ, ΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΡΠΌΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ method ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ . Π€ΠΎΡΠΌΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ POST. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅ΠΉ ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Π² ΡΡΠ°ΡΡΠ΅ «ΠΡΠ»ΠΈΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² POST ΠΈΠ»ΠΈ GET»
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ action ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΡ Π½Π° PHP-ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ MAX_FILE_SIZE, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΡΠΎΡΠΌΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°, Π·Π°Π΄Π°Π½Π½ΡΠΉ Π² Π±Π°ΠΉΡΠ°Ρ . ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΠΎΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠ»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠ΅Π³ <input> Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΏ «file», Π° ΡΠ°ΠΊ ΠΆΠ΅ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ PHP-ΡΠΊΡΠΈΠΏΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ «name».
ΠΡΠΏΡΠ°Π²ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅Π³ΠΎΠΌ <input> Ρ ΡΠΈΠΏΠΎΠΌ «submit». ΠΠ½ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ.
PHP ΠΊΠΎΠ΄ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°
ΠΠ°Π΄Π°ΡΠ° ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΏΠΎΠ»ΡΡΠΈΠ² Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΌΡ, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π΅ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π² Π½ΡΠΆΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ΄Π΅ΡΡ ΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β Π·Π°ΠΏΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΠΠ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΌΠ΅Π½ΡΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠΏΠΈΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π°Π²ΡΠΎΡΡΠΊΠΈΡ ΠΏΡΠ°Π² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Π ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΠ°ΠΉΠ»Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΡΠΏΠ΅ΡΠ³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ $_FILES. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌ ΠΈΠ· ΡΠΎΡΠΌΡ ΡΠ°ΠΉΠ»Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π² $_FILES[‘my_file’]. Π’Π°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
$_FILES[‘my_file’][‘name’] | ΠΈΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° |
$_FILES[‘my_file’][‘size’] | ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ |
$_FILES[‘my_file’][‘type’] | MIME-ΡΠΈΠΏ ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠ»ΠΈ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: image/gif, image/png, image/jpeg, text/html |
$_FILES[‘my_file’][‘tmp_name’] | ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: /tmp/phpR4n5wJ |
$_FILES[‘my_file’][‘error’] | ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ $_FILES, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»Π° |
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΡΠ°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ Π² ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Ρ. ΠΊ. Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ copy(), ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»ΡΠΆΠΈΡ ΠΈΠΌΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΈΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° — $_FILES[‘my_file’][‘tmp_name’]) ΠΈ ΠΈΠΌΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
Π ΠΈΡΠΎΠ³Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
<?php
$new_file =Β .$_FILES[][];
ifΒ (copy($_FILES[][], $new_file)) {
echoΒ ;
}Β elseΒ {
echoΒ ;
?>
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ ΠΏΠ°ΠΏΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Ρ ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈΡΡ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π² Π½Π΅ΠΉ ΡΠ°ΠΉΠ»ΠΎΠ².
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Π ΡΠ΅Π°Π»Π΅ ΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΈΠΌΡ Π·Π°Π΄Π°Π΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²Π΅ΡΡΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-Π»ΠΈΠ±ΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ. ΠΠ΄Π΅ΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ Π² ΠΠ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
Π€ΡΠ½ΠΊΡΠΈΡ copy() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈ False ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΈ ΡΠ΄Π°ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΠ±ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Php Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ
ΠΡΠ°ΠΊ, ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΡ Π½Π΅ ΡΠΈΡΠ°Π»ΠΈ ΡΡΠ°ΡΡΡ Β«Π§ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅ΡΒ», ΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π½Π°ΡΠ°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ Π½Π΅Ρ.
Π Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ ΠΎΠ±ΡΠΈΠ΅ Π½ΡΠ°Π½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ! Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ:
- ΠΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ.
- ΠΡΠΎΠ²Π΅ΡΠΊΡ, Π²ΡΠ±ΡΠ°Π½ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ Π½Π΅Ρ.
- ΠΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°.
- ΠΡΠ°ΠΌΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Ρ ΡΡΠ°Π·Ρ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π±Π΅Π· Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΈΠ·ΡΡΠΊΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ .
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ Π±ΡΠ΄ΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅:
- index.php β ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ
- functions.php β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ Π΄Π²ΡΠΌΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ
- img β ΠΏΠ°ΠΏΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
ΠΠΎΠ΄Π° ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΠΏΡΠ³Π°ΠΉΡΠ΅ΡΡ! ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΠ° Π²Π°ΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ.
ΠΠ»Π°Π²Π½ΠΎΠ΅ β ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΡ Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°. Π£ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
- can_upload β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΡ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅
- make_upload β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ°ΠΉΠ»Π° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠΎΡΠΌΠ° Π±ΡΠ»Π° ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π°, ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ can_upload. ΠΡΠ»ΠΈ ΠΎΠ½Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»Π°, ΡΡΠΎ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π½Π°ΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ, ΡΠΎ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ make_upload. ΠΠ½Π°ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΠ΄Π΅ΡΡ Π²ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΊΠΎ ΠΈ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ. Π‘Ρ Π΅ΠΌΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ, Π° ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΈ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ can_upload ΠΈ make_upload!
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ β ΡΡΠΊΠ½ΡΠΈΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΉΠ» functions.php
Π‘Π½Π°ΡΠ°Π»Π° Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΡ ΡΠ»ΠΎΠ² ΠΏΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ make_upload, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° ΠΏΡΠΎΡΠ΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π° Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ mt_rand(0, 10000), Ρ.Π΅, ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΡ 0 Π΄ΠΎ 10000. ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Ρ ΡΠ°ΠΉΠ»Π° Π±ΡΠ»ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π΄Π²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π²ΡΠΎΡΠ°Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΡΡ.
ΠΡΡΠ°ΡΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Π΄Π°Π»ΠΈΡΡ ΡΠ΅Π·ΠΎΠ½Π½ΡΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, Π° Π³Π΄Π΅ ΠΆΠ΅ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π³ php Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π·Π½Π°ΡΠΈΡ, Π²Ρ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΈΡΠ°Π»ΠΈ ΡΡΠ°ΡΡΡ Β«ΠΡΠΈΠ±ΠΊΠ° headers already sentΒ»!
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π΄Π»Ρ Π½Π°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ can_upload.
($file[βnameβ] == Β») β ΠΌΠ΅Π»ΠΎΡΡ, Π·Π½Π°ΠΊΠΎΠΌΠ°Ρ Π²Π°ΠΌ ΠΏΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
Π Π²ΠΎΡ ($file[βsizeβ] == 0) β ΡΡΠΎ Π·Π°Π±Π°Π²Π½ΠΎ! ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΡΡΡΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΈ ΡΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΉΠ» ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ! Π Π°Π·Π³Π°Π΄ΠΊΠ° ΠΊΡΠΎΠ΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π±ΡΠ» Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠΎ ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½ Π²ΠΎΠΎΠ±ΡΠ΅. Π Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π½Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½, ΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΡΠΎ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ.
ΠΡ ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ Π±Π΅Π»ΠΎΠ³ΠΎ Π»ΠΈΡΡΠ°. Π’Π°ΠΊΠΈΠΌ Π»ΠΈΡΡΠΎΠΌ Ρ Π½Π°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² $types, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅ΠΌ Π²ΡΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, Π·Π½Π°ΡΠΈΡ Π½Π°ΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠΎ.
ΠΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π³ΠΎΠ²ΠΎΡΡ ΠΈ Π²ΡΡ! Π‘ΠΊΡΠΈΠΏΡ Π½Π°Π΄ΡΠΆΠ½ΡΠΉ, Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΉ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ.
Π Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π»ΠΎΠΆΠΈΡΡ Π½Π° Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ!
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PHP Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌ. ΠΠ°ΡΡΠΈΠΌΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ ΠΈ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π° Ρ Π±ΡΠ΄Ρ ΠΏΠΈΡΠ°ΡΡ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅, Π΄Π°Π±Ρ Π²Ρ Π±ΡΡΡΡΠ΅Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, Π° Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠΊΠ°ΠΊΠΈΠ²Π°ΡΡ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ. Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π²ΡΠΎΡΡΠΊΠΎΠ΅ ΠΈ Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΠ΅Ρ Π½Π° ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ½ΠΎΡΡΡ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΡ.
Β§1. ΠΠ±ΡΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ
ΠΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π½Π°ΡΡΡΠΎΠΉΠΊΠ° php.ini β ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° β ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ β Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ β ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠΊ. ΠΡΠΎΡΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΠΎ URL Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π΅Π³ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ. ΠΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ»Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΏΠΎ URL ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ getimagesizefromstring(), Ρ. ΠΊ. cURL ΡΠΊΠ°ΡΠ°Π΅Ρ Π΅Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΡΠΎ Ρ ΠΎΡΠΎΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: ΡΠΈΡΠΈΠ½Ρ, Π²ΡΡΠΎΡΡ, ΡΠΈΠΏ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ . ΠΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π΄Π»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Π²ΡΠ΅ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
Β§2. ΠΡΠ°Π²ΠΈΠ»Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ Π½Π΅Π΄ΠΎΠΏΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΡΠΆΠ΅ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΠ·Π²ΠΈΠΌΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² PHP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ : ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ shell-ΡΠΊΡΠΈΠΏΡΠΎΠ², Π·Π°ΠΏΠΈΡΡ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΏΠΎΠ΄ΠΌΠ΅Π½Π° EXIF-Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π²Π·Π»ΠΎΠΌΠ° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»:
ΠΡΠ»ΠΈ Π΅ΡΡΡ ΡΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ Β«ΠΡΠ°Π²ΠΈΠ»Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈΒ», ΡΠΎΠ³Π΄Π° ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΡΠ²ΠΎΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠ°ΡΡΠΈ ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΊ ΡΡΠΎΠΌΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Ρ, Π° Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΡ ΠΈΡ Π² ΡΡΠΎΠΌ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅.
Β§3. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ php.ini
PHP ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π½Π΅ΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π»ΡΠ±ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π² ΡΠ°ΠΉΠ»Π΅ php.ini Π½Π°ΠΉΡΠΈ Π±Π»ΠΎΠΊΠΈ Β«Resource LimitsΒ», Β«Data HandlingΒ» ΠΈ Β«File UploadsΒ», Π° Π·Π°ΡΠ΅ΠΌ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅ΡΡΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΡΠΈΡΡΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΉΠ» Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡ 5 ΠΠ±Π°ΠΉΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠ· Π±Π»ΠΎΠΊΠ° Β«Resource LimitsΒ» Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Ρ. ΠΊ. Ρ ΠΏΠΎΠΌΠΎΡΡΡ cURL ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΅Ρ ΠΏΠΎ Π½ΡΠΆΠ½ΡΠΌ Π½Π°ΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ, Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΠΏΠ°ΠΌΡΡΡ.
50 ΠΠ±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, Π΄Π°Π±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° Π² max_execution_time ΠΈ Π½Π΅ ΠΏΡΠ³Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ.
Β§4. ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΈΠ· ΡΠΎΡΠΌΡ
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, Π° ΡΠ°Π·Π±Π΅ΡΡΠΌ Π»ΠΈΡΡ ΡΠ°ΠΌΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠ°ΠΊ, Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ HTML-ΡΠΎΡΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΉΠ» PHP-ΡΠΊΡΠΈΠΏΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ POST ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ enctype=»multipart/form-data» (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΠΊΠΎΠ΄ΠΈΡΡΡΡΡΡ ΠΈ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²). Π‘ ΡΠΎΡΠΌΠΎΠΉ Π½ΠΈΠΆΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π°Π»ΡΡΠ΅:
ΠΠ»Ρ ΠΏΠΎΠ»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΠΉΠ»Π° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΠΌΡ name=»upload» Π² Π½Π°ΡΠ΅ΠΉ HTML-ΡΠΎΡΠΌΠ΅, Ρ ΠΎΡΡ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ. ΠΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ°ΠΉΠ»Π° PHP-ΡΠΊΡΠΈΠΏΡΡ file-handler.php Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΏΠ΅ΡΠ³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $_FILES[βuploadβ] Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°ΠΉΠ»Π΅:
ΠΠ΅ Π²ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· $_FILES ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ²Π΅ΡΡΡΡ: MIME-ΡΠΈΠΏ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Π»Π°ΡΡ, Ρ. ΠΊ. ΠΎΠ½ΠΈ ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ ΠΈΠ· HTTP-ΠΎΡΠ²Π΅ΡΠ°, Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° Π½Π΅ ΡΡΠΎΠΈΡ Π΄ΠΎΠ²Π΅ΡΡΡΡ Π² ΡΠΈΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π·Π° Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΡΡΠ²Π°ΡΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ». Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄Π°Π»ΡΡΠ΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π»ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΡΡ Π½Π°Ρ ΡΠ°ΠΉΠ» ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΡΡ Π»ΠΈ ΠΎΠ½ Π²ΠΎΠΎΠ±ΡΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² $_FILES[βuploadβ][βerrorβ] ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ°ΠΉΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ POST Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ is_uploaded_file(). ΠΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΈΠ΄ΡΡ Π½Π΅ ΠΏΠΎ ΠΏΠ»Π°Π½Ρ, Π·Π½Π°ΡΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ Π½Π΅ Π·Π°Π³ΡΡΠ·ΠΈΠ» Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅Π»ΡΠ·Ρ Π΄ΠΎΠ²Π΅ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ getimagesize(), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ MIME-ΡΠΈΠΏ. Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π°ΡΡΠΎΡΡΠΈΠΉ MIME-ΡΠΈΠΏ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ FileInfo. ΠΠΎΠ΄ Π½ΠΈΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° image Π² ΡΠΈΠΏΠ΅ Π½Π°ΡΠ΅Π³ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ, Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π»ΡΠ±ΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π° Π½Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° MIME-ΡΠΈΠΏ, Π½ΠΎ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π°Π»ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ getimagesize(), ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΊΠΎΡΠΌΠΈΠΌ ΡΠ°ΠΌ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» $_FILES[βuploadβ][βtmp_nameβ]. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ² ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΠΈΠ· 7 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
ΠΠ»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π½ΠΈΠΌ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΎΠΌ Π·Π½Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ 3 Π·Π½Π°ΡΠ΅Π½ΠΈΡ: ΡΠΈΡΠΈΠ½Ρ, Π²ΡΡΠΎΡΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° (Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ filesize() Π΄Π»Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ).
ΠΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π½Π°Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π² ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠ°ΠΏΠΊΡ Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°ΠΌΠΈ. ΠΠ΅Π»Π°ΡΡ Π»ΡΡΡΠ΅ ΡΡΠΎ ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΡ move_uploaded_file(), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π° Π½Π΅Π»ΡΠ·Ρ Π·Π°Π±ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΈΠΏΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠΎΡ ΡΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ:
ΠΠ° ΡΡΠΎΠΌ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°. ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ UploadedFile ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° Symfony HttpFoundation, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΡΠΊΠΎΠΉ Π΄Π»Ρ $_FILES ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ°ΠΉΠ» ΡΠ΅ΡΠ΅Π· move_uploaded_file().
Β§5. ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅
ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° cURL, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Ρ ΠΌΡ ΡΠΊΠ°ΡΠ°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ file_get_contents(), Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠΌ ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ cURL ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠΊΠ°ΡΠ°Π» Π΄Π°Π½Π½ΡΠ΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ: ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ, Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ cURL (ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π·Π° ΡΡΡΡ ΠΎΠ±ΡΡΠΌΠ° ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΠ΅Π΄Π½Π΅ΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΡΡΡΠΎΠΌ). ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ°ΠΉΠ» Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ:
ΠΡΠ»ΠΈ Π²ΡΡ ΠΏΡΠΎΡΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈ cURL ΡΠ»ΠΎΠΆΠΈΠ»ΡΡ Π² 60 ΡΠ΅ΠΊΡΠ½Π΄, ΡΠΎΠ³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°ΡΠ°Π½ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ $raw. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ curl_getinfo() Π²Π΅ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅, ΠΎΡΠΊΡΠ΄Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ:
ΠΠ°Π»ΡΡΠ΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π΅Ρ Π»ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π² curl_errno() ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΡΡ ΠΎΡΠ΄Π°ΡΡ ΡΠ°Π²Π½ΡΠΉ 200, ΠΈΠ½Π°ΡΠ΅ ΠΌΡ ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΎ ΡΠ°ΠΊΠΎΠΌΡ-ΡΠΎ URL Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. ΠΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ $raw ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π² getimagesizefromstring() ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΡΠΆΠ΅ ΠΏΠΎ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΠ΅ ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΈΠ· ΡΠΎΡΠΌΡ.
ΠΠ»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄ΠΈΡΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ file_put_contents(), ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΠΈΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π² ΡΠ°ΠΉΠ». ΠΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΡ md5(), Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΈΠ· image_type_to_extension(). Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
Β§6. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π²ΡΠ±ΠΎΡΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
Π ΡΡΠΎΠΌ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠΎ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΌ ΡΡΡΠ»ΠΊΠ°ΠΌ. ΠΠ»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΡΡΠ»ΠΎΠΊ ΠΌΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΠ΅ΠΌ $_POST ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Π΅ΠΉ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³Π° textarea. ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΡΠΎΡΠΌΡ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Π΄Π°Π»ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ $_FILES. ΠΠ°ΡΠ° Π½ΠΎΠ²Π°Ρ HTML-ΡΠΎΡΠΌΠ° Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΡΠ°ΡΠΎΠΉ.
Π ΠΊΠΎΠ½Π΅Ρ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΠΉΠ»Π° name=»upload[]» Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈΡΡ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ Π°ΡΡΡΠΈΠ±ΡΡ multiple, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π±ΡΠ°ΡΠ·Π΅ΡΡ Π²ΡΠ±ΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ½ΠΎΠ²Π° Π·Π°Π³ΡΡΠ·ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ, Π΅ΡΠ»ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² php.ini . ΠΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π² $_FILES, Π½ΠΎ Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΡΡΠΏΠ΅ΡΠ³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Π Π΅ΡΠ°Π΅ΡΡΡ ΡΡΠ° Π·Π°Π΄Π°ΡΠ° Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡΠΌΠΈ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ:
ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΏΠΎ URL ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Π½Π°ΡΠΈ ΡΡΡΠ»ΠΊΠΈ ΡΠ΅ΡΠ΅Π· textarea Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ name=»upload», Π³Π΄Π΅ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ±Π΅Π» ΠΈΠ»ΠΈ Ρ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ preg_split ΡΠ°Π·Π±Π΅ΡΡΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· $_POST[βuploadβ] ΠΈ ΡΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ², ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈΡΡ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ URL ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ»ΡΡΡΠΈΡΡ ΡΠΎΡΠΌΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ FineUploader ΠΈΠ»ΠΈ jQuery FileUpload, ΡΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²ΡΠ±ΠΎΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ°ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ: 2010-10-19
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ Ρ ΠΎΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. Π Π²ΠΎ-Π²ΡΠΎΡΡΡ , ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΎΡΠΈΠΈ ΠΏΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ PHP
ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ°Π·Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ» Π² ΡΠ²ΠΎΡ ΠΏΠ°ΠΏΠΊΡ. ΠΠ½Π°ΡΠ°Π»Π΅ ΠΎΠ½ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PHP ΠΈΠ½ΡΠ΅ΡΠΏΡΠΈΡΠ°ΡΠΎΡΠ°. ΠΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠ΅ΡΡΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ. Π’ΠΎ Π΅ΡΡΡ, ΠΌΡ Π²Π½Π°ΡΠ°Π»Π΅ Π·Π°Π±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ Π² Π½ΡΠΆΠ½ΡΡ.
$_FILES ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»Π° picture):
$_FILES[β picture β][βnameβ] β Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: image.jpg.
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΊΡΡΡ ΠΏΠΎ PHP ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ²ΠΎΠΉΡΠ΅ ΠΊΡΡΡ ΠΈ ΡΠ·Π½Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΡ Π½Π° PHP ΠΈ MySQL Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π½ΡΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ MVC
Π ΠΊΡΡΡΠ΅ 39 ΡΡΠΎΠΊΠΎΠ² | 15 ΡΠ°ΡΠΎΠ² Π²ΠΈΠ΄Π΅ΠΎ | ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΎΠΊΠ°
$_FILES[β picture β][βsizeβ] β ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ .
$_FILES[β picture β][βtypeβ] β MIME-ΡΠΈΠΏ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: image/gif, image/png, image/jpeg.
$_FILES[β picture β][βtmp_nameβ] β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: /tmp/phpV3b3qY. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
$_FILES[β picture β][βerrorβ] β ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΠΎΡΠΌΠ° Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠΎΠ·ΡΠΌΡΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΡΡ ΡΠΎΡΠΌΡ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ enctype=»multipart/form-data» ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠΎΡΠΌΡ. Π’Π΅Π³ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΏΠΎΠ»Π΅ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ.
Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ β Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π°. ΠΠ½Π°ΡΠ°Π»Π΅ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠ΄Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° β ΠΏΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΡΡΠΌΠΎΠΉ, ΡΠ°ΠΊ ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ. Π ΡΠ»ΡΡΠ°Π΅ POST Π·Π°ΠΏΡΠΎΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΏΡΡΠΈ. Π‘ΠΊΡΠΈΠΏΡ ΡΠΎΠΎΠ±ΡΠΈΡ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ β ΡΠ΄Π°ΡΠ½Π° ΠΎΠ½Π° ΠΈΠ»ΠΈ Π½Π΅Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ copy, ΠΊΠ°ΠΊ Π²Ρ Π½Π°Π²Π΅ΡΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Π»ΠΈΡΡ, ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠΎ Π² Π΄ΡΡΠ³ΠΎΠ΅. ΠΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΉΠ» ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² Π½ΡΠΆΠ½ΡΡ, ΡΠΎΡ ΡΠ°Π½ΠΈΠ² ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°.
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌΡΡ, ΡΡΠΎ ΠΈ ΡΠΎΡΠΌΠ° ΠΈ Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π±ΡΠ΄ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ β upload.php.
ΠΡΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠΊΡΠΈΠΏΡ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΡΠΎΡΠΈΡΡ Π½Π° Ρ ΠΎΡΡΠΈΠ½Π³, ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΠΏΠΊΡ i ΠΈ ΠΏΠΎΡΡΠ΅Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡΠΎΠ²Π΅ΡΠΊΠΈ
ΠΡΠ±Π°Ρ ΡΠΎΡΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π»Ρ ΡΠ°ΠΉΡΠ° ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠΎΡΠΌΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ.
Π‘Π°ΠΌΡΠ΅ ΠΏΡΠΎΡΡΡΠ΅ ΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ β Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΊΠ°ΠΆΠ΅ΠΌ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΡΠΈΠΏΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ.
Π’ΠΈΠΏ ΡΠ°ΠΉΠ»Π° ΡΠΊΠ°ΠΆΠ΅ΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°:
Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ :
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π°. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ in_array ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.
ΠΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΊΠΎΠΉ ΡΠΊΡΠΈΠΏΡ. Π‘ΠΊΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π±Π°Π»ΠΎΠ²Π°ΡΡΡΡ. ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π±Π΅Π³Π°Ρ Π²ΠΏΠ΅ΡΡΠ΄, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ $tmp_path β ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ PHP
ΠΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΌΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PHP. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ resize. Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ.
Π Π°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π»ΠΈΠ±ΠΎ ΡΡΠΊΠΈΠ· ($type = 1), Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ($type = 2).
ΠΡΠ°ΠΊ, ΡΠ°ΠΏΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ ΡΠ°ΠΊΠ°Ρ:
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΡΠΊΠΈΠ·Π°, Π° ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. ΠΠΎΠΉΠ΄ΡΠΌ Π΄Π°Π»ΡΡΠ΅.
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅. Π€ΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΉ, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎ Π²ΡΡΠΎΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Π° ΡΠ°ΠΊΠ°Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ.
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (ΠΏΡΠΈ $quality = null) ΡΠ°Π²Π½ΡΠΌ 75%.
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΡΠ°ΠΉΠ»Π° (jpg, png ΠΈΠ»ΠΈ gif). Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΎΡΠ΅Π½Ρ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ imagecreatefrom + ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π°.
ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ $rotate, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ΅Π»Π°Π΅ΠΌ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ rotate(), ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΡΡΡΡ: ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π³ΡΠ°Π΄ΡΡΡ, ΡΠΎΠ½ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΡΡΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ΅. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΡΡΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ, ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ³ΠΎΠ» Π² 90, 180, 270 Π³ΡΠ°Π΄ΡΡΠΎΠ².
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΊΡΡΡ ΠΏΠΎ PHP ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ²ΠΎΠΉΡΠ΅ ΠΊΡΡΡ ΠΈ ΡΠ·Π½Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΡ Π½Π° PHP ΠΈ MySQL Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π½ΡΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ MVC
Π ΠΊΡΡΡΠ΅ 39 ΡΡΠΎΠΊΠΎΠ² | 15 ΡΠ°ΡΠΎΠ² Π²ΠΈΠ΄Π΅ΠΎ | ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΎΠΊΠ°
ΠΠ°Π»Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ imagesx ΠΈ imagesy.
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° (ΡΡΠΊΠΈΠ· ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅.
ΠΠ°Π»Π΅Π΅, Π΅ΡΠ»ΠΈ ΡΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½Π°ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΈΡΠ°Π΅ΠΌ ΠΏΠ°ΠΌΡΡΡ. Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ imagejpeg. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ jpg, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ. Π£Π΄Π°Π»ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ imagedestroy.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°. ΠΠ½ΠΎ Π½Π°ΠΌ Π΅ΡΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ.
ΠΠ΅ΡΠ½ΡΠΌΡΡ ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½Π°ΡΠ°Π»Π΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΏΡΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ (ΡΡΠ½ΠΊΡΠΈΡ imagecreatetruecolor) Ρ ΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΈ Π²ΡΡΠΎΡΠΎΠΉ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ Π½Π° ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΠ°Π³Π΅.
Π ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ($src) Π² ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ ($dest), ΠΈΠ·ΠΌΠ΅Π½ΡΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ imagecopyresampled Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Ρ ΠΏΠ΅ΡΠ΅ΡΡΠΌΠΏΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ.
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΈΡΠ°Π΅ΠΌ ΠΏΠ°ΠΌΡΡΡ.
ΠΡΠΎΠ³ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅Π»ΠΎΠΆΠΈΡΡ ΡΠ°ΠΉΠ» Π² ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ.
ΠΡΠ²Π΅ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ Π½Π° Π²ΠΎΠΏΡΠΎΡ Β«ΠΠΎΡΠ΅ΠΌΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ°Π·Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π² ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ?Β». ΠΠΎΠΆΠ΅ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π³Π»ΡΠ±ΠΈΠ½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΡΠΎ Π΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡ ΠΆΠ΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ°ΠΉΡΠ°Ρ .
Π‘ΠΎΠ²ΡΠ΅ΠΌ Π·Π°Π±ΡΠ». ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΠΊΡ:
ΠΠ½Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $tmp_path β ΠΏΡΡΡ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅.
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
Π€ΡΠ½ΠΊΡΠΈΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ. Π ΡΠ°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡ ΡΠ°ΡΡΡ ΡΠΊΡΠΈΠΏΡΠ°, Π³Π΄Π΅ ΠΌΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ. ΠΡ Π²Π΅Π΄Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ Π½ΠΎΠ²ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’Π΅ΠΏΠ΅ΡΡ ΡΡ Π΅ΠΌΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΊΠΎΠ²Π°: ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ β Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° β Π½Π°ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° β ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ ΠΏΠ°ΠΏΠΊΠ°. Π’ΠΎ Π΅ΡΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΡΡ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΏΡΠ½ΠΊΡ.
ΠΠ»Ρ ΠΏΡΡΠ΅Π³ΠΎ Π²Π΅ΡΠ΅Π»ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°ΡΡ ΡΠΎΡΠΌΡ Π²ΡΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠΈΠΏ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΠΏΠΎΠ»Ρ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° Π³ΡΠ°Π΄ΡΡΠ° ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°.
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΎΠΉ:
ΠΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π‘Π»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°. ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ»?
Π§ΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ.
ΠΠΎΡΠ»Π΅ΡΠ»ΠΎΠ²ΠΈΠ΅
ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π±Π½ΡΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°Π±ΠΎΡΠΈΠΉ. Π§ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ, Π·Π°Π±ΡΠΎΡΠΈΠ² ΡΠΊΡΠΈΠΏΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΡΠΎΠ·Π΄Π°Π² ΠΏΠ°ΠΏΠΊΠΈ Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π‘ΠΊΡΠΈΠΏΡ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π΄ΠΎΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Β«Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊΒ».
ΠΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΎΡΠΌΡΡΠ»ΠΈΡΡ ΠΈ Π΄ΠΎΠΏΠΈΠ»ΠΈΡΡ Π΄ΠΎ ΡΠ²ΠΎΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.
ΠΠΎΠΌΠ°ΡΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π»Ρ ΡΠ΅Π±Ρ. ΠΠ΅Π΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°. ΠΡΠ°ΠΊ:
ΠΡΠ½Π΅ΡΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΡΠΊΠΈΠ·Π° ($max_thumb_size) ΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ($max_size) ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΠΉΠ»Π°.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΈΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ.
ΠΡΠΎΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΡΠ°ΠΉΠ» ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, ΡΡΠΎ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ. Π’ΠΎ Π΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΠ΅ gif, ΡΠΎ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΏΠΈΡ Π±ΡΠ΄Π΅Ρ gif.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΡΠΊΠΈΠ· ΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°ΠΉΠ» Π·Π° ΠΎΠ΄Π½Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈΡΡ Β«Π²ΠΎΠ΄ΡΠ½ΠΎΠΉ Π·Π½Π°ΠΊΒ».
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±ΠΎΠ½ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΡΠΎΡΠΌΡ Π²ΡΠ±ΠΎΡ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅Π·ΠΊΠΈ β ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½Π°Ρ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΊ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ
Π‘ΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ ΡΠ°ΠΉΡΠ° RootHelp.ru
ΠΡ ΡΠ²Π»ΡΠ΅ΠΌΡΡ Π²Π΅Π± ΡΠ΅ΡΡΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ ΡΠ°ΠΉΡΠ°, Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠ΅ΠΉ Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠ° Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ, Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ ΡΠ°ΠΉΡΠ°, ΡΡΠΎΠΊΠΎΠ² ΠΏΠΎ Π²Π΅Π± ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΈ Ρ.ΠΏ. ΠΠ°ΠΊ ΠΡ ΠΏΠΎΠ½ΡΠ»ΠΈ ΡΠΆΠ΅ ΠΈΠ· Π²ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡ Π±Π°Π·ΠΈΡΡΠ΅ΠΌΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π²Π΅Π± ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π»Ρ ΠΠ°Ρ Π½ΡΠΆΠ½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», ΠΊΠΎΡΠΎΡΡΠΉ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΠ°ΠΌ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²ΠΎΠΈΡ ΠΈΠ΄Π΅ΡΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΡΠ°.
ΠΠ»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΊΠΎΠ², Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΠΎΠ²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠ°ΠΊ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠΊΠ°Ρ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΌΠ΅Π΅ΡΡΡ Π΄Π΅ΠΌΠΎ ΡΠ΅ΠΆΠΈΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠΊΡΠΈΠΏΡ ΠΈ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΡ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ΅Π±Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ Π½Π° ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π²ΡΡΡΠΎΠΈΡΡ Π² ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΡ.
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΡΡΠΎΠΊΠΎΠ² ΠΏΠΎ Π²Π΅Π± ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ , Π³Π΄Π΅ ΡΡΠΎΠΈΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΊΡΡ Π½Π΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π»ΡΡ, Π²ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π°Π²ΡΠΎΡΠ°ΠΌΠΈ ΡΡΠΎΠΊΠΎΠ².
ΠΠΎΡΠ»Π΅ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΡΠ°, Π±ΡΠ»ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Ρ Π² ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΠΉΡΠ° Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠΎΠ³ΡΡ ΡΠ»ΡΡΡΠΈΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΈ ΠΏΠΎΠΌΠΎΡΡ ΠΠ°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈ ΡΡΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½ΠΈΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- β ΠΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΊΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ². Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, ΠΎΠ½Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ : JavaScript, JQuery ΠΈ CSS. Π Π½Π΅ΠΉ ΡΡΠ°ΡΡΠ²ΡΡΡ Π²Π΅Π΄ΡΡΠΈΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: Internet Explorer, Mozilla Firefox, Google Chrome, Opera ΠΈ Safari. ΠΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΊΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΡΡΡ ΡΠΊΡΠΈΠΏΡΠ°.
- β ΠΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΠ΄ΠΎΠ±Π½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΡΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ, Π°Π²ΡΠΎΡΠ°, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠ΅Ρ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ.
- β Π’Π΅ΠΏΠ΅ΡΡ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ Π²ΡΠΏΡΡΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΡΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΡΡΠ°ΡΠΈ, Π±ΡΠ΄ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΡΠΌΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠΏΡΡΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ Π΄Π²Π° ΡΠ°Π·Π° Π² ΠΌΠ΅ΡΡΡ.
- β Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ»ΡΡΡΠ°ΡΡΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π°Π²ΡΠΎΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° Π½ΠΈΡ , ΡΡΠ°Π²ΠΈΡΡ Π»Π°ΠΉΠΊΠΈ, ΡΠ·Π½Π°Π²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± Π°Π²ΡΠΎΡΠ°Ρ , Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΡΡΠ°ΡΡ ΡΠ°ΠΌΠΈΠΌ Π°Π²ΡΠΎΡΠΎΠΌ. ΠΡΡΠ°ΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π°Π΄ΡΠ΅Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΈ ΡΡΡΠ»ΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π½Π° Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΊΠ°Π·Π°ΡΡ ΡΡΠΎΠΊ ΠΈ ΠΌΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ.
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΌΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ· ΡΡΠ΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ Π°Π²ΡΠΎΡΠΎΠ² ΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ ΠΈ ΡΠ°Π΄ΠΎΠ²Π°ΡΡ ΠΠ°Ρ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ!
WordPress. ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ². Π§Π°ΡΡΡ 1. ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ: Web-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° β’ CMS WoprdPress
Π WordPress Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ². Π‘ΡΠ°Π·Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π½ΠΈΡ ΡΡΡΠ΄Π½ΠΎ β Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΡΠ°ΡΡΠΎ Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΡΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΠ½Π°ΡΠ°Π»Π° Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π° ΠΏΠΎΡΠΎΠΌ ΠΈ Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΈ Π±ΡΠ΄Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ WordPress ΠΏΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΡΠΎΡΡΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΡΠΎΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠ°ΠΉΠ» Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ (year/month
) Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /wp-content/uploads
. ΠΠ°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
wp_posts
ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ, Ρ. Π΅. ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ wp_handle_upload()
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΡΠΊΠΎΠΉ Π΄Π»Ρ Π½Π°ΡΠΈΠ²Π½ΠΎΠΉ php-ΡΡΠ½ΠΊΡΠΈΠΈ move_uploaded_file()
.
<?php /* * Plugin name: ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² * Description: ΠΡΠΈΠΌΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ */ /* * ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ */ add_action('admin_menu', function () { add_menu_page( // ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³Π° title ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ 'ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²', // Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ 'ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²', // ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°, ΡΡΠΎΠ±Ρ Π±ΡΠ» ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΡΠΎΡ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ 'upload_files', // ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΌΠ΅Π½Ρ (ΡΡΡΠ°Π½ΠΈΡΡ) 'tokmakov_upload_page', // ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ function () { ?> <div> <h2>ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²</h2> <p> ΠΠ»Π°Π³ΠΈΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ <code>/wp-content/uploads</code>. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»Ρ, ΡΡΠΎ Π½Π΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ (attachments). ΠΠ°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΡ <code>wp_posts</code> Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»ΠΎΠ² ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ΄ΡΡ Π½Π΅ Π²ΠΈΠ΄Π½Ρ. </p> <?php if (isset($_SESSION['tokmakov_upload_file'])): ?> <p><?= $_SESSION['tokmakov_upload_file']; ?></p> <?php unset($_SESSION['tokmakov_upload_file']); ?> <?php endif; ?> <?php $action = admin_url('admin-post.php'); $redirect = $_SERVER['REQUEST_URI']; ?> <form action="<?= $action; ?>" method="post" enctype="multipart/form-data"> <?php wp_nonce_field('tokmakov_upload_file'); ?> <input type="hidden" name="action" value="tokmakov_upload_file" /> <input type="hidden" name="redirect" value="<?= $redirect ?>" /> <input type="file" name="tokmakov_upload_file" required /> <input type="submit" value="ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»" /> </form> </div> <?php }, // ΠΈΠΊΠΎΠ½ΠΊΠ° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Π° 'dashicons-upload', // ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠ° 90 ); }); /* * ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ * ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ */ add_action('init', function () { if (session_id() == '') { session_start(); } }); /* * ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΌΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ */ add_action('admin_post_tokmakov_upload_file', function () { // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π·Π°ΡΠΈΡΡ nonce ΠΈ ΠΏΡΠ°Π²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ $check1 = wp_verify_nonce( $_POST['_wpnonce'], 'tokmakov_upload_file' ); $check2 = current_user_can('upload_files'); ob_start(); if ($check1 && $check2) { // ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΎΠΉΠ΄Π΅Π½Π°, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ» $overrides = ['test_form' => false]; $result = wp_handle_upload( $_FILES['tokmakov_upload_file'], $overrides ); // ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π° if (isset($result['error'])) { echo 'ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»Π°'; } else { echo 'Π€Π°ΠΉΠ» Π±ΡΠ» ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½'; } } else { echo 'ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π°, ΡΠ°ΠΉΠ» Π½Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½'; } $_SESSION['tokmakov_upload_file'] = ob_get_clean(); // ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ // ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ $redirect = home_url(); if (isset($_POST['redirect'])) { $redirect = $_POST['redirect']; $redirect = wp_validate_redirect($redirect, home_url()); } wp_redirect($redirect); die(); });
ΠΠ°ΡΡΠΈΠ² $_FILES
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅:
Array ( [tokmakov_upload_file] => Array ( [name] => sunrise. jpg [type] => image/jpeg [tmp_name] => D:\work\temp\phpED8F.tmp [error] => 0 [size] => 490815 ) )
Π ΠΌΠ°ΡΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ wp_handle_upload()
Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π°:
Array ( [file] => D:/work/localhost24/www/wp-content/uploads/2019/08/sunrise.jpg [url] => http://www.host24.ru/wp-content/uploads/2019/08/sunrise.jpg [type] => image/jpeg )
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π½Π΅ Π±ΡΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½, ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅:
Array ( [error] => ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎΡ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π° Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌ ΠΏΠΎ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. )
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ (attachment)
Π₯ΠΎΡΠΎΡΠΎ, ΡΠ°ΠΉΠ» Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΌΡ ΡΠΌΠ΅Π΅ΠΌ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΡΠ΄Π΅Π»Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ media_handle_upload()
ΠΊΠ»ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° $_FILES
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. Π ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΌΠ° Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΠ°ΠΉΠ» Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ uploads
ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ wp_posts
Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
.
<?php /* * Plugin name: ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² * Description: ΠΡΠΈΠΌΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ */ /* * ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ */ add_action('admin_menu', function () { add_menu_page( // ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³Π° title ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ 'ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²', // Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ 'ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²', // ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°, ΡΡΠΎΠ±Ρ Π±ΡΠ» ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΡΠΎΡ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ 'upload_files', // ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΌΠ΅Π½Ρ (ΡΡΡΠ°Π½ΠΈΡΡ) 'tokmakov_upload_page', // ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ function () { ?> <div> <h2>ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²</h2> <p> ΠΠ»Π°Π³ΠΈΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ <code>/wp-content/uploads</code>. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΠ <code>wp_posts</code>, ΡΠΎ Π΅ΡΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠ²Π»ΡΡΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»ΠΎΠ². </p> <?php if (isset($_SESSION['tokmakov_upload_file'])): ?> <p><?= $_SESSION['tokmakov_upload_file']; ?></p> <?php unset($_SESSION['tokmakov_upload_file']); ?> <?php endif; ?> <?php $action = admin_url('admin-post.php'); $redirect = $_SERVER['REQUEST_URI']; ?> <form action="<?= $action; ?>" method="post" enctype="multipart/form-data"> <?php wp_nonce_field('tokmakov_upload_file'); ?> <input type="hidden" name="action" value="tokmakov_upload_file" /> <input type="hidden" name="redirect" value="<?= $redirect ?>" /> <input type="file" name="tokmakov_upload_file" required /> <input type="submit" value="ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»" /> </form> </div> <?php }, // ΠΈΠΊΠΎΠ½ΠΊΠ° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Π° 'dashicons-upload', // ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠ° 90 ); }); /* * ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ * ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ */ add_action('init', function () { if (session_id() == '') { session_start(); } }); /* * ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΌΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ */ add_action('admin_post_tokmakov_upload_file', function () { // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π·Π°ΡΠΈΡΡ nonce ΠΈ ΠΏΡΠ°Π²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ $check1 = wp_verify_nonce( $_POST['_wpnonce'], 'tokmakov_upload_file' ); $check2 = current_user_can('upload_files'); ob_start(); if ($check1 && $check2) { // ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΎΠΉΠ΄Π΅Π½Π°, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ» $result = media_handle_upload('tokmakov_upload_file', 0); if (is_wp_error($result)) { echo 'ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»Π°', PHP_EOL; } else { echo 'Π€Π°ΠΉΠ» Π±ΡΠ» ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½', PHP_EOL; } } else { echo 'ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π°, ΡΠ°ΠΉΠ» Π½Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½'; } $_SESSION['tokmakov_upload_file'] = ob_get_clean(); // ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ // ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ $redirect = home_url(); if (isset($_POST['redirect'])) { $redirect = $_POST['redirect']; $redirect = wp_validate_redirect($redirect, home_url()); } wp_redirect($redirect); die(); });
ΠΡΠΎΡΡΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡ multiple
Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΎΡΠΌΡ ΠΈ Π±ΡΠ΄Π΅ΠΌ Β«ΡΠΊΠ°ΡΠΌΠ»ΠΈΠ²Π°ΡΡΒ» ΡΡΠ½ΠΊΡΠΈΠΈ wp_handle_upload()
ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ Π·Π° ΡΠ°Π·:
<?php /* * Plugin name: ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² * Description: ΠΡΠΈΠΌΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ */ /* * ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ */ add_action('admin_menu', function () { add_menu_page( // ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³Π° title ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ 'ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²', // Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ 'ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²', // ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°, ΡΡΠΎΠ±Ρ Π±ΡΠ» ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΡΠΎΡ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ 'upload_files', // ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΌΠ΅Π½Ρ (ΡΡΡΠ°Π½ΠΈΡΡ) 'tokmakov_upload_page', // ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ function () { ?> <div> <h2>ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²</h2> <p> ΠΠ»Π°Π³ΠΈΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ <code>/wp-content/uploads</code>. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»Ρ, ΡΡΠΎ Π½Π΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ (attachments). ΠΠ°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΡ <code>wp_posts</code> Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»ΠΎΠ² ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ΄ΡΡ Π½Π΅ Π²ΠΈΠ΄Π½Ρ. </p> <?php if (isset($_SESSION['tokmakov_upload_file'])): ?> <ul> <?php foreach ($_SESSION['tokmakov_upload_file'] as $message): ?> <li><?= $message; ?></li> <?php endforeach; ?> </ul> <?php unset($_SESSION['tokmakov_upload_file']); ?> <?php endif; ?> <?php $action = admin_url('admin-post.php'); $redirect = $_SERVER['REQUEST_URI']; ?> <form action="<?= $action; ?>" method="post" enctype="multipart/form-data"> <?php wp_nonce_field('tokmakov_upload_file'); ?> <input type="hidden" name="action" value="tokmakov_upload_file" /> <input type="hidden" name="redirect" value="<?= $redirect ?>" /> <input type="file" name="tokmakov_upload_file[]" multiple required /> <input type="submit" value="ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ" /> </form> </div> <?php }, // ΠΈΠΊΠΎΠ½ΠΊΠ° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Π° 'dashicons-upload', // ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠ° 90 ); }); /* * ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ * ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ */ add_action('init', function () { if (session_id() == '') { session_start(); } }); /* * ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΌΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ */ add_action('admin_post_tokmakov_upload_file', function () { // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π·Π°ΡΠΈΡΡ nonce ΠΈ ΠΏΡΠ°Π²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ $check1 = wp_verify_nonce( $_POST['_wpnonce'], 'tokmakov_upload_file' ); $check2 = current_user_can('upload_files'); if ($check1 && $check2) { // ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠΈΠΊΠ»Π΅ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ $messages = []; $overrides = ['test_form' => false]; foreach ($_FILES['tokmakov_upload_file']['name'] as $i => $v) { $file = [ 'name' => $_FILES['tokmakov_upload_file']['name'][$i], 'type' => $_FILES['tokmakov_upload_file']['type'][$i], 'tmp_name' => $_FILES['tokmakov_upload_file']['tmp_name'][$i], 'error' => $_FILES['tokmakov_upload_file']['error'][$i], 'size' => $_FILES['tokmakov_upload_file']['size'][$i], ]; // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ uploads $result = wp_handle_upload($file, $overrides); // ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° if (isset($result['error'])) { $messages[] = 'ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»Π° ' . $file['name']; } else { $messages[] = 'Π€Π°ΠΉΠ» ' . $file['name'] . ' ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½'; } } } else { $messages[] = 'ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π°, ΡΠ°ΠΉΠ»Ρ Π½Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ'; } $_SESSION['tokmakov_upload_file'] = $messages; // ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ // ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ $redirect = home_url(); if (isset($_POST['redirect'])) { $redirect = $_POST['redirect']; $redirect = wp_validate_redirect($redirect, home_url()); } wp_redirect($redirect); die(); });
ΠΠ°ΡΡΠΈΠ² $_FILES
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ
ΡΠ°ΠΉΠ»Π°Ρ
:
Array ( [tokmakov_upload_file] => Array ( [name] => Array ( [0] => sunrise-1.jpg [1] => sunrise-2.jpg [2] => sunrise-3.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg [2] => image/jpeg ) [tmp_name] => Array ( [0] => D:\work\temp\phpC9BC. tmp [1] => D:\work\temp\phpC9CC.tmp [2] => D:\work\temp\phpC9CD.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [size] => Array ( [0] => 490815 [1] => 161294 [2] => 207875 ) ) )
ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ (attachments)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅, ΡΡΠ½ΠΊΡΠΈΡ media_handle_upload()
ΡΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ. ΠΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ $_FILES
ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°ΠΉΠ»Π΅. ΠΡΠΈ ΡΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΠ΄Π΅ΡΡ Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΠ΄Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ media_handle_sideload()
. ΠΡΠ΄Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ Π²ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠΈΠΊΠ»Π΅ ΠΈ Β«ΡΠΊΠ°ΡΠΌΠ»ΠΈΠ²Π°ΡΡΒ» ΡΡΠ½ΠΊΡΠΈΠΈ media_handle_sideload()
ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ.
<?php /* * Plugin name: ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² * Description: ΠΡΠΈΠΌΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ */ /* * ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ */ add_action('admin_menu', function () { add_menu_page( // ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³Π° title ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ 'ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²', // Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ 'ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²', // ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°, ΡΡΠΎΠ±Ρ Π±ΡΠ» ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΡΠΎΡ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ 'upload_files', // ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΌΠ΅Π½Ρ (ΡΡΡΠ°Π½ΠΈΡΡ) 'tokmakov_upload_page', // ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ function () { ?> <div> <h2>ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²</h2> <p> ΠΠ»Π°Π³ΠΈΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ <code>/wp-content/uploads</code>. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΠ <code>wp_posts</code>, ΡΠΎ Π΅ΡΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠ²Π»ΡΡΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»ΠΎΠ². </p> <?php if (isset($_SESSION['tokmakov_upload_file'])): ?> <ul> <?php foreach ($_SESSION['tokmakov_upload_file'] as $message): ?> <li><?= $message; ?></li> <?php endforeach; ?> </ul> <?php unset($_SESSION['tokmakov_upload_file']); ?> <?php endif; ?> <?php $action = admin_url('admin-post.php'); $redirect = $_SERVER['REQUEST_URI']; ?> <form action="<?= $action; ?>" method="post" enctype="multipart/form-data"> <?php wp_nonce_field('tokmakov_upload_file'); ?> <input type="hidden" name="action" value="tokmakov_upload_file" /> <input type="hidden" name="redirect" value="<?= $redirect ?>" /> <input type="file" name="tokmakov_upload_file[]" multiple required /> <input type="submit" value="ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ" /> </form> </div> <?php }, // ΠΈΠΊΠΎΠ½ΠΊΠ° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Π° 'dashicons-upload', // ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠ° 90 ); }); /* * ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ * ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ */ add_action('init', function () { if (session_id() == '') { session_start(); } }); /* * ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΌΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ */ add_action('admin_post_tokmakov_upload_file', function () { // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π·Π°ΡΠΈΡΡ nonce ΠΈ ΠΏΡΠ°Π²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ $check1 = wp_verify_nonce( $_POST['_wpnonce'], 'tokmakov_upload_file' ); $check2 = current_user_can('upload_files'); if ($check1 && $check2) { // ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠΈΠΊΠ»Π΅ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ $messages = []; foreach ($_FILES['tokmakov_upload_file']['name'] as $i => $v) { $file = [ 'name' => $_FILES['tokmakov_upload_file']['name'][$i], 'type' => $_FILES['tokmakov_upload_file']['type'][$i], 'tmp_name' => $_FILES['tokmakov_upload_file']['tmp_name'][$i], 'error' => $_FILES['tokmakov_upload_file']['error'][$i], 'size' => $_FILES['tokmakov_upload_file']['size'][$i], ]; // Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ uploads $result = media_handle_sideload($file, 0); // ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° if (is_wp_error($result)) { $messages[] = 'ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»Π° ' . $file['name']; } else { $messages[] = 'Π€Π°ΠΉΠ» ' . $file['name'] . ' ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½'; } } } else { $messages[] = 'ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π°, ΡΠ°ΠΉΠ»Ρ Π½Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ'; } $_SESSION['tokmakov_upload_file'] = $messages; // ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ // ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ $redirect = home_url(); if (isset($_POST['redirect'])) { $redirect = $_POST['redirect']; $redirect = wp_validate_redirect($redirect, home_url()); } wp_redirect($redirect); die(); });
Π ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠ»Π° ΡΡΠ½ΠΊΡΠΈΡ media_handle_sideload()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ
WP_Error Object ( [errors] => Array ( [upload_error] => Array ( [0] => ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎΡ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π° Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌ ΠΏΠΎ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ) ) [error_data] => Array () )
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠΈΡΠΊ: Web-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°Β β’ WordPressΒ β’ Π€Π°ΠΉΠ»Β β’ Π€ΠΎΡΠΌΠ°Β β’ ΠΠ°Π³ΡΡΠ·ΠΊΠ°Β β’ UploadΒ β’ FileΒ β’ wp_handle_uploadΒ β’ media_handle_uploadΒ β’ CMSΒ β’ POST
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² β ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Flask (ΡΡΡΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄) 0.10.1
ΠΡ Π΄Π°, ΡΡΠ°ΡΠ°Ρ Π΄ΠΎΠ±ΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΌΡΡΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°. Π ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΡΠ°Ρ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ:
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ°ΡΠ½ΡΠΌ Ρ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠ°ΠΉΠ» Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΡ Π½Π°ΡΠ°Π»ΠΎ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
import os from flask import Flask, request, redirect, url_for from werkzeug.utils import secure_filename UPLOAD_FOLDER = '/path/to/the/uploads' ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif']) app = Flask(__name__) app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
Π‘Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ΡΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠΎΠ². ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΏΠΎΠ½ΡΡΠ½Π°, werkzeug.secure_filename()
ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅. UPLOAD_FOLDER — ΡΡΠΎ ΠΏΡΡΡ, ΠΊΡΠ΄Π° Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠ°ΠΉΠ»Ρ, Π° ALLOWED_EXTENSIONS — ΡΡΠΎ Π½Π°Π±ΠΎΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΡΡΠ½ΡΡ
Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΄Π»Ρ URL. ΠΠ±ΡΡΠ½ΠΎ ΠΌΡ ΡΠ°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ, Π½ΠΎ ΠΏΠΎΡΠ΅ΠΌΡ
ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ? ΠΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ
(ΠΈΠ»ΠΈ Π½Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ
Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ URL Ρ ΡΡΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
ΠΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ? ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅ Π²Π°ΠΌ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Ρ ΠΎΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π΅ Π·Π°Π³ΡΡΠ·ΡΡ ΡΠ°ΠΉΠ»Ρ HTML, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ XSS (ΡΠΌ. Cross-Site Scripting (xss) — ΠΌΠ΅ΠΆΡΠ°ΠΉΡΠΎΠ²ΡΠΉ ΡΠΊΡΠΈΠΏΡΠΈΠ½Π³). Π’Π°ΠΊΠΆΠ΅ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .php, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ. ΠΡΠ°Π²Π΄Π°, ΠΊΠΎΠΌΡ Π½ΡΠΆΠ΅Π½ PHP Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅? π
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ, Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠ°ΠΉΠ» ΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° URL Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ:
def allowed_file(filename): return '. ' in filename and \ filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS @app.route('/', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': file = request.files['file'] if file and allowed_file(file.filename): filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) return redirect(url_for('uploaded_file', filename=filename)) return ''' <!doctype html> <title>Upload new File</title> <h2>Upload new File</h2> <form action="" method=post enctype=multipart/form-data> <p><input type=file name=file> <input type=submit value=Upload> </form> '''
Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ secure_filename()
? ΠΡ ΠΈΡΡ
ΠΎΠ΄ΠΈΠΌ ΠΈΠ·
ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Β«Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ²Π΅ΡΡΠΉ ΡΠΎΠΌΡ, ΡΡΠΎ Π²Π²ΡΠ» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΒ». ΠΡΠΎ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ
ΠΈ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ· ΡΠΎΡΠΌΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ
Π±ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. Π‘Π΅ΠΉΡΠ°Ρ Π³Π»Π°Π²Π½ΠΎΠ΅
Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ: Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ
ΡΠ°ΠΉΠ»Π°, Π΅ΡΠ»ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠ°ΠΉΠ» ΠΏΡΡΠΌΠΎ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΈ
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ secure_filename()
ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· Π΅Ρ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ? ΠΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ Ρ
ΠΎΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ
ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°:
filename = "../../../../home/username/.bashrc"
ΠΡΠ»ΠΈ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ../
— ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΡΠΎ ΠΏΡΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ
Ρ UPLOAD_FOLDER, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°
ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ. ΠΡΠΆΠ½ΠΎ
Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡΡΠ΅ ΠΌΠ½Π΅,
Ρ
Π°ΠΊΠ΅ΡΡ Π½Π°ΡΡΠΎΠΉΡΠΈΠ²Ρ π
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ:
>>> secure_filename('. ./../../../home/username/.bashrc') 'home_username_.bashrc'
ΠΡΡΠ°Π»Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡ: ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Flask 0.5 Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
from flask import send_from_directory @app.route('/uploads/<filename>') def uploaded_file(filename): return send_from_directory(app.config['UPLOAD_FOLDER'], filename)
ΠΡΡΠ³Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ — Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ uploaded_file Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° build_only ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ SharedDataMiddleware
.
Π’Π°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΡ
Π²Π΅ΡΡΠΈΡΡ
Flask:
from werkzeug import SharedDataMiddleware app.add_url_rule('/uploads/<filename>', 'uploaded_file', build_only=True) app.wsgi_app = SharedDataMiddleware(app.wsgi_app, { '/uploads': app.config['UPLOAD_FOLDER'] })
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ.
Π£Π»ΡΡΡΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² Π²Π΅ΡΡΠΈΠΈ 0. 6.
ΠΠ°ΠΊ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Flask ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ? ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ°Π»,
ΠΎΠ½ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π²ΠΎ
Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ (ΡΡΠ΄Π°, ΠΊΡΠ΄Π° ΡΠΊΠ°ΠΆΠ΅Ρ tempfile.gettempdir()
). ΠΠΎ ΠΊΠ°ΠΊ
ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Π°
Π±ΡΡΡ ΠΏΡΠ΅ΡΠ²Π°Π½Π°? ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Flask Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°, Π½ΠΎ Π²Ρ
ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡ Π»ΠΈΠΌΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ ΠΊΠ»ΡΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ MAX_CONTENT_LENGTH
:
from flask import Flask, Request app = Flask(__name__) app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
ΠΠΎΠ΄ Π²ΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° 16 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ°ΠΌΠΈ. ΠΡΠ»ΠΈ
ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, Flask ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ RequestEntityTooLarge
.
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π±ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎ Flask 0.6, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° request. ΠΠ° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Werkzeug ΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ΄ΡΠΌΡΠ²Π°ΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ» ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ, ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΏΡΠΎΡΠ΅Π½Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Π΄Π°Π²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ JavaScript ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠΎΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΊΠ°ΠΆΠ΄ΡΠ΅ 5 ΡΠ΅ΠΊΡΠ½Π΄, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ. ΠΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΎΠ½ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ? ΠΠ»ΠΈΠ΅Π½Ρ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΆΠ΅ ΠΈ ΡΠ°ΠΊ Π·Π½Π°Π΅Ρ.
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½Ρ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π² Π²Π΅Π±Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HTML5, Java, Silverlight ΠΈΠ»ΠΈ Flash, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ:
ΠΠ»ΠΎΠ³ web-ΠΌΠ°ΡΡΠ΅ΡΠ° Β» ΠΡΡ ΠΈΠ² ΡΠ°ΠΉΡΠ° Β» ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ CURL
22 Π‘Π΅Π½ΡΡΠ±ΡΡ 2008, 12:46
ΠΠ»Ρ HTTP Π·Π°ΠΏΡΠΎΡΠ° ΡΠΈΠΏΠ° POST ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ· HTML ΡΠΎΡΠΌ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ application/x-www-form-urlencoded ΠΈ multipart/form-data. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ Π΄Π°Π²Π½ΡΠΌ-Π΄Π°Π²Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π² ΡΠ·ΡΠΊΠ΅ HTML Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΅ΡΠ΅Π· HTML ΡΠΎΡΠΌΡ.
Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΌΡ ΠΎΡΡΡΠ»Π°ΡΡ Π΅ΡΠ΅ ΠΈ ΡΠ°ΠΉΠ»Ρ. Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΠΎΡΡΠΈΡΠΌ W3C Π²Π·ΡΠ»ΡΡ Π·Π° Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΡΠΌΠ°ΡΠ° POST Π·Π°ΠΏΡΠΎΡΠ°. Π ΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΈΡΠΎΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΡΡ ΡΠΎΡΠΌΠ°Ρ MIME (Multipurpose Internet Mail Extensions β ΠΌΠ½ΠΎΠ³ΠΎΡΠ΅Π»Π΅Π²ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Mail ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ), ΠΏΠΎΡΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΡ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄ Π·Π°Π½ΠΎΠ²ΠΎ, ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ POST Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ HTTP.
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ multipart/form-data ΠΎΡ application/x-www-form-urlencoded Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡ Π½Π° ΡΠ°Π·Π΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ (boundary). ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·Π΄Π΅Π» ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π½Π΅ΠΌ Ρ ΡΠ°Π½ΡΡΡΡ, Ρ.Π΅. Π² ΠΎΠ΄Π½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² (ΠΊΠ°ΠΊ Π² ΡΠ΅Π»Π΅ ΠΏΠΈΡΡΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ).
ΠΡΠΎ ΡΠ΅ΠΎΡΠΈΡ. Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ CURL ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ POST-Π·Π°ΠΏΡΠΎΡ ΡΠΈΠΏΠ° multipart/form-data:
<?php$upload = ‘image.gif’;
$postdata = array( ‘name’ => ‘evgenijj’,
Β Β Β Β Β Β Β Β Β Β ’email’ => ‘evgenijj@mail. ru’,
Β Β Β Β Β Β Β Β Β Β ‘message’ => ‘ΠΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ evgenijj’,
Β Β Β Β Β Β Β Β Β Β ‘upload’ => «@».$upload );
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://server.com/getfile.php’);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_exec($ch);
curl_close($ch);
?>
Π€Π°ΠΉΠ» getfile.php Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ http://server.com:
<?php
print_r( $_POST );
print_r( $_FILES );
move_uploaded_file ( $_FILES[‘upload’][‘tmp_name’], ‘image.gif’ );
?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ:
Array(
Β Β [name] => evgenijj
Β Β [email] => [email protected]
Β Β [message] => ΠΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ evgenijj
)
Array
(
Β Β [upload] => Array
Β Β Β Β (
Β Β Β Β Β Β [name] => image. gif
Β Β Β Β Β Β [type] => image/gif
Β Β Β Β Β Β [tmp_name] => C:\WINDOWS\TEMP\php71.tmp
Β Β Β Β Β Β [error] => 0
Β Β Β Β Β Β [size] => 100405
Β Β Β Β )
)
Array
(
Β Β [url] => http://localhost1/getfile.php
Β Β [content_type] => text/html
Β Β [http_code] => 200
Β Β [header_size] => 193
Β Β [request_size] => 193
Β Β [filetime] => -1
Β Β [ssl_verify_result] => 0
Β Β [redirect_count] => 0
Β Β [total_time] => 2.063
Β Β [namelookup_time] => 0
Β Β [connect_time] => 0
Β Β [pretransfer_time] => 0
Β Β [size_upload] => 100943
Β Β [size_download] => 349
Β Β [speed_download] => 169
Β Β [speed_upload] => 48930
Β Β [download_content_length] => 349
Β Β [upload_content_length] => 100943
Β Β [starttransfer_time] => 2
Β Β [redirect_time] => 0
)
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ: Π½Π° ΡΠΎΡΡΠΌΠ΅ PHPCLUB.RU Π²ΡΡΠ΅ΡΠΈΠ» ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ ΡΠ°ΠΉΠ»Π° β ΠΈΠ½Π°ΡΠ΅ CURL Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ failed creating formpost data.
Π‘ΡΡΠ»ΠΊΠΈ ΠΏΠΎ ΡΠ΅ΠΌΠ΅:
PHP: ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² — Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ
ΠΡΠ»ΠΈ «Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 50 ΠΈΠ»ΠΈ 100 ΠΠ) Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:ΠΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΠΈΡΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Π²Π°ΡΠ΅ ΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ, ΠΈ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΡΠ΅ΡΡ Π½Π΅ «Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ», Π° «Π²ΡΠ΅ΠΌΡ Π²Π²ΠΎΠ΄Π°», ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 60 ΡΠ΅ΠΊΡΠ½Π΄. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ 1-2 ΡΠ°ΡΠ°.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ Π½Π°Ρ Π±ΡΠ»ΠΈ Β«Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π°Π½ΡΠ°Β», ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
1) ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠΈ ini-Π·Π°ΠΏΠΈΡΠΈ:
* session.gc_maxlifetime
* max_input_time
* max_execution_time
* upload_max_filesize
* post_max_size
2) ΠΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ? ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎ, Π½Π΅ Π²ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°. ini_set () ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π·Π΄Π΅ΡΡ:
http://www.php.net/manual/es/ini.list.php
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ «upload_max_filesize» ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ — ΡΡΠΎ PHP_INI_PERDIR, Π° Π½Π΅ PHP_INI_ALL. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ini_set ():
http://www.php.net/manual/en/configuration.changes.modes.php
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ .htaccess.
3) ΠΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ?. ΠΡΠΎΡΡΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ «.htaccess», ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ php. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ apache. ΠΠ°ΠΌ Π½ΡΠΆΠ½Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ AllowOverride.
Π‘ΠΌ. ΠΠ΄Π΅ΡΡ:
http://www.php.net/manual/en/configuration.changes.php
ΠΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΡΡΠΎ Π²ΡΡΡΠ½ΡΡ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠΈ ΠΌΠ°ΡΡΠ΅Ρ-ΡΠ°ΠΉΠ»Ρ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ AllowOverride None.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ «Π·Π°Π³ΡΡΠ·ΠΊΡ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²», Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΡΡ Π²Π²Π΅ΡΡ ΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠ°ΡΠ°ΡΡΡΡ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ apache.
ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²:
ΠΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ, Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ 100 ΠΠ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ 2 ΡΠ°ΡΠ°:
Π apache-virtual-host:
——————— —————————————
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ AllowOverride
—————————————— ——————
In . htaccess:
————————— ———————————
php_value session.gc_maxlifetime 10800
php_value max_input_time 10800
php_value max_execution_time 10800
php_value upload_max_filesize 110M
php_value post_max_size 120M
——————————————— —————
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅
— Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 1-2 ΡΠ°ΡΠΎΠ² Ρ Π΄Π°Ρ 3 ΡΠ°ΡΠ° (3600×3)
— ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ 100 ΠΠ, Ρ ΡΠ°Π·ΡΠ΅ΡΠ°Ρ Π²ΠΎΠ·Π΄ΡΡ
Π²ΡΡΠ΅ Π΄Π»Ρ ΡΠ°ΠΉΠ» (110M) ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (120M).
ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΌΠ΅Π΄ΠΈΠ°ΡΠ΅ΠΊΡ WordPress ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² PHP
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ WordPress, ΠΎΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² ΠΠ΅Π΄ΠΈΠ°> ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ°?
Π£ΠΏΠΎΡΡΠ΄ΠΎΡΠΈΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° WordPress ΠΏΡΠΎΡΠ΅.ΠΡΠ΅ ΡΠΎΡΠΎ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ ΡΠ΄Π΅Π»Π°Π½Ρ ΠΌΠ½ΠΎΠΉ Π½Π° ΠΊΡΡΠΎΡΡΠ΅ Π ΠΎΠ·Π° Π₯ΡΡΠΎΡ.
Π¨Π°Π³ 1.
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ HTML-ΡΠΎΡΠΌΡΠ§ΡΠΎ Π·Π΄Π΅ΡΡ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ?
- Π― ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ» ΡΠ°ΠΉΠ» PHP
process_upload.php
Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ Π² Π΄ΡΡΠ³ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° Π² ΡΡΡΠΎΠΊΠ΅ 4 (Ρ ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ ΠΊΠΎΠ΄ Π½Π° ΡΠ°Π³Π΅ 2). - Π€ΠΎΡΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ Π°ΡΡΠΈΠ±ΡΡ
enctype = "multipart / form-data"
.ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ Π·Π°Π±ΡΠ²Π°ΡΡ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΡΠΊΠΎΠ΄ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΌΡ, ΠΏΡΠΎΡΡΠΎ Π²ΡΡΠ°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ» functions.php
:
add_shortcode ('misha_uploader', 'misha_uploader_callback'); function misha_uploader_callback () { return ''/process_upload.php" method = "post" enctype = "multipart / form-data"> ΠΠ°ΡΠ° ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡ: '; }
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ [misha_uploader]
Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅.
Π¨Π°Π³ 2. ΠΠ±ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π² PHP ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Π° Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ WordPress.
ΠΡΠΎ ΡΠ°ΠΉΠ» process_upload.php
, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ΅ΡΠΈΠ» ΡΠΎΠ·Π΄Π°ΡΡ Π² ΠΌΠΎΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠ΅ΠΌ.
'/'. $ profilepicture ['ΠΈΠΌΡ']; $ new_file_mime = mime_content_type ($ profilepicture ['tmp_name']); Π΅ΡΠ»ΠΈ (ΠΏΡΡΡΠΎ ($ profilepicture)) die ('Π€Π°ΠΉΠ» Π½Π΅ Π²ΡΠ±ΡΠ°Π½.'); if ($ profilepicture ['ΠΎΡΠΈΠ±ΠΊΠ°']) die ($ profilepicture ['ΠΎΡΠΈΠ±ΠΊΠ°']); Π΅ΡΠ»ΠΈ ($ profilepicture ['ΡΠ°Π·ΠΌΠ΅Ρ']> wp_max_upload_size ()) die (Β«ΠΠ½ΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π΅Π»ΠΈΠΊΠΎ, ΡΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ.Β»); Π΅ΡΠ»ΠΈ (! in_array ($ new_file_mime, get_allowed_mime_types ())) die ('WordPress Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ ΡΠΈΠΏ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.'); while (file_exists ($ new_file_path)) { $ i ++; $ new_file_path = $ wordpress_upload_dir ['ΠΏΡΡΡ']..] + $ / ',' ', $ profilepicture [' name ']), 'post_content' => '', 'post_status' => 'Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ' ), $ new_file_path); // wp_generate_attachment_metadata () Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ» require_once (ABSPATH. 'wp-admin / includes / image.php'); // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ wp_update_attachment_metadata ($ upload_id, wp_generate_attachment_metadata ($ upload_id, $ new_file_path)); // ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ wp_redirect ($ wordpress_upload_dir ['url']. '/'. Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ ($ new_file_path)); }
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ΅ΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ wp_insert_attachment ()
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ set_post_thumbnail ()
.
ΠΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
ΠΠΈΡΠ° Π ΡΠ΄ΡΠ°ΡΡΡΡ
Π― ΠΎΡΠ΅Π½Ρ Π»ΡΠ±Π»Ρ WordPress, WooCommerce ΠΈ Gutenberg. 12 Π»Π΅Ρ ΠΎΠΏΡΡΠ°.
ΠΡΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°? Π‘Π²ΡΠ·Π°ΡΡΡΡ
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉΠ΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΡΠ° | Π¦ΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΎΠΏΡΡΠ°
ΠΡΠΎ Π³ΠΎΡΡΠ΅Π²ΠΎΠΉ ΠΏΠΎΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Cloudinary, ΠΎΠ±Π»Π°ΡΠ½ΡΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, Π²ΠΊΠ»ΡΡΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ, Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΡ.Π£Π·Π½Π°ΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ± ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ PHP Π·Π΄Π΅ΡΡ.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΌΠ°ΡΡΡΠ°Π±Π΅, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π²ΡΡΡΠ½ΡΡ. ΠΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ²ΠΎΠΈΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°Ρ , ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠΈΠΈ, ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ΅Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²ΡΡΡΠ½ΡΡ, Π½ΠΎ Π²Π°ΠΌ ΡΡΠΎΠΈΡ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΊΡΡΠΏΠ½ΠΎΠΌΠ°ΡΡΡΠ°Π±Π½ΡΡ Π·Π°Π³ΡΡΠ·ΠΎΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°ΠΉΡΠ° Π½Π΅ΡΠ°Π·ΡΡΠ²Π½ΠΎ ΡΠ²ΡΠ·Π°Π½Ρ. ΠΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΡΠ»Π΅Π΄ΡΠ΅ΡΠ΅ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΡΠΌΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΡΡΡΡΠΎ (ΠΈΠ»ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ) ΡΡΡΠ°Π½ΠΈΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠ»Π΅Π΅ 50 ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡΡ ΠΏΠΎΡΡΡΡ ΡΠ²ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π·Π°Π³ΡΡΠΆΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΡΠ΅ΠΌ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ, ΠΈΠ»ΠΈ Π² Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ Π΅Π³ΠΎ, Π²ΠΊΠ»ΡΡΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ PHP, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π·Π° ΡΠ°Π· Π² ΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΉ PHP Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΡ.
Π’ΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π²Π°Ρ ΡΠ°ΠΉΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΡΡ Π»ΡΡΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ Π²ΡΠ΄Π΅Π»ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΈ ΠΏΡΠΈΠ΅ΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π²Π°Ρ Π²Π΅Π±-ΡΠ°ΠΉΡ. ΠΡΠΈΠΌΠ΅Π½ΡΡ ΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°, — ΡΠΆΠ°ΡΠ½ΠΎ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΡΠΌ Π²Π°ΡΠ΅Π³ΠΎ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°.ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π²ΡΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠΎΡ ΠΆΠ΅ ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠ΅Π³ΠΎ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°, ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΡΡΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄Π°ΠΆ.
ΠΠ΄Π½Π° ΠΈΠ· Π»ΡΡΡΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, — ΡΡΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΡ Π½Π° Ρ ΠΎΡΡΠΈΠ½Π³ Π² ΡΠ΅ΡΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° (CDN). CDN — ΡΡΠΎ, ΠΏΠΎ ΡΡΡΠΈ, Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠ΅ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΠΎΠ³Π΄Π° ΠΊΡΠΎ-ΡΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²Π°Ρ ΡΠ°ΠΉΡ, CDN Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊ Π½Π΅ΠΌΡ ΡΠ΅ΡΠ²Π΅Ρ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡ Π·Π° ΡΡΠ΅Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΈ ΠΏΠ°Π»ΡΡΠ΅Π² ΠΊ URL-Π°Π΄ΡΠ΅ΡΠ°ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ Π² Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ, ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΡΡ . ΠΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅Π±-ΠΌΠ°ΡΡΠ΅ΡΠ° ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΊ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ·-Π·Π° ΠΎΠΏΠ°ΡΠ΅Π½ΠΈΠΉ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΎΠ±Π½ΠΎΠ²ΡΡ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ°ΡΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ .
Π§ΡΠΎΠ±Ρ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ ΡΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Ρ ΡΡ MD5 Π²ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΊ ΠΈΡ URL-Π°Π΄ΡΠ΅ΡΠ°ΠΌ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.MD5 — ΡΡΠΎ, ΠΏΠΎ ΡΡΡΠΈ, ΠΎΡΠΏΠ΅ΡΠ°ΡΠΎΠΊ ΠΏΠ°Π»ΡΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ³Π΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ MD5 ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Ρ URL-Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π±ΡΠ°ΡΠ·Π΅Ρ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ Π·Π°Ρ Π²Π°ΡΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
Π‘Π΄Π΅Π»Π°Π² ΡΡΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π³, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΎΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΡΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΡΠ΅Π½Ρ ΠΎΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΈ, Π° ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ»ΡΠΆΠ°Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΡΠΌ ΡΠ΅Π»ΡΠΌ Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ — Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΏΠΎΡΡΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΡΡ ΡΠ΄ΡΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.ΠΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ, ΡΡΠΎ ΡΡΠ°ΡΠΈΡ Π²Π°ΡΠΈ Π΄Π΅Π½ΡΠ³ΠΈ.
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ PNG ΠΊΠ°ΠΊ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ. ΠΠ±ΡΡΠ½ΠΎ Π½Π΅Ρ Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠ΅ΠΉ JPEG ΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠ΅ΠΉ PNG, Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ. ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ PNG ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠΎΠ², Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ.
Π‘ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²Π΅Π±-ΡΠ°ΠΉΡΠ° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.ΠΡΠ΅Π³Π΄Π° ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π²Π°ΠΆΠ½ΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΡΠΌ Π²Π΅Π±-ΡΠ°ΠΉΡΠ° ΠΊΡΠΈΡΡΠ°Π»ΡΠ½ΠΎ ΡΠΈΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π²Π°ΠΌ Π²ΡΠ΅ ΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ JPEG. Π§Π°ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ JPEG Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ 95% ΠΈ 75%, Π½ΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°ΠΉΠ» Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π²ΡΠΎΡΠΎΠΉ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: ΠΠ°ΠΊΠ΅ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠΈΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΡΡΠ΅ΠΊΡΡ, ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌΡ ΡΠΎΠΌΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π»ΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ»ΡΡΡΠΈΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π²Π°Ρ ΡΠ°ΠΉΡ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ. ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΡΡΠΎΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°.
ΠΠ°ΡΠΈΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ PHP Π‘ΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ PHP Π½Π° Π²Π°Ρ ΡΠ°ΠΉΡ ΠΈΠ»ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ — ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ Ρ ΡΠ³ΡΠΎΠ·Π°ΠΌΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π»ΡΡΡΠΈΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠ²ΡΡΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ PHP:
- Π Π°Π·ΡΠ΅ΡΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ jpg, jpeg, gif ΠΈ png.
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ PHP.
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΠΊΠΈΠ±Π΅ΡΠ°ΡΠ°ΠΊΠΈ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ PHP, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΡΡΠΎΡ Π½Π° Github.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π° ΡΠ°ΠΊΠΆΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π½Π΅ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 25 ΠΠ Π² ΡΠ΅Π»Π΅ΡΠΎΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· 3G-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π·Π°ΠΉΠΌΠ΅Ρ ΠΎΠΊΠΎΠ»ΠΎ ΠΌΠΈΠ½ΡΡΡ (ΡΡΠ΅Π΄Π½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ 4,3 ΠΠ±ΠΈΡ / Ρ).
Π‘ΠΆΠ°ΡΡ ΠΠΎ ΠΠ°Π³ΡΡΠ·ΠΈΡΡ
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΊΠ°ΠΊ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ , ΡΠ°ΠΊ ΠΈ ΠΏΠ»Π°ΡΠ½ΡΡ , ΠΌΠΎΠ³ΡΡ ΡΠΆΠΈΠΌΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ. Π‘ΠΆΠ°ΡΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°.
Π‘ΠΆΠ°ΡΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠΆΠ°ΡΠΈΠ΅ Ρ ΠΏΠΎΡΠ΅ΡΡΠΌΠΈ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ.ΠΡΠ±ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΆΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ: Π±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠ°Ρ ΡΠΊΠΎΡΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΡΠ° ΠΈΠ·-Π·Π° ΡΠΆΠ°ΡΠΈΡ Ρ ΠΏΠΎΡΠ΅ΡΡΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΉΡΠ° Π±Π΅Π· ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ·-Π·Π° ΡΠΆΠ°ΡΠΈΡ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΡ.
Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.ΠΠ°ΠΆΠ΄Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΡΠ°ΡΠ·Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π²ΠΎΠΊΡΡΠ³ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ Π²Π°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠ΅Π³ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅, ΠΈ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π²ΡΠ΅ΠΌ ΠΏΠΎΡΠ΅ΡΠ°ΡΡΠΈΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌ ΡΠΎΡΠ½ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ, Π½Π΅ ΡΡΠ΅Π±ΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΡ Π²ΡΡΡΠ½ΡΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π²Π°ΡΠΈ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠΎΠ½Π΅ΡΠ½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΡΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, Π΅ΡΠ»ΠΈ:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ΡΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΏΠΎΠΊΠ°Π·Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠΎΡ ΠΆΠ΅ ΡΠ΅ΡΠ²Π΅Ρ, ΡΡΠΎ ΠΈ Π²Π°Ρ ΡΠ°ΠΉΡ.
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΈ ΠΏΠ°Π»ΡΡΠ΅Π² Π² URL ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅, ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
- ΠΡΠ΅Π³Π΄Π° Π·Π°Π³ΡΡΠΆΠ°ΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°.
- ΠΠΎΠ½ΠΈΠ·ΡΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ.
- ΠΠ±Π΅ΡΠΏΠ΅ΡΡΡΠ΅ Π½Π°Π΄Π»Π΅ΠΆΠ°ΡΡΡ Π·Π°ΡΠΈΡΡ ΡΠ²ΠΎΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π·Π°Π³ΡΡΠ·ΠΊΠΈ PHP.
Π£Π·Π½Π°ΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Catchpoint Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΡ-Π΄ΡΠ°ΠΉΠ²Π° Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ.
ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | WordPress.org
ΠΡΠΈΠ²Π΅Ρ,
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ PHP 7.3 ΠΈ WordPress 5.3? ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° PHP 7.2.
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π»ΠΈΠΌΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ°. https://haydenjames.io/understanding-php-memory_limit/
ΠΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ.
1. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΌΠ΅Π΄ΠΈΠ°ΡΠ΅ΠΊΡ ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π»ΡΠ±ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ. ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Edit ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΎΡΡΠ°Π²ΡΡΠ΅ ΡΡΠΎ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅.
2. ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ΅ΡΠ΅Π· FTP-ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΡΡ ΠΏΠ°ΠΏΠΊΡ, Π³Π΄Π΅ Ρ ΡΠ°Π½ΡΡΡΡ Π²Π°ΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π² ΡΡΡ ΠΏΠ°ΠΏΠΊΡ ΡΠ²ΠΎΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ.
3. ΠΡ ΠΏΠΎΠΊΠ° Π½Π΅Ρ Π² Π²Π°ΡΠ΅ΠΉ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ΅ΠΊΠ΅. ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«ΠΠΎΠ±Π°Π²ΠΈΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°Β». ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ / Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ (ΠΎΡ Dion Hulse).
4. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π²Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ WordPress (Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ).
5. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π½Π°Π²Π΅Π΄ΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΡΡΠΈ Π½Π° ΠΠ΅Π΄ΠΈΠ° ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π½ΠΎΠ²ΡΡ ΠΎΠΏΡΠΈΡ = ΠΠΎΠ±Π°Π²ΠΈΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°
6. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΡ, Π² ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ ΡΠ²ΠΎΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π²ΡΠ±ΡΠ°Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΌΠ΅Π΄ΠΈΠ°ΡΠ΅ΠΊΡ (Ρ ΠΎΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π΄ΠΎΠΏΡΡΡΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ).
7. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π½Π°ΠΆΠΌΠ΅ΡΠ΅ «ΠΠ΅ΡΠ΅ΠΉΡΠΈ», ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π½ΠΎ Π½Π΅ ΠΎΡΠΌΠ΅Π½ΡΠΉΡΠ΅ Π΅Π³ΠΎ ΠΈ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅, ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ ΡΠΊΡΠ°Π½Π΅, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ. ΠΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΎΠ²ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ).
8. Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΡΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ΅ΠΊΠ΅ Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΎΠΉ Β«ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΎΒ» Π² ΠΊΠΎΠ½ΡΠ΅. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΡΠ²ΠΎΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΡ , ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
ΠΠ ΠΠΠΠ§ΠΠΠΠ―
Π€Π°ΠΉΠ»Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ ΡΡΠ΄Π°, ΠΎΡΠΊΡΠ΄Π° Π²Ρ ΠΈΡ
Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΠΈΡ
Π² ΡΡ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΡ, ΡΡΠΎ ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΠ ΠΠΠΠ ΡΠ΅ΠΌ ΠΈΡ
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²ΡΡΡΡ Π² ΠΌΠ΅Π΄ΠΈΠ°ΡΠ΅ΠΊΠ΅, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π²Π°ΡΠ΅ΠΌ Π²Π΅Π±-ΡΠ°ΠΉΡΠ΅ (ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ).
Π― Π±Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ 10-15 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π·Π° ΡΠ°Π·, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅. ΠΠΎΠ»ΡΡΠ΅, ΠΈ Π²Ρ ΡΠΈΡΠΊΡΠ΅ΡΠ΅ Π²ΡΠΉΡΠΈ ΠΈΠ· Π²Π°ΡΠ΅ΠΉ cPanel ΠΈΠ·-Π·Π° Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΡΡΠΈΡΡ Π²Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΡΡΡΠ΄Π° ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½Π°Ρ ΠΊΠΎΠΏΠΈΡ).
Π’Π°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ Π²Π΅ΡΠΊΡ wordpress.org, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² Π½Π΅ΠΉ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. https://wordpress.org/support/topic/unable-to-upload-images-67/page/5/
Π‘ΠΎΠΎΠ±ΡΠΈΡΠ΅ ΠΌΠ½Π΅, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ!
Android ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PHP MySQL ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ListView
package net. simpleifiedcoding.imageuploadsample;
ΠΈΠΌΠΏΠΎΡΡ android.app.ProgressDialog;
ΠΈΠΌΠΏΠΎΡΡ android.content.Context;
ΠΈΠΌΠΏΠΎΡΡ android.content.Intent;
import android.database.Cursor;
ΠΈΠΌΠΏΠΎΡΡ android.graphics.Bitmap;
ΠΈΠΌΠΏΠΎΡΡ android.net.Uri;
ΠΈΠΌΠΏΠΎΡΡ android.os.AsyncTask;
ΠΈΠΌΠΏΠΎΡΡ android.provider.MediaStore;
ΠΈΠΌΠΏΠΎΡΡ android.support.v7.app.AppCompatActivity;
ΠΈΠΌΠΏΠΎΡΡ android.os.Bundle;
ΠΈΠΌΠΏΠΎΡΡ android.util.Base64;
ΠΈΠΌΠΏΠΎΡΡ android.util.Log;
ΠΈΠΌΠΏΠΎΡΡ android.view.Menu;
ΠΈΠΌΠΏΠΎΡΡ android.view.MenuItem;
ΠΈΠΌΠΏΠΎΡΡ android.view.View;
ΠΈΠΌΠΏΠΎΡΡ android.widget.Button;
ΠΈΠΌΠΏΠΎΡΡ android.widget.ImageView;
ΠΈΠΌΠΏΠΎΡΡ android.widget.Toast;
ΠΈΠΌΠΏΠΎΡΡ java.io.ByteArrayOutputStream;
import java.io.IOException;
ΠΈΠΌΠΏΠΎΡΡ java.util.HashMap;
ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠ»Π°ΡΡ MainActivity ΡΠ°ΡΡΠΈΡΡΠ΅Ρ AppCompatActivity, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ View.OnClickListener {
ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° UPLOAD_URL = «http://simplifiedcoding. 16mb.com/PhotoUpload/upload.php»;
ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠ½Π°Π» String UPLOAD_KEY = «image»;
ΡΠ°ΡΡΠ½ΡΠΉ int PICK_IMAGE_REQUEST = 1;
ΠΏΡΠΈΠ²Π°ΡΠ½Π°Ρ ΠΠ½ΠΎΠΏΠΊΠ° buttonChoose;
ΠΏΡΠΈΠ²Π°ΡΠ½Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° buttonUpload;
ΡΠ°ΡΡΠ½Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° buttonView;
ΡΠ°ΡΡΠ½ΡΠΉ ImageView imageView;
ΡΠ°ΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Bitmap;
ΡΠ°ΡΡΠ½ΡΠΉ Uri filePath;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
buttonChoose = (ΠΠ½ΠΎΠΏΠΊΠ°) findViewById (R.id.buttonChoose);
buttonUpload = (ΠΠ½ΠΎΠΏΠΊΠ°) findViewById (R.id.buttonUpload);
buttonView = (ΠΠ½ΠΎΠΏΠΊΠ°) findViewById (R.id.buttonViewImage);
imageView = (ImageView) findViewById (R.id.imageView);
buttonChoose.setOnClickListener (ΡΡΠΎ);
ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΠ°Π³ΡΡΠ·ΠΈΡΡ.setOnClickListener (ΡΡΠΎ);
buttonView. setOnClickListener (ΡΡΠΎ);
}
private void showFileChooser () {
Intent intent = new Intent ();
intent.setType («ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ / *»);
intent.setAction (Intent.ACTION_GET_CONTENT);
startActivityForResult (Intent.createChooser (Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, Β«ΠΡΠ±ΡΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Β»), PICK_IMAGE_REQUEST);
}
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
super.onActivityResult (ΠΊΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ°, ΠΊΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Π΄Π°Π½Π½ΡΠ΅);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data! = Null && data.getData ()! = Null) {
filePath = data.getData ();
ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ {
bitmap = MediaStore.Images.Media.getBitmap (getContentResolver (), filePath);
imageView.setImageBitmap (ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅);
} catch (IOException e) {
e.printStackTrace ();
}
}
}
ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° getStringImage (Bitmap bmp) {
ByteArrayOutputStream baos = new ByteArrayOutputStream ();
bmp. compress (Bitmap.CompressFormat.JPEG, 100, baos);
Π±Π°ΠΉΡ [] imageBytes = baos.toByteArray ();
String encodedImage = Base64.encodeToString (imageBytes, Base64.DEFAULT);
return encodedImage;
}
private void uploadImage () {
class UploadImage ΡΠ°ΡΡΠΈΡΡΠ΅Ρ AsyncTask
ProgressDialog loading;
RequestHandler rh = Π½ΠΎΠ²ΡΠΉ RequestHandler ();
@Override
protected void onPreExecute () {
super.onPreExecute ();
Π·Π°Π³ΡΡΠ·ΠΊΠ° = ProgressDialog.show (MainActivity.this, Β«ΠΠ°Π³ΡΡΠ·ΠΊΠ° …Β», null, true, true);
}
@Override
protected void onPostExecute (String s) {
super.onPostExecute (s);
loading.dismiss ();
Toast.makeText (getApplicationContext (), s, Toast.LENGTH_LONG) .show ();
}
@Override
Π·Π°ΡΠΈΡΠ΅Π½Π½Π°Ρ ΡΡΡΠΎΠΊΠ° doInBackground (Bitmap… params) {
Bitmap bitmap = params [0];
Π‘ΡΡΠΎΠΊΠ° uploadImage = getStringImage (ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅);
HashMap
data. put (UPLOAD_KEY, uploadImage);
String result = rh.sendPostRequest (UPLOAD_URL, Π΄Π°Π½Π½ΡΠ΅);
Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ;
}
}
UploadImage ui = new UploadImage ();
ui.Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ (ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅);
}
@Override
public void onClick (View v) {
if (v == buttonChoose) {
showFileChooser ();
}
if (v == buttonUpload) {
uploadImage ();
}
if (v == buttonView) {
viewImage ();
}
}
private void viewImage () {
startActivity (Π½ΠΎΠ²ΡΠΉ Intent (this, ImageListView.ΡΡΠ΅Π±Π½ΡΠΉ ΠΊΠ»Π°ΡΡ));
}
}
ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PHP ~ Learn Infinity
function resizeImage ($ resourceType, $ image_width, $ image_height) {
$ resizeWidth = 100;
$ resizeHeight = 100;
$ imageLayer = imagecreatetruecolor ($ resizeWidth, $ resizeHeight);
imagecopyresampled ($ imageLayer, $ resourceType, 0,0,0,0, $ resizeWidth, $ resizeHeight, $ image_width, $ image_height);
return $ imageLayer;
}
if (isset ($ _ POST [«form_submit»])) {
$ imageProcess = 0;
if (is_array ($ _ FILES)) {
$ fileName = $ _FILES [‘upload_image’] [‘tmp_name’];
$ sourceProperties = getimagesize ($ fileName);
$ resizeFileName = Π²ΡΠ΅ΠΌΡ ();
$ uploadPath = «. / uploads / «;
$ fileExt = pathinfo ($ _ FILES [‘upload_image’] [‘name’], PATHINFO_EXTENSION);
$ uploadImageType = $ sourceProperties [2];
$ sourceImageWidth = $ sourceProperties [0];
$ sourceImageHeight = $ sourceProperties [1];
ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ ($ uploadImageType) {
case IMAGETYPE_JPEG:
$ resourceType = imagecreatefromjpeg ($ fileName);
$ imageLayer = );
imagejpeg ($ imageLayer, $ uploadPath.»thump _». $ resizeFileName. ‘.’. $ fileExt);
ΠΏΠ΅ΡΠ΅ΡΡΠ²;
case IMAGETYPE_GIF:
$ resourceType = imagecreatefromgif ($ fileName);
$ imageLayer = resizeImage ($ resourceType, $ sourceImageWidth, $ sourceImageHeight);
imagegif ($ imageLayer, $ uploadPath. «Thump _». $ ResizeFileName. ‘.’. $ FileExt);
ΠΏΠ΅ΡΠ΅ΡΡΠ²;
case IMAGETYPE_PNG:
$ resourceType = imagecreatefrompng ($ fileName);
$ imageLayer = resizeImage ($ resourceType, $ sourceImageWidth, $ sourceImageHeight);
imagepng ($ imageLayer, $ uploadPath.