KompyuterlarFayl turlari

PHP: serverga fayl yuklash

PHP orqali fayllarni yuklab - juda qiziq ishni, juda ehtiyotkorlik bilan yaqinlashib lozim. Internetda sizlar Fayl yuklanayotgan amalga oshirish ko'p misollar topishingiz mumkin, lekin ularning hammasi emas, yaxshi va xavfsizlik qoidalariga javob.

Bunday narsalar u uzoq vaqt talab etadi bo'lsa ham, bir xulosaga kelish uchun kerak. Agar kodi bir bo'shliqni qo'ysangiz, keyin butun server xavf ostida bo'lishi mumkin.

xavfsizlik

PHP bilan fayl upload server juda oson amalga oshiriladi uchun. kodi juda qisqa va oddiy. liniyalari faqat er-xotin. Biroq, bu usul xavfli hisoblanadi. Juda ham vaqt va yuz xavfsizligiga kodi chiziqlar.

xavf Agar tekshirish qilmasangiz, hech qanday tajovuzkor server o'z skriptlar upload mumkin, deb hisoblanadi. Bu holda, u to'la ruxsat beradi. U, u nima istasa, albatta, mumkin:

  • ma'lumotlar bazasini o'chirish;
  • fayllar saytlarni o'chirish;
  • fayllar saytlarni o'zgartirish;
  • veb-saytida E'lonni qo'shish;
  • viruslar yuklab;
  • Barcha foydalanuvchilar saytlari yo'naltiruvchi;
  • va kelib ko'p boshqa narsalar tajovuzkor yodimizga.

Siz har doim foydalanuvchi uchun faylni yuklab olish uchun harakat, deb nazorat qilish kerak. Agar faqat tasvirlar upload Misol uchun, agar, u fayl tasvir aniq ekanligini tekshirish uchun zarur. Aks holda, siz hech narsa yuklab beradi.

Aynan tekshirish amalga oshirish uchun qanday, u fayllarni yuklash uchun to'g'ridan-to'g'ri tekshirish buyruq bilan, namoyish etiladi.

Agar PHP formasini yaratish

Fayl yuklash formasi juda oddiy. Browse tugmasini bosing va yuklash tugmalari kam.

Bu oson, chunki, shakllari qilmaydi yaratish bayon. Bundan tashqari ko'rsatmalar siz allaqachon HTML asosiy tushunchalar (aks holda PHP yuklab haqida ma'lumot qilayotgan bo'lishi mumkin emas edi) bor, deb taxmin.

Lekin shaklida ma'lumotlarni siz Kodlash turi xususiyati qo'shish uchun kerakligini unutmang.

Aks holda, fayl moslamasining ma'lumotlar uzatiladi qilinmaydi.

Bu qanday ishlashi kerak?

Agar Browse tugmasini bosing Qachon bir faylni tanlash uchun so'radi, bir qutisi ko'rishingiz kerak.

Shundan so'ng u fayl joylashgan bir yo'lini olish talab etiladi.

yo'l paydo bo'lmasa, yana harakatni bajarish.

yuklab olish Fayl moslamasining bosgan so'ng biron-bir ma'lumot berish mumkin.

Misol uchun, siz fayl "falonchi" nomi muvaffaqiyatli "falon va falon" papkaga joylangan deb ta'kidlovchi liniyasi yozish mumkin. Albatta, fayl nomi har doim turli beriladi.

Odatda, bu ma'lumotlar debug kodi uchun ishlatiladi. Shunday qilib, ma'lumotlar uzatiladi va yozadi kerakli Direktoriyaning sodir ekanligini tasdiqlash mumkin. Bu, hatto, fayl nomi ko'rsatilgan emas. Bu qo'shimcha ma'lumot beri foydalanuvchi kerak emas, deb.

Bu ishlab chiqarish uchun foydalanuvchi bir necha fayllarni yuklab faqat nomini mantiqiy. Bunday, bir oz yanada ko'rib shundaydir. ning o'zimizdan olish qilmasin.

moslashish

serverga PHP Fayl yuklanayotgan php.ini faylida amalga oshirilishi lozim ma'lum parametrlarini, talab qiladi. Bu fayl ri poda o'z ichiga oladi. Ular biz kerak emas. file_uploads, upload_tmp_dir va upload_max_filesize: Biz uch chiziqlar manfaatdormiz.

Bu ri, serverda nafaqat biron bir siz saytlar barcha ta'sir qilishini unutmang, iltimos. Shuning uchun, siz foydalanuvchilar yuklashingiz kerak bo'ladi aslida asoslangan maksimal hajmini belgilash uchun. Bu juda katta o'rnatish uchun tavsiya qilinmaydi.

Agar siz bu ko'rsatkichlar ham qiymatlarni o'zgartirish, siz serverini qayta kerak. Ular server yuk vaqtida o'qib sifatida Aks holda ri, kuchga bo'lmaydi.

Siz serverga ssh orqali ulab konsoli bu, albatta, mumkin. Faqat buyruq xizmatni httpd restart kiriting, so'ngra Sozlamalar kuchga kiradi.

Yana bir usul - ISP-panelini yoki billing panel provayderi orqali qayta ishga tushirish.

array fayl

PHP fayl yuklash qator $ _FILES tomonidan amalga oshiriladi. Biz yuklab fayllar haqida barcha ma'lumotlarni o'z ichiga oladi.

Quyidagi fayl işleyicisinde yozish uchun etarli qator, mavjud qanday ma'lumot ko'rish uchun.

har qanday faylni tanlang va bosing "Upload". işleyicisi, sahifada $ _FILES saqlanadi ma'lumot bo'ladi. o'zgaruvchan harf bilan butunlay yozilgan. PHP - til-nozik.

Ko'rib turganingizdek, bu ketma-ketlikdagi sohalarda juda ko'p bor. Ularning barchasi biz uchun muhim ahamiyatga ega. birinchi maydon bu sizning kompyuteringizda ishlatiladi shaklida fayl nomini o'z ichiga oladi.

turi ustun fayl turini belgilangan. Tmp_name dala vaqtinchalik fayl nomi mos keladi. Skript oxirida so'ng o'chiriladi.

xato maydon xato kodi o'z ichiga oladi. Bu bir oz yanada edi. Hajmi - baytda hajmi.

xatolar

PHP Fayl yuklanayotgan orqali amalga oshiriladi, har doim xato kodi bilan birga bo'ladi. "Xato" kiritilgan xato xabari. screenshot xato nol bo'ladi.

Barcha xatolar qiymatini ko'rib chiqaylik:

Bu odatiy HTML belgilangan mumkin parametr haqida yuqorida aytilgan edi.

Bu erda yuklangan fayl miqdori bir chegarasi bildiradi faylni yuklab olish uchun bir namuna shaklidir.

PHP: fayl yuklash skript

Barcha amalda olib borilayotgan kabi? PHP fayl yuklash nusxasi buyrug'ini sodir bo'ladi. manba fayl va manzil fayl - Agar faylni yuklab olish uchun qanday savolga manfaatdor bo'lsa, javob ikki parametrlarini foydalanadi oddiy copy- hisoblanadi.

Yuqorida qayd etilganidek, Lekin, u xavfsizlik sabablaridan uchun cheklangan bo'lishi mumkin emas. Misol uchun, kemaga, siz ketma-ketlikdagi $ _FILES Dala turini foydalanishingiz mumkin faylning qanday nazorat. Birinchidan, uning tekshirish bilan shug'ullanish, keyin to'liq buyruq faylini harakat qilaylik

Siz foydalanuvchilar faqat GIF, JPEG yoki PNG bir qarori bilan fotosurat yuklash uchun ruxsat berish kerakli aytaylik. Bu kabi bo'lishi mumkin ko'rsatadi.

Agar ($ _ fayllar [ "file_upload '] [' turi ']! =" image / gif ") {
"Kechirasiz, biz faqat gif-fayllarni yuklab qo'llab-quvvatlash" echo;
chiqish;
}

Agar barcha 3 turdagi kema bo'lsangiz, oddiygina tasvir boshqa turdagi qo'shimcha shartni qo'shing.

nusxasi (tasvir 1, image 2): Nusxa Bu kabi amalga oshiriladi.

Bizning holda, ish serverga kompyuterga yuklab qachon, Agar shunday qilish mumkin

nusxasi ($ _ fayllar [ "file_upload '] [" tmp_name "]," 1.jpg ")

Bu fayl nomi 1.jpg bilan nusxa bo'ladi, deb. Bu butunlay to'g'ri emas. Bu holda, u faqat bir misoldir. Fayl nomi Fayl qarab, kengaytmalariga turli belgilash va belgilash uchun har doim kerak bo'ladi.

kengaytirish, turli yo'llar bo'lishi mumkin aniqlash. Bu barcha bilimiga ishlab chiquvchi bog'liq. (Soniya nafarida bir farq) kengaytmalariga aniqlash uchun eng tez yo'llaridan biri - bu keyingi kodi hisoblanadi.

$ Path_info = pathinfo ($ _ fayllar [ "photo1 '] [" nomi "]);

$ Ext = $ path_info [ 'kengaytirish'];

o'zgaruvchan $ Ext biz kerakli kengaytmalariga saqlaydi. A fayl nomi tasodifiy yordamida MD5 da o'rnatish mumkin. Agar fayllarni ko'p yuklab olish uchun rejangiz, turli papkalarga ularni kema uchun yaxshidir. Bas, u yanada qulay bo'ladi. Xususan, siz poklashi bo'lsangiz.

quyidagicha bo'ladi kodni yuklab olish uchun.

/// foto bilan

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

{

echo ( "

Noma'lum fayl.

qaytish ... ");

chiqish;

}

///. serverda har qanday loyiha uchun Sen katta fayllarni (video) yuklashingiz ruxsat etiladi, lekin faqat rasmlar bor, va foydalanuvchilar cheklash kerak

Agar (($ _FILES [ "photo1"] [ "hajmi"]> 1024 * 2 * 1024)

{

?>

maksimal ruxsat hajmi 2 MB

qaytish ...

chiqish;

}

papkalarni yaratish //

// joriy oyning bir papka yaratish

Agar (! file_exists ( "img /". Sana ( "M")))

{

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

}

// joriy kunning bir papka yaratish

Agar (! file_exists ( "img /". Sana ( "M"). "/". Sana ( "D")))

{

mkdir ( "img /" Sana ( "M") "/" Sana ( "D") ...);

}

/// Fayl kengaytmasi

$ Path_info = pathinfo ($ _ fayllar [ "photo1 '] [" nomi "]);

$ Ext = $ path_info [ 'kengaytirish'];

fayl nomini ishlab ///

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

Agar (nusxasi ($ _ fayllar [ "photo1 '] [" tmp_name "]," img / ". Sana (" M ")." / ". Sana (" D ")." / ". $ id. $ Ext) )

{

echo ( "muvaffaqiyatli Yuklanayotgan fayl");

}

/// biron yanada harakat (ma'lumotlar bazasida kirish, va hokazo. N.)

}

bir necha fayllar

bir necha fayllarni (PHP) yuklanmoqda shaklida qo'shimcha sohalarda orqali sodir bo'ladi.

Bu yuklab olish uchun fayllar sonini chegaralaydi Bu usul juda yaxshi emas. Bundan tashqari, u dasturlash yomon shakli hisoblanadi. dinamik, har bir narsani harakat qiling.

ideal variant - bu bitta tugmani bosib bir vaqtning o'zida fayllar bir qator bir tanlov.

Buning uchun, bu kod kabi bir shaklga yaratish.

so'zning bir necha qo'shimcha unutmang, va nomi bir qator [], deb berilgan. Bu holda, $ _FILES array oz farq bo'ladi. Siz qator bir qator oladi.

yana var_dump ($ _ FILES) foydalanishingiz mumkin sinash uchun;

Barcha fayllar, bu kabi qator joylashtiriladi:

  1. $ _FILES [ "file1"] [ "nomi"] [0]
  2. $ _FILES [ "file1"] [ "nomi"] [1]
  3. Va hokazo.

Qavslar ichida qator fayl sonini yozilgan. noldan boshlab hisoblangan. Biz faqat aylanishiga so'rang va indeksi qo'shib [$ i] oxirida yuqorida tasvirlangan kodni manzillardan, shu tarzda ularni davolash.

$ I = 0;

esa ($ _FILES [ "file1"] [ "nomi"] [$ i] <> '')

{

/// Yuqoridagi kodni joylashtirish

}

Agar fayl statik soni (oxirgi rasm) bilan versiyasini foydalanayotgan bo'lsangiz, odatda bo'lgani kabi, Shunday qilib, siz, kodi keraksiz takrorlash holda bir davr davomida serverga bir PHP Fayl yuklanayotgan orqali sodir bo'lishi kerak.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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