KomputerJinis-jinis file

PHP: file upload kanggo server

Ngundhuh file liwat PHP - cilik banget menarik, kanggo kang kudu nyedhaki kanthi teliti banget. Ing Internet sampeyan bisa nemokake akeh conto ing implementasine saka upload file, nanging ora kabeh wong sing apik lan ketemu peraturan safety.

Kaya iku kudu nggawa menyang kesimpulan, malah yen njupuk wektu dawa. Yen sampeyan ninggalake longkangan ing kode, banjur kabeh server bisa kompromi.

safety

Kanthi PHP file upload kanggo server wis digawa metu cukup gampang. Wóng kang cendhak banget lan prasaja. Mung saperangan saka garis. Nanging, cara iki mbebayani. Luwih wektu lan garis saka kode adoh kanggo safety.

Ing bebaya iku, yen ora apa pemriksaan, sembarang attacker bisa upload Tulisan ing server. Ing kasus iki, iku bakal duwe akses lengkap. Panjenenganipun bisa nindakake apa wae kang kepengin:

  • Mbusak Kaca-
  • mbusak file Camping;
  • ngowahi file Camping;
  • nambah iklan kanggo website;
  • download virus;
  • pangalihan kabeh pangguna ing situs sing;
  • lan akeh liyane sing teka kanggo atine penyerang.

Sampeyan kudu tansah mriksa sing usaha kanggo ngundhuh file kanggo pangguna. Contone, yen ngunggah gambar wae, iku perlu kanggo mesthèkaké yèn berkas gambar kanthi. Yen ora, sampeyan bakal ngundhuh apa-apa.

Persis carane kanggo ngleksanakake verifikasi, iku bakal ditampilake, karo script ujian langsung kanggo ngunggahaké berkas.

Nggawe wangun PHP

file upload form banget prasaja. Missing tombol nelusuri lan upload tombol.

Describes carane nggawe formulir ora, amarga iku gampang. instruksi luwih nganggep sing wis duwe konsep dhasar saka HTML (digunakake, sampeyan ora bakal bisa nggoleki informasi bab ngundhuh ing PHP).

Nanging Wigati dimangerteni menawa data ing wangun sing perlu kanggo nambah ngubungake enctype.

Yen ora, data ing file handler ora bisa ditularaké.

Carane ngirim bisa?

Nalika klik ing tombol nelusuri sampeyan kudu ndeleng kothak ngendi takon kanggo milih file.

Sawise iku bakal dibutuhake kanggo nampa path ngendi file dumunung.

Yen path ora katon, nindakake tumindak maneh.

Sawise ngeklik ing handler download file bisa menehi informasi sembarang.

Contone, sampeyan bisa nulis baris sing nyariosaken bilih berkas ", supaya" jeneng wis kasil diunggah menyang folder "lan kuwi". Temtu ing jeneng berkas bakal diwenehi tansah beda.

Biasane, informasi iki digunakake kanggo kode debug. Mangkono iku bisa kanggo verifikasi data ing ditularaké lan nyerat dumadi ing direktori dikarepake. Sing, malah jeneng berkas ora dituduhake. Wiwit informasi tambahan sing pangguna Panjenengan ora perlu.

Iku ndadekake pangertèn kanggo output jeneng mung yen pangguna ngundhuh file macem-macem. Kuwi cilik, nimbang sethitik luwih. Ayo dadi ora njaluk ahead saka awakku dhewe.

imbuhan

Ing berkas PHP upload kanggo server mbutuhake setelan tartamtu, kang kudu rampung ing file php.ini. Berkas iki ngandhut akèh setelan. Kabeh padha kita ora perlu. We are interested in telung baris: file_uploads, upload_tmp_dir lan upload_max_filesize.

Elinga setelan iki bakal mengaruhi kabeh Camping ing server, ora mung siji apa. Mulane, kanggo nyetel ukuran maksimum adhedhasar kasunyatan sing bakal kanggo mbukak kedhaftar. Durung dianjurake kanggo nyetel kegedhen.

Sawise sampeyan ngganti angka ing paramèter-paramèter iki, sampeyan perlu miwiti maneh server. Yen setelan ora ditrapake, lagi maca ing wektu mbukak server.

Sampeyan bisa nindakake iki ing console kanthi nyambungake liwat SSH kanggo server. Mung ngetik layanan printah HTTPD maneh, lan banjur ing setelan bakal ditrapake.

Cara liyane - a maneh liwat ISP-panel utawa liwat panyedhiya panel tagihan.

file Array

Ing PHP upload file wis rampung dening Uploaded $ _FILES. Isine kabeh informasi bab file sing kita download.

Kanggo ndeleng informasi apa sing ana ing Uploaded iki, sampeyan bisa nulis kanggo pawang kaca punika.

Pilih file lan klik "Upload." Ing kaca handler bakal ngatonake informasi sing disimpen ing $ _FILES. global ditulis tanggung karo huruf gedhe. PHP - basa-sensitif.

Nalika sampeyan bisa ndeleng, ing Uploaded iki wis akèh lapangan. Kabeh mau sing penting kanggo kita. Lapangan pisanan ngandhut jeneng berkas ing wangun kang digunakake ing komputer.

Jinis kolom kasebut jinis file. lapangan Tmp_name cocok kanggo jeneng berkas sawetara. Sawisé pungkasan script bakal dibusak.

Lapangan kesalahan ngandhut kode kesalahan. Iki ana sethitik luwih. Size - ukuran ing bita.

kasalahan

Digawa metu liwat upload file PHP tansah diiringi kode kesalahan. Pesen kesalahan mlebu ing "error". Kesalahan gambar nul.

Coba ing Nilai saka kabeh kasalahan:

Katanya ndhuwur bab parameter sing bisa kasebut ing HTML biasanipun.

Punika wangun sampel kanggo ngundhuh file, sing nuduhaké watesan saka jumlah ing file uploaded.

PHP: pangunggahan berkas script

Nalika kabeh digawa metu ing laku? Ing PHP file upload ana salinan printah. Yen kasengsem ing pitakonan saka carane kanggo ngundhuh file, jawaban punika copy- prasaja, kang migunakake loro parameter - parameter berkas sumber lan berkas tujuan.

Nanging, minangka kasebut ing ndhuwur, bisa ora winates kanggo alasan safety. Contone, mriksa metu apa jenis file kita kapal, sampeyan bisa nggunakake jinis lapangan ing Uploaded $ _FILES. Pisanan, ayo kang menehi hasil karo pengawasan, lan banjur pindhah menyang script lengkap

Ayo dadi ngomong sampeyan pengin kanggo ngidini kedhaftar kanggo ngunggah potret kanthi resolusi saka mung GIF, JPEG utawa PNG. Nunjukaké bisa kaya iki.

yen ($ _ File [ 'file_upload'] [ 'Tipe']! = "image / gif") {
samudayanipun "Sorry, kita support mung ngundhuh Gif-Files";
metu;
}

Yen sampeyan pengin kapal kabeh 3 jinis, mung nambah kawontenan tambahan kanggo jinis sanès gambar.

Nyalin wis rampung kaya iki: copy (image 1, gambar 2).

Ing kasus kita, nalika wis download saka PC kanggo server, sampeyan bisa nglakoni

salinan ($ _ File [ 'file_upload'] [ "tmp_name"], "1.jpg")

Sing, berkas bakal disalin karo jeneng 1.jpg. Iki ora tanggung bener. Ing kasus iki, iku mung conto. Jeneng berkas tansah perlu kanggo nemtokake beda, lan nemtokake extension, gumantung ing berkas.

Nemtokake extension bisa cara. Iku kabeh gumantung ing developer erudition. Salah siji cara paling cepet kanggo (perbedaan tenths saka detik) nemtokake extension - iki kode sabanjuré.

$ Path_info = pathinfo ($ _ File [ 'photo1'] [ "jeneng"]);

$ Ext = $ path_info [ 'extension'];

Variabel $ ext kita bakal nyimpen extension sing dipengini. A jeneng berkas bisa nyetel ing acak nggunakake MD5. Yen rencana kanggo download akèh file, iku luwih apik kanggo kapal mau kanggo folder beda. Dadi bakal luwih trep. Ing tartamtu, yen sampeyan pengin purge.

kanggo ngundhuh kode bakal minangka nderek.

/// Kanthi photo

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

{

kumandhang ( "

Unknown berkas.

Back ... ");

metu;

}

///. Ngomong sampeyan kanggo maksud apa project ing server wis diijini kanggo mbukak file gedhe (video), nanging ana mung gambar, lan pangguna perlu kanggo matesi

yen (($ _FILES [ "photo1"] [ "ukuran"]> 1024 * 1024 * 2)

{

?>

cacah maksimum sing diidinaké ukuran 2 MB

Back ...

metu;

}

// nggawe folder

// nggawe folder ing sasi saiki

yen (! file_exists ( "img /". tanggal ( "M")))

{

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

}

// nggawe folder ing dina saiki

yen (! file_exists ( "img /". tanggal ( "M"). "/". tanggal ( "d")))

{

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

}

/// extension file

$ Path_info = pathinfo ($ _ File [ 'photo1'] [ "jeneng"]);

$ Ext = $ path_info [ 'extension'];

/// generate filename

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

yen (salinan ($ _ File [ 'photo1'] [ "tmp_name"], "img /". tanggal ( "M"). "/". tanggal ( "d"). "/". $ id. $ ext) )

{

kumandhang ( "Gambar kasil diunggah");

}

/// tumindak luwih (entri ing basis data, lan ing. N.)

}

file macem-macem

Ngunggah file macem-macem (PHP) ana kanthi cara lapangan tambahan ing wangun.

Cara iki ora apik banget, minangka watesan nomer file kanggo download. Menapa malih, iku dianggep ala formulir ing program. Coba aja kabeh dinamis.

Pilihan becik - iku pilihan yen nomer akeh file kanthi mencet tombol siji.

Kanggo nindakake iki, nggawe wujud kaya kode iki.

Elinga yen Kajaba sawetara saka tembung, lan jeneng diwenehi minangka Uploaded []. Ing kasus iki, $ _FILES Uploaded bakal rada beda. Sampeyan bakal njaluk Uploaded Uploaded ing.

Kanggo nyoba maneh bisa nggunakake var_dump ($ _ File);

Kabeh file bakal diselehake ing Uploaded kaya iki:

  1. $ _FILES [ "file1"] [ "jeneng"] [0]
  2. $ _FILES [ "file1"] [ "jeneng"] [1,]
  3. Lan ing.

Ing kurung ditulis nomer file ing Uploaded ing. Ngetang saka nul. We nambani wong ing cara sing padha, mung takon siklus lan kontak kode ndhuwur-diterangake ing mburi indeks nambah [$ i].

$ I = 0;

nalika ($ _FILES [ "file1"] [ "jeneng"] [$ i] <> '')

{

/// paste kode ndhuwur

}

Mangkono, sampeyan bakal kudu kelakon liwat upload file PHP menyang server ing siji siklus tanpa Ambalan rasah kode, kaya biasane cilik yen sampeyan nggunakake versi karo nomer statis file (foto pungkasan).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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