Mga computerMga uri ng file

Upload ng file sa server: PHP

Nagda-download ng file sa pamamagitan ng PHP - isang napaka-kagiliw-giliw na kaso, na kung saan ay dapat na approached masyadong maingat. Sa Internet maaari mong mahanap ang maraming mga halimbawa ng ang pagpapatupad ng pag-upload ng file, ngunit hindi lahat ng mga ito ay mabuti at matugunan ang mga regulasyon sa kaligtasan.

Ang ganitong mga bagay na kailangan upang dalhin sa isang konklusyon, kahit na ito ay tumatagal ng isang mahabang panahon. Kung iiwan mo ang isang puwang sa code, at pagkatapos ay ang iyong buong server ay maaaring naka-kompromiso.

kaligtasan

Gamit ang PHP file upload sa server ay isinasagawa ganap madali. Ang code ay masyadong maikli at simple. Lamang ng ilang mga linya. Gayunman, ang paraan na ito ay mapanganib. Marami pang oras at linya ng code layo sa kaligtasan.

Ang panganib ay na, kung hindi mo gawin ang inspeksyon, ang anumang magsasalakay ay maaaring mag-upload ng kanilang mga script sa iyong server. Sa kasong ito, ito ay may ganap na access. Maaari niyang gawin ang anumang siya Nais ni:

  • tanggalin ang database;
  • tanggalin ang mga file na mga site;
  • baguhin ang mga file na mga site;
  • idagdag ang iyong mga ad sa iyong website;
  • i-download ang mga virus;
  • i-redirect ang lahat ng mga gumagamit sa kanilang mga site;
  • at marami pang ibang mga bagay-bagay na dumating sa isip attacker.

Dapat mong palaging suriin na sumusubok na i-download ng isang file para sa user. Halimbawa, kung nag-upload ka ng mga imahe lamang, ito ay kinakailangan upang i-verify na ang mga file ay isang imahe tumpak. Kung hindi man, ikaw ay i-download ng kahit ano.

Eksakto kung paano ipatupad ang pag-verify, ito ay ipinapakita, na may direct examination script upang mag-upload ng mga file.

Ang paglikha ng isang PHP form

file upload form ay napaka-simple. Nawawalang mga pindutan browse button at pag-upload.

Naglalarawan kung paano lumikha ng mga form ay hindi, dahil ito ay madali. Ang karagdagang mga tagubilin ipalagay na ikaw ay mayroon ng mga pangunahing konsepto ng HTML (kung hindi man hindi mo nais na ma-naghahanap para sa impormasyon tungkol sa pag-download sa PHP).

Ngunit tandaan na ang data sa form na kailangan mo upang idagdag ang enctype attribute.

Sa kabilang banda, ang data na naka-file na handler ay hindi nakukuha.

Paano ito ay dapat na gumana?

Kapag nag-click ka sa pindutan browse dapat mong makita ang isang kahon kung saan tinanong upang pumili ng isang file.

Pagkatapos nito ito ay kinakailangan upang makatanggap ng isang landas kung saan ang mga file ay matatagpuan.

Kung ang landas ay hindi lumitaw, magsagawa muli ang pagkilos.

Pagkatapos ng pag-click sa download ng file handler ay maaaring magbigay ng anumang impormasyon.

Halimbawa, maaari mong isulat ang linya na nagpapahayag na ang file ay "sa gayon" ang pangalan ay matagumpay na na-upload sa "gayo't gayong" na folder. Of course, ang pangalan ng file ay bibigyan laging naiiba.

Kadalasan, ang impormasyong ito ay ginagamit upang debug code. Kaya ito ay posible upang i-verify na ang data ay nakukuha at writes mangyari sa ang nais na direktoryo. Iyon ay, kahit na ang pangalan ng file ay hindi ipinahiwatig. Dahil ito dagdag na impormasyon na ang gumagamit ay hindi kailangan.

Ito ang akma sa output ng pangalan lamang kung ang gumagamit ay nagda-download ng maramihang file. Tulad ay ang kaso, isaalang-alang ng kaunti pa. Tayo'y hindi makakuha ng maagang ng ating sarili.

pag-aayos

Sa PHP-upload ng file sa server ay nangangailangan ng tiyak na mga setting, na dapat ay tapos na sa php.ini file. Ang file na ito ay naglalaman ng isang pulutong ng mga setting. Lahat sila ay hindi namin kailangan. Kami ay interesado sa tatlong linya: file_uploads, upload_tmp_dir at upload_max_filesize.

Mangyaring tandaan na ang mga setting ay makakaapekto sa lahat ng iyong mga site sa server, hindi lamang ang anumang isa. Samakatuwid, upang i-set ang maximum na laki batay sa ang katunayan na ang kailangan mong i-load ang mga gumagamit. Ito ay hindi inirerekomenda upang i-set masyadong malaki.

Kapag binago mo ang halaga sa mga parameter na ito, kailangan mong i-restart ang server. Kung hindi man ang mga setting ay hindi nagkakaroon ng epekto, tulad nilang basahin sa oras ng pag-load ng server.

Maaari mong gawin ito sa console sa pamamagitan ng pagkonekta sa pamamagitan ng SSH sa server. Ipasok lamang ang command serbisyo httpd i-restart, at pagkatapos ay ang mga setting ay magkakabisa.

Ang isa pang paraan - pag-restart sa pamamagitan ng ISP-panel o sa pamamagitan ng pagsingil panel provider.

array file

Sa PHP-upload ng file ay ginagawa sa pamamagitan ng array $ _FILES. Ito ay naglalaman ng lahat ng impormasyon tungkol sa mga file na dina-download namin.

Upang makita kung ano ang impormasyon ay nakapaloob sa array, sapat na magsulat sa file handler sumusunod.

Pumili ng file at i-click ang "Upload." Sa pahina ng handler ay magpapakita ng impormasyon na naka-imbak sa $ _FILES. variable ay ganap na nakasulat sa malalaking titik. PHP - isang wika-sensitive.

Tulad ng iyong nakikita, sa array na ito ay may isang pulutong ng mga patlang. Ang lahat ng mga ito ay mahalaga sa amin. Ang unang patlang na naglalaman ng mga pangalan ng file sa anyo na kung saan ito ay ginagamit sa iyong computer.

Ang uri ng hanay tinukoy na uri ng file. larangan Tmp_name tumutugon sa pangalan ng pansamantalang file. Pagkatapos ng dulo ng script ay tatanggalin.

Ang error patlang ang naglalaman ng isang error code. Ito ay isang maliit na mas malayo. Sukat - ang laki sa bytes.

error

Natupad sa pamamagitan ng pag-upload ng PHP file ay palaging sinamahan ng isang error code. Isang error na mensahe na ipinasok sa "error". Ang screenshot ng error ay zero.

Isaalang-alang ang halaga ng lahat ng mga error na ito:

Ito ay sinabi sa itaas tungkol sa mga parameter na maaaring tinukoy sa karaniwang HTML.

Narito ang isang sample form na ito upang i-download ang file, na kung saan ay nagpapahiwatig ng isang limitasyon ng halaga ng na-upload na file.

PHP: file upload script

Bilang natupad lahat sa practice? Sa PHP-upload ng file ay nangyayari kopya command. Kung ikaw ay interesado sa ang tanong ng kung paano upang i-download ang isang file, ang sagot ay simple copy-, na kung saan ay gumagamit ng dalawang mga parameter - ang source file at ang patutunguhang file.

Subalit, tulad ng nabanggit sa itaas, ito ay hindi limitado para sa mga kadahilanang kaligtasan. Halimbawa, tingnan kung ano ang uri ng file barko namin, maaari mong gamitin ang uri field sa array $ _FILES. Una, sabihin harapin ang inspeksyon, at pagkatapos ay lumipat sa ang buong script

Ipagpalagay natin na nais mong payagan ang mga gumagamit upang mag-upload ng isang larawan sa isang resolution ng lamang GIF, JPEG o PNG. Isaad maaari itong maging ganito.

kung ($ _ FILES [ 'file_upload'] [ 'type']! = "image / gif") {
echo "Paumanhin, lamang namin sinusuportahan pag-download Gif-Files";
exit;
}

Kung nais mong ipadala ang lahat ng 3 uri, idagdag lamang ng isang karagdagang kondisyon sa iba pang uri ng imahe.

Pagkopya ay tapos na tulad nito: kopya (image 1, imahe 2).

Sa aming kaso, kapag ang trabaho ay-download mula sa PC sa server, maaari mong gawin ito

kopya ($ _ FILES [ 'file_upload'] [ "tmp_name"], "1.jpg")

Iyon ay, ang file ay kinopya na may pangalan 1.jpg. Ito ay hindi ganap na tama. Sa kasong ito, ito ay lamang ng isang halimbawa. Ang pangalan ng file ay palaging kinakailangan upang tukuyin ang iba't ibang, at tukuyin ang extension, depende sa ang file.

Alamin ang extension ay maaaring maging iba't ibang paraan. Ito lahat ay depende sa nag-develop ng katalisikan. Ang isa sa mga pinakamabilis na paraan upang (isang pagkakaiba ng ikasangpung bahagi ng segundo) matukoy ang extension - ito ang susunod na code.

$ Path_info = pathinfo ($ _ FILES [ 'photo1'] [ "pangalan"]);

$ Ext = $ path_info [ 'extension'];

Ang variable $ sa ext iiimbak namin ang nais na extension. Ang isang pangalan ng file ay maaaring itakda sa random gamit MD5. Kung balak mong i-download ang isang pulutong ng mga file, ito ay mas mahusay na maipadala ang mga ito sa iba't-ibang mga folder. Kaya ito ay magiging mas maginhawa. Sa partikular, kung nais mong upang linising lubos.

i-download ang code ay magiging tulad ng sumusunod.

/// Gamit litrato

kung ($ _FILES [ 'photo1'] [ 'tmp_name'] == null)

{

echo ( "

Hindi kilalang file.

Back ... ");

exit;

}

///. Sabihin mo para sa anumang proyekto sa server ay pinapayagan upang i-load ng malalaking file (video), ngunit may mga tanging ang mga larawan, at mga user na kailangan upang limitahan

kung (($ _FILES [ "photo1"] [ "laki"]> 1024 * 1024 * 2)

{

?>

sa maximum na pinapayagang laki ng 2 MB

Back ...

exit;

}

// lumikha ng mga folder

// lumikha ng isang folder ng kasalukuyang buwan

if (! file_exists ( "img /". date ( "M")))

{

mkdir ( "img /" petsa ( "M").);

}

// lumikha ng isang folder ng kasalukuyang araw

if (! file_exists ( "img /". date ( "M"). "/". date ( "d")))

{

mkdir ( "img /" petsa ( "M") "/" petsa ( "d") ...);

}

/// file extension

$ Path_info = pathinfo ($ _ FILES [ 'photo1'] [ "pangalan"]);

$ Ext = $ path_info [ 'extension'];

/// bumuo ng filename

$ Id = MD5 (petsa ( "YMd"));

kung (kopya ($ _ FILES [ 'photo1'] [ "tmp_name"], "img /". date ( "M"). "/". date ( "d"). "/". $ id. $ ext) )

{

echo ( "File ay matagumpay na na-upload");

}

/// anumang karagdagang pagkilos (entry sa database, at iba pa. N.)

}

maramihang mga file

Ina-upload ang maramihang mga file (PHP) ay nangyayari sa pamamagitan ng mga karagdagang mga patlang sa form.

Ang pamamaraan na ito ay hindi masyadong magandang, tulad ng ito naglilimita sa bilang ng mga file upang i-download. Bukod dito, ito ay itinuturing na masamang form sa programming. Subukang gawin ang lahat ng bagay dynamic.

Ang ideal na pagpipilian - ito ay isang pagpipilian ng isang malaking bilang ng mga file nang sabay-sabay sa pamamagitan ng pagpindot ng isang solong button.

Upang gawin ito, lumikha ng isang hugis tulad ng code na ito.

Tandaan na ang maramihang mga karagdagan ng salita, at ang pangalan ay ibinigay bilang isang array []. Sa kasong ito, $ _FILES array ay bahagyang naiiba. Makakatanggap ka ng isang array ng array.

Upang subukan makita muli gamitin ang var_dump ($ _ FILES);

Ang lahat ng iyong mga file ay ilalagay sa array tulad nito:

  1. $ _FILES [ "file1"] [ "pangalan"] [0]
  2. $ _FILES [ "file1"] [ "pangalan"] [1]
  3. At iba pa.

Sa panaklong ay nakasulat sa file number sa array. Nagbibilang mula sa zero. Namin tinatrato ang mga ito sa parehong paraan, magtanong lamang sa cycle at sa pamamagitan ng pakikipag-ugnay sa ang code sa itaas-inilarawan sa dulo ng index pagdaragdag ng [$ i].

$ Ko = 0;

habang ($ _FILES [ "file1"] [ "pangalan"] [$ i] <> '')

{

/// i-paste ang code sa itaas

}

Sa gayon, ikaw ay may mangyari sa pamamagitan ng isang pag-upload ng PHP file sa server sa isang ikot ng panahon nang walang kinakailangang pag-uulit ng code, bilang ay karaniwang ang kaso kung gagamitin mo ang bersyon na may isang static na bilang ng mga file (huling larawan).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 tl.birmiss.com. Theme powered by WordPress.