ÒdinatèKalite dosye

PHP: dosye téléchargement nan sèvè a

Chaje dosye via PHP - yon ka trè enteresan, nan ki yo dwe apwoche ak anpil atansyon. Sou entènèt la ou ka jwenn egzanp anpil nan aplikasyon an nan téléchargement dosye, men se pa tout nan yo yo se bon ak satisfè règleman sekirite.

bagay sa yo bezwen pou pote nan yon konklizyon, menm si li pran yon tan long. Si ou kite yon espas nan kòd la, lè sa a ka tout sèvè ou dwe konpwomèt.

sekirite

Avèk PHP dosye Upload nan sèvè a se te pote soti byen fasil. Kòd la se trè kout ak senp. Jis yon koup la liy yo. Sepandan, metòd sa a se danjere. Pi plis tan ak liy nan kòd yo ale sekirite.

Danje a se ke, si ou pa fè enspeksyon, nenpòt atakè te kapab Upload Scripts yo sou sèvè ou. Nan ka sa a, li pral gen aksè plen. Li ka fè tou sa li vle:

  • efase baz done a;
  • efase dosye sit;
  • modifye dosye sit;
  • ajoute anons ou nan sit entènèt ou;
  • download viris;
  • redireksyon tout itilizatè yo sou sit yo;
  • ak anpil lòt bagay ki vini nan lespri atakè.

Ou ta dwe toujou tcheke ki eseye download yon dosye pou itilizatè a. Pou egzanp, si ou Upload imaj sèlman, li se nesesè yo verifye ke dosye a se yon imaj avèk presizyon. Sinon, ou pral download anyen.

Egzakteman ki jan yo aplike verifikasyon, li pral montre, ak script la egzamen dirèk nan Upload dosye.

Kreye yon fòm PHP

dosye fòm téléchargement se trè senp. Ki manke bouton browse ak téléchargement bouton sa yo.

Dekri ki jan yo kreye fòm pa pral, paske li nan fasil. plis enstriksyon asime ke ou deja gen konsèp debaz yo nan HTML (sinon ou pa ta dwe kap chèche enfòmasyon sou Téléchargez sou PHP).

Men, sonje ke done yo nan fòm lan ou bezwen ajoute atribi nan enctype.

Sinon, done sou kap okipe dosye pa pral transmèt.

Ki jan li ta dwe travay?

Lè ou klike sou bouton an browse ou ta dwe wè yon bwat kote mande yo chwazi yon dosye.

Apre sa, li pral oblije resevwa yon chemen ki kote dosye a chita.

Si chemen an pa parèt, fè aksyon an ankò.

Apre klike sou kap okipe-a download dosye ka bay nenpòt enfòmasyon.

Pou egzanp, ou ka ekri liy nan ki eta ke dosye a se "sa ak pou" non an ki te avèk siksè Uploaded nan katab la "sa yo ak sa". Natirèlman, yo pral non an dosye dwe bay toujou diferan.

Tipikman, se enfòmasyon sa a itilize nan kòd dbug. Se konsa, li se posib yo verifye ke done a se transmèt ak ekri rive nan anyè a vle. Sa se, menm non an dosye se pa sa endike yo. Depi enfòmasyon siplemantè sa a ki itilizatè a pa bezwen.

Li fè sans nan pwodiksyon non an sèlman si itilizatè a downloads dosye miltip. Sa yo se ka a, konsidere yon ti kras pi lwen. Se pou yo pa jwenn devan yo nan tèt nou.

ajisteman

Nan PHP dosye téléchargement nan sèvè a mande sèten anviwònman, ki ta dwe fè l 'nan dosye a php.ini. dosye sa a gen yon anpil nan anviwònman. Yo tout sa nou pa bezwen. Nou enterese nan twa liy: file_uploads, upload_tmp_dir ak upload_max_filesize.

Tanpri note ke anviwònman sa yo pral afekte tout nan sit ou sou sèvè a, pa sèlman yon moun. Se poutèt sa, yo mete gwosè a maksimòm ki baze sou lefèt ke ou pral gen chaj itilizatè. Li pa rekòmande yo mete twò gwo.

Yon fwa ou chanje valè yo nan paramèt sa yo, ou bezwen rekòmanse sèvè a. Sinon anviwònman yo pa pral pran efè, menm jan yo li nan yon moman nan chay la sèvè.

Ou ka fè sa nan konsole a pa konekte via SSH nan sèvè a. Senpleman antre nan sèvis lòd tp rekòmanse a, ak Lè sa a anviwònman yo pral pran efè.

Yon lòt metòd - yon rekòmanse nan ISP-panèl oswa atravè founisè panèl voye bòdwo.

dosye Array

Nan PHP se téléchargement dosye fè pa etalaj la $ _FILES. Li genyen ladan li tout enfòmasyon sou dosye sa yo ke nou download.

Pou wè ki enfòmasyon se ki genyen nan etalaj la, ase yo ekri nan kap okipe nan dosye yo.

Chwazi nenpòt ki dosye, epi klike "Voye." Nan paj an kap okipe ap montre enfòmasyon an ki se ki estoke nan $ _FILES. se varyab la ekri antyèman ak yon lèt kapital la. PHP - yon lang-sansib.

Kòm ou ka wè, nan sa a etalaj gen yon anpil nan jaden yo. Tout moun nan yo yo enpòtan yo ban nou. jaden an premye gen non nan dosye ki nan fòm lan nan ki li se itilize sou òdinatè ou.

kolòn nan kalite espesifye kalite dosye. jaden Tmp_name koresponn ak non an nan dosye a tanporè. Aprè la fen a script la yo pral efase.

Jaden an erè gen yon kòd erè. Sa a te yon ti kras pi lwen. Kantite moun ki - gwosè a nan bytes.

erè

Te pote soti nan téléchargement nan PHP dosye se toujou akonpaye pa yon kòd erè. Yon mesaj erè antre nan "erè a". Erè nan D se zewo.

Konsidere valè a nan tout erè yo:

Li te di pi wo a sou paramèt la ki ka dwe espesifye nan HTML a dabitid.

Isit la se yon fòm echantiyon nan download dosye a, ki endike yon limit nan kantite lajan an nan dosye a Uploaded.

PHP: dosye téléchargement script

Kòm tout te pote soti nan pratik? Nan PHP téléchargement dosye fèt kopi lòd. Si w enterese nan kesyon an pou konnen kijan pou download yon dosye, repons lan se senp copy-, ki itilize de paramèt - dosye a sous ak dosye a destinasyon.

Men, jan sa endike pi wo a, li pa ka dwe limite pou rezon sekirite. Pou egzanp, tcheke deyò ki kalite dosye nou bato, ou ka itilize kalite a jaden nan etalaj la $ _FILES. Premyèman, kite a fè fas ak enspeksyon, ak Lè sa a deplase sou li nan script la plen

Se pou nou di ou vle pèmèt itilizatè yo Upload yon foto ak yon rezolisyon nan sèlman GIF, JPEG oswa PNG. Endike li kapab tankou sa a.

si ($ _ FILES [ 'file_upload'] [ 'di ki']! = "estati / gif") {
repete "Padon, Nou sipòte sèlman Téléchargez Gif-Dosye";
sòti;
}

Si ou vle yon bato tout kalite 3, tou senpleman ajoute yon kondisyon anplis nan kalite la lòt kote nan imaj.

se kopye fè tankou sila: kopi (imaj 1, imaj 2).

Nan ka nou an, lè travay la se Téléchargez soti nan PC a nan sèvè a, ou ka fè sa

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

Sa se, yo pral dosye a dwe kopye ak 1.jpg nan non. Sa a se pa totalman kòrèk. Nan ka sa a, li se sèlman yon egzanp. Non a dosye se toujou nesesè yo presize diferan, ak presize ekstansyon sa a, tou depann de dosye a.

Detèmine ekstansyon sa a yo kapab diferan fason. Li tout depann sou pwomotè a nan erudisyon. Youn nan fason ki pi rapid yo (yon diferans nan dizyèm nan segonn) detèmine ekstansyon sa a - sa a se kòd la kap vini an.

$ PATH_INFO = pathinfo ($ _ FILES [ 'photo1'] [ "non"]);

$ Ext = $ path_info [ 'ekstansyon'];

plase $ ext an nan nou pral estoke ekstansyon sa a vle. Ou ka jwenn yon non dosye dwe mete nan o aza lè l sèvi avèk MD5. Si ou gen plan nan download yon anpil nan dosye, li se pi bon bato yo dosye diferan. Se konsa, li ap gen plis pratik. An patikilye, si ou vle fè detwi.

nan download kòd la yo pral jan sa a.

/// Avèk foto

si ($ _FILES [ 'photo1'] [ 'tmp_name'] == nil)

{

eko ( "

Unknown dosye-a.

Retounen ... ");

sòti;

}

///. Di ou pou nenpòt ki pwojè sou sèvè a ki pèmèt yo chaje dosye gwo (videyo), men gen foto sèlman, yo ak divinò bezwen limite

si (($ _FILES [ "photo1"] [ "gwosè"]> 1024 * 1024 * 2)

{

?>

maksimòm pèmèt gwosè a nan 2 MO

Retounen ...

sòti;

}

// kreye dosye

// kreye yon katab nan mwa aktyèl la

si (! file_exists ( "img /" dat. ( "M")))

{

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

}

// kreye yon katab nan jounen an kounye a

si (! file_exists (. "/ img" dat (. "M") "/". dat ( "d")))

{

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

}

/// ekstansyon dosye

$ PATH_INFO = pathinfo ($ _ FILES [ 'photo1'] [ "non"]);

$ Ext = $ path_info [ 'ekstansyon'];

/// jenere fichier

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

si (kopi ($ _ FILES [ 'photo1'] [ "tmp_name"], "img /". dat.. ( "M") "/". dat ( "d") "/". $ id. $ ext) )

{

eko ( "File avèk siksè Uploaded");

}

/// nenpòt ki aksyon pi lwen (antre nan baz done a, ak sou sa. N.)

}

miltip dosye

Uploading dosye miltip (PHP) fèt pa vle di nan jaden yo adisyonèl nan fòm nan.

Metòd sa a se pa trè bon, kòm li limite kantite a nan dosye a download. Anplis, li se konsidere kòm move fòm nan pwogram. Eseye fè tout bagay dinamik.

Opsyon nan ideyal - li se yon chwa nan yon gwo kantite dosye nan yon fwa pa peze yon bouton sèl.

Pou fè sa, kreye yon fòm tankou kòd sa a.

Remake byen ke adisyon a miltip nan pawòl Bondye a, epi li se bay non a kòm yon etalaj []. Nan ka sa a, $ _FILES etalaj pral yon ti kras diferan. Ou pral resevwa yon etalaj nan etalaj la.

Li teste ka ankò itilize var_dump a ($ _ FILES);

Tout dosye ou yo pral mete yo nan etalaj la tankou sa a:

  1. $ _FILES [ "file1"] [ "Non"] [0]
  2. $ _FILES [ "file1"] [ "Non"] [1]
  3. Yo, epi sou sa.

Nan parantèz ki ekri nimewo a dosye ki nan etalaj la. Konte soti nan zewo. Nou trete yo nan menm fason an, jis mande sik la ak lè w kontakte kòd la pi wo pase-dekri nan fen endèks la ajoute [$ m].

$ Mwen = 0;

pandan y ap ($ _FILES [ "file1"] [ "non"] [$ m] <> '')

{

/// kole kòd la pi wo a

}

Se konsa, ou pral gen rive nan yon téléchargement PHP dosye nan sèvè a nan yon sèl sik san yo pa repetisyon nesesè nan kòd la, kòm se nòmalman ka a si ou itilize vèsyon an ak yon kantite estatik nan dosye (foto pase a).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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