KompjutersTipi ta 'fajls

PHP: fajl upload lill-server

Tniżżil ta 'fajls permezz PHP - każ interessanti ħafna, li għandhom ikunu indirizzati b'attenzjoni kbira. Fuq l-Internet tista 'ssib bosta eżempji ta' l-implimentazzjoni tal-fajl upload, iżda mhux kollha kemm huma tajbin u jissodisfaw ir-regolamenti ta 'sigurtà.

Affarijiet bħal dawn jeħtieġ li jġibu konklużjoni, anki jekk hija tieħu żmien twil. Jekk inti tħalli lakuna fil-kodiċi, allura server kollu tiegħek tista 'tiġi kompromessa.

sigurtà

Ma PHP fajl upload biex titwettaq is-server pjuttost faċilment. Il-kodiċi huwa qasir ħafna u sempliċi. Biss ftit linji. Madankollu, dan il-metodu huwa perikoluż. Ħafna aktar ħin u linji ta 'kodiċi bogħod għas-sigurtà.

Il-periklu huwa li, jekk inti ma tagħmel spezzjonijiet, kull attakkant tista 'upload skripts tagħhom fuq is-server tiegħek. F'dan il-każ, se jkollhom aċċess sħiħ. Huwa jista 'jagħmel kull ma trid:

  • tħassar id-database;
  • jeskludi siti fajls;
  • timmodifika siti fajls;
  • żid ad tiegħek għall-website tiegħek;
  • download viruses;
  • idawwru l-utenti kollha fuq is-siti tagħhom;
  • u ħafna affarijiet oħra li jiġu f'moħħna attakkant.

Dejjem għandek tiċċekkja li tentattivi biex tniżżel fajl għall-utent. Per eżempju, jekk inti upload immaġini biss, huwa neċessarju li jiġi vverifikat li l-fajl hija immaġni preċiż. Inkella, inti se tniżżel xejn.

Eżattament kif għandhom jiġu implimentati verifika, se jintwera, bl-iskrittura eżami dirett biex ittella fajls.

Ħolqien ta 'forma PHP

forma upload fajl huwa sempliċi ħafna. Nieqsa l buttuna jibbrawżjaw u upload buttuni.

Tiddeskrivi kif toħloq forom mhux se, għaliex dan huwa faċli. Aktar istruzzjonijiet jassumi li inti diġà għandhom il-kunċetti bażiċi ta 'HTML (inkella inti ma tkunx tkun tfittex informazzjoni dwar tniżżil fuq PHP).

Iżda jinnota li d-data fil-forma ikollok bżonn li jiżdiedu l-attribut enctype.

Inkella, mhux se tiġi trażmessa dejta fil-fajls handler.

Kif għandha taħdem?

Meta tikklikkja fuq il-buttuna jibbrawżjaw għandek tara kaxxa fejn mitluba jagħżlu fajl.

Wara li se tkun meħtieġa li jirċievu triq fejn il-fajl tkun allokata.

Jekk il-passaġġ ma jidhirx, twettaq l-azzjoni mill-ġdid.

Wara tikklikkja fuq il-persuna li tieħu ħsieb fajl download jistgħux jagħtu xi informazzjoni.

Per eżempju, inti tista 'tikteb l-linja li tgħid li l-fajl huwa "hekk u hekk" l-isem ikun ġie uploaded b'suċċess għall- "tali u tali" folder. Naturalment, l-isem fajl ser tingħata dejjem differenti.

Tipikament, din l-informazzjoni hija użata għall-kodiċi debug. Għalhekk huwa possibbli li jiġi vverifikat li d-data hija trasmessa u jikteb jseħħu fid-direttorju mixtieqa. Dan huwa, anki l-isem ta 'fajl mhux indikat. Peress li din l-informazzjoni addizzjonali li l-utent ma bżonn.

Jagħmel sens li l-output l-isem biss jekk l-utent downloads fajls multipli. Tali huwa l-każ, jikkunsidraw ftit aktar. Ejja ma jiksbu l quddiem ta 'ruħna.

aġġustament

Fil-PHP fajl upload lill-server teħtieġ ċerti issettjar, li għandu jsir fil-fajl php.ini. Dan il-fajl fih ħafna ta 'settings. Huma kollha ma kellniex bżonn. Aħna huma interessati fi tliet linji: file_uploads, upload_tmp_dir u upload_max_filesize.

Jekk jogħġbok innota li dawn is-settings se jaffettwa kollha ta 'siti tiegħek fuq is-server, mhux biss xi wieħed. Għalhekk, li jistabbilixxi daqs massimu bbażat fuq il-fatt li inti ser ikollok tagħbija utenti. Mhuwiex rakkomandat li jiġu stabbiliti kbar wisq.

Ladarba inti tbiddel il-valuri fl dawn il-parametri, għandek bżonn li terġa 'tibda l-server. Inkella l-settings mhux se tidħol fis-seħħ, peress li taqra fil-ħin tat-tagħbija server.

Tista 'tagħmel dan fil-console permezz tal-konnessjoni permezz SSH għall-server. Sempliċiment jidħlu fil-bidu mill-ġdid httpd servizz kmand, u mbagħad l-settings se jidħlu fis-seħħ.

Metodu ieħor - jistartja matul l-ISP panel jew permezz ta 'fornitur bord ta' kontijiet.

fajl array

Fil-PHP fajl upload isir mill-firxa $ _FILES. Fiha l-informazzjoni kollha dwar il-fajls li aħna tniżżel.

Biex tara liema informazzjoni tinsab fil-firxa, biżżejjed li tikteb fil-handler fajls li ġejjin.

Agħżel kwalunkwe fajl u ikklikkja "Tella." Fuq il-paġna handler se juru l-informazzjoni li hija maħżuna fil $ _FILES. Il-varjabbli huwa miktub kompletament b'ittri kapitali. PHP - a-lingwa sensittiva.

Kif tistgħu taraw, f'dan array għandha ħafna ta 'oqsma. Kollha kemm huma importanti għalina. L-ewwel qasam ikun fih l-isem fajl fil-forma li hija użata fuq il-kompjuter tiegħek.

Il-kolonna tip speċifikat it-tip fajl. Tmp_name qasam tikkorrispondi għall-isem tal-fajl temporanju. Wara t-tmiem tal-iskrittura se jitħassru.

Il-qasam iżball fih kodiċi żball. Dan kien ftit aktar. Daqs - id-daqs fil bytes.

żbalji

Imwettqa permezz tal-upload fajl PHP huwa dejjem akkumpanjata minn kodiċi żball. Messaġġ ta 'żball imdaħħla fir-"żball". L-iżball screenshot huwa żero.

Ikkunsidra l-valur tal-iżbalji kollha:

Kien intqal hawn fuq dwar il-parametru li jista 'jiġi speċifikat fil-HTML soltu.

Hawnhekk hija forma kampjun li tniżżel il-fajl, li jindika limitu tal-ammont tal-fajl uploaded.

PHP: fajl upload b'kitba

Bħala kollha mwettqa fil-prattika? Fil-PHP fajl upload iseħħ kmand kopja. Jekk inti interessat fil-kwistjoni ta 'kif tniżżel fajl, it-tweġiba hija' l-awtur sempliċi, li juża żewġ parametri --fajl sors u l-fajl tad-destinazzjoni.

Iżda, kif intqal hawn fuq, ma jistax ikun limitat għal raġunijiet ta 'sigurtà. Per eżempju, check out liema tip tal-fajl aħna vapur, tista 'tuża t-tip qasam fil-firxa $ _FILES. L-ewwel, ejja jittrattaw ispezzjoni, u mbagħad jimxu fuq l-iskrittura sħiħ

Ejja ngħidu li inti tixtieq li jippermettu lill-utenti biex ittella ritratt b'riżoluzzjoni ta biss GIF, JPEG jew PNG. Indika jista 'jkun bħal dan.

jekk ($ _ FAJLS [ "file_upload"] [ "tip"]! = "image / gif") {
eku "Jiddispjacini, aħna appoġġ biss tniżżil Gif-Fajls";
ħruġ;
}

Jekk inti tixtieq li vapur 3 tipi kollha, sempliċement iżidu kundizzjoni addizzjonali għat-tip ieħor ta 'immaġini.

Ikkupjar isir bħal dan:-kopja (immaġni 1, l-immaġni 2).

Fil-każ tagħna, meta x-xogħol huwa tniżżil mill-PC għal-server, inti tista 'tagħmel hekk

Kopja ($ _ FAJLS [ "file_upload"] [ "tmp_name"], "1.jpg")

Jiġifieri, il-fajl se jiġu kkupjati bl-1.jpg isem. Dan mhux korretta għal kollox. F'dan il-każ, huwa biss eżempju. L-isem fajl huwa dejjem neċessarju li jiġi speċifikat differenti, u jispeċifikaw l-estensjoni, jiddependi fuq il-fajl.

Iddetermina l-estensjoni tista 'tkun modi differenti. Dan kollu jiddependi fuq l-iżviluppatur tal erudition. Wieħed mill-modi iktar mgħaġġel sa (differenza ta 'għexur ta' sekonda) jiddeterminaw l-estensjoni - dan huwa l-kodiċi jmiss.

$ Path_info = pathinfo ($ _ FAJLS [ "photo1"] [ "isem"]);

$ Ext = $ path_info [ "estensjoni"];

Il-varjabbli $ l ext aħna se taħżen l-estensjoni mixtieqa. Isem fajl jista 'jiġi stabbilit għal md5 jużaw addoċċ. Jekk inti tippjana biex tniżżel lott ta 'fajls, huwa aħjar li vapur għall-folders differenti. U għalhekk se jkun aktar konvenjenti. B'mod partikolari, jekk inti tixtieq li jnaddaf.

li tniżżel il-kodiċi se tkun kif ġej.

/// Bil ritratt

jekk ($ _FILES [ "photo1"] [ "tmp_name"] == null)

{

eku ( "

fajl Unknown.

Lura ... ");

ħruġ;

}

///. Tgħid li inti għal kwalunkwe proġett fuq is-server huwa permess biex jgħabbi fajls kbar (video), iżda hemm biss stampi, u l-utenti għandhom bżonn biex jillimitaw

jekk (($ _FILES [ "photo1"] [ "Daqs"]> 1024 * 1024 * 2)

{

?>

-daqs massimu permess ta ' 2 MB

Lura ...

ħruġ;

}

// joħolqu folders

// toħloq folder tax-xahar kurrenti

jekk (! file_exists ( "img /". data ( "M")))

{

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

}

// toħloq folder tal-ġurnata attwali

jekk (! file_exists ( "img /". data ( "M"). "/". data ( "d")))

{

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

}

/// estensjoni fajl

$ Path_info = pathinfo ($ _ FAJLS [ "photo1"] [ "isem"]);

$ Ext = $ path_info [ "estensjoni"];

/// jiġġeneraw file

$ Id = md5 (data ( "YMd"));

jekk (kopja ($ _ FAJLS [ "photo1"] [ "tmp_name"], "img /". data ( "M"). "/". data ( "d"). "/". $ id. $ ext) )

{

eku ( "File uploaded b'suċċess");

}

/// kwalunkwe azzjoni ulterjuri (dħul fid-database, u l-bqija. N.)

}

fajls multipli

Uploading fajls multipli (PHP) ma sseħħ permezz ta 'l-oqsma addizzjonali fil-forma.

Dan il-metodu mhuwiex tajjeb ħafna, peress li tillimita n-numru ta 'fajls biex tniżżel. Barra minn hekk, huwa meqjus forma ħażina fil-programmazzjoni. Jipprova jagħmel dinamiku kollox.

L-għażla ideali - huwa għażla ta 'numru kbir ta' fajls f'daqqa billi tagħfas buttuna waħda.

Biex tagħmel dan, toħloq forma bħal dan il-kodiċi.

Innota li ż-żieda multiplu tal-kelma, u l-isem huwa mogħti bħala firxa []. F'dan il-każ, $ _FILES firxa se jkunu xi ftit differenti. Inti ser tirċievi firxa ta 'l-array.

Biex tittestja tista 'terġa' tuża l-var_dump ($ _ FAJLS);

Fajls kollha tiegħek ser titqiegħed fil-firxa bħal dan:

  1. $ _FILES [ "file1"] [ "isem"] [0]
  2. $ _FILES [ "file1"] [ "isem"] [1]
  3. U hekk.

Fil-parentesi huwa miktub numru tal-file fil-firxa. Għadd minn żero. Aħna jittrattawhom bl-istess mod, staqsi iċ-ċiklu u billi jikkuntattjaw lill-kodiċi deskritta hawn fuq fit-tmiem tal-indiċi żżid [$ i].

$ I = 0;

filwaqt li ($ _FILES [ "file1"] [ "isem"] [$ i] <> '')

{

/// paste tal-kodiċi hawn fuq

}

Għalhekk, ser ikollok li jiġri permezz ta 'fajl PHP upload lill-server f'ċiklu wieħed mingħajr ripetizzjoni bla bżonn tal-kodiċi, kif inhu normalment il-każ jekk inti tuża l-verżjoni ma' numru statika ta 'fajls (l-aħħar ritratt).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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