КомпьютерлерФайл түрлері

PHP: серверге файлды жүктеу

PHP арқылы файлдарды жүктеу - өте мұқият жақындап тиіс үшін өте қызықты іс. Интернетте сіз файл жүктеу іске асыру көптеген мысалдар табуға болады, бірақ олардың барлығы жақсы болып табылады және қауіпсіздік ережелеріне сай.

Мұндай заттар, ол ұзақ уақыт алады, тіпті егер қорытындыға келтіру қажет. Сіз код бос қалдырсаңыз, онда сіздің бүкіл сервер тәуекелге ұшырауы мүмкін.

қауіпсіздік

PHP көмегімен файлды кері қотару серверге өте оңай жүзеге асырылады. коды өте қысқа және қарапайым болып табылады. желілерін Тек бір-екі. Алайда, бұл әдіс қауіпті болып табылады. алыс қауіпсіздігіне көп уақыт және код желілері.

қауіп сіз тексеру жасаймыз емес, егер қандай да бір шабуылшы Іздің серверіңізде олардың сценарийлерді жүктеуге еді, бұл. Бұл жағдайда, ол толық рұқсаты болады. Ол қалайды кез келген жасай алады:

  • Дерекқорды жою;
  • файлдарды сайттарды жою;
  • файлдарды сайттарды өзгертуге;
  • Сіздің сайттың хабарландыру қосу;
  • жүктеу вирустар;
  • олардың сайттарында барлық пайдаланушылардың бағыттауда;
  • және ақыл шабуылдаушы келіп басқа да көптеген нәрселер.

Сіз әрқашан пайдаланушы үшін файлды жүктеуге тырысады тексеріңіз тиіс. Сіз тек суреттерді жүктеуге Мысалы, егер, ол файл дәл сурет екенін тексеру қажет. Әйтпесе, сіз ештеңе жүктеп алады.

Дәл тексеру қалай жүзеге, ол файлдарды кері жүктеу үшін тікелей емтихан сценарий бар, көрсетіледі.

а PHP нысанын жасау

Файлды жүктеу нысаны өте қарапайым. Шолу түймешігін Missing және түймелерін жүктеуге.

оңай, себебі емес нысандарын құру жолын сипаттайды. Қосымша нұсқауларды сіз әлдеқашан HTML негізгі ұғымдар (әйтпесе сіз PHP туралы жүктеу туралы ақпарат іздейді мүмкін емес еді) бар екенін болжайды.

Бірақ сіз enctype атрибутын қосу қажет нысанда деректер екенін ескеріңіз.

Әйтпесе, файл обработчик туралы деректер берілуі мүмкін емес болады.

ол қалай жұмыс істеу керек?

Шолу түймешігін басыңыз кезде сіз файлды таңдауға сұрады терезесін көруіңіз керек.

Осыдан кейін ол файл орналасқан жолды алуға қажет болады.

жолы пайда болмаса, қайтадан әрекетті орындау.

жүктеу файлы обработчик басқаннан кейін кез келген ақпаратты бере алады.

Мысалы, сіз файл «, сондықтан, сондықтан» атауы табысты «сияқты және осындай» қалтасына жүктелген болатын, деп мәлімдейді желісін жазуға болады. Әрине, файл атауы әрқашан түрлі берілетін болады.

Әдетте, бұл ақпарат күйін келтіру код үшін пайдаланылады. Осылайша, бұл деректер берілетін және қалаған каталогта орын жазады тексеру мүмкін. Яғни, тіпті файл атауы көрсетілген емес, болып табылады. пайдаланушы қажет етпейді, бұл қосымша ақпаратты бастап.

Бұл пайдаланушы бірнеше файлдарды қотарады тек егер шығу атты мағынасы. Мұндай жағдайда болып, бұдан сәл қарастыру. ның алға өздігімізден алуға емес болсын.

реттеу

PHP файлындағы серверге жүктеу php.ini файлында жасалуы тиіс, ол белгілі бір параметрлерді талап етеді. Бұл файл параметрлерін көп мөлшері бар. біз қажет емес, олар барлық. file_uploads, upload_tmp_dir және upload_max_filesize: Біз үш желілері мүдделіміз.

Бұл параметрлер серверде ғана емес, кез-келген бір Сіздің сайттар барлық әсер етеді екенін ескеріңіз. Сондықтан, сіз пайдаланушыларға жүктеу болады фактісі негізінде ең үлкен өлшемін орнату үшін. Бұл тым үлкен орнату үшін ұсынылмайды.

Сіз осы параметрлердің мәндерді өзгерту кейін, серверді қайта іске қосу үшін қажет. олар сервер жүктеме кезінде оқып ретінде Әйтпесе параметрлері, күшіне енеді.

Сіз серверге SSH арқылы қосылу арқылы консолі жасауға болады. Жай командалық қызмет HTTPD қайта енгізіңіз, содан кейін параметрлер күшіне енеді.

Тағы бір әдіс - ISP-тақтасы арқылы немесе шот жіберу панелі провайдері арқылы қайта іске қосу.

Array файл

PHP файлда жүктеу алап $ _FILES арқылы жүзеге асырылады. Бұл біз жүктеп файлдар туралы барлық ақпаратты қамтиды.

, Алапта қамтылған қандай ақпарат Келесі файл обработчик жаза жеткілікті көру үшін.

кез келген файлды таңдаңыз және «кері жүктеңіз.» өңдегіші бетінде $ _FILES сақталған ақпаратты көрсетеді. айнымалы әріппен жазылған толық. PHP - тіл-сезімтал.

Өздеріңіз көріп отырғандай, бұл алапта өріс көп. Олардың барлығы біз үшін маңызды болып табылады. Бірінші далалық компьютердегі пайдаланылатын түрінде файл атауын қамтиды.

түрі баған файл түрін көрсетілген. Tmp_name далалық уақытша файл атауы сәйкес келеді. сценарий аяқталғаннан кейін жойылады.

қате өрісі қате коды бар. Бұл бұдан сәл болды. Өлшем - байт мөлшері.

қателер

PHP файл жүктеу арқылы жүзеге асырылады әрдайым қате коды жүреді. «Қате» енгізілген қате туралы хабар. Скриншот қате нөлге тең болады.

барлық қателер мәнін қарастырайық:

Ол әдеттегі HTML көрсетілуі мүмкін параметр туралы жоғарыда айтылды.

Мұнда жүктелген файлдың сомасының шегі көрсетеді файлды жүктеп алу үшін, үлгісі нысаны болып табылады.

PHP: файл жүктеу сценарий

барлық іс жүзінде жүзеге асыратын? PHP файлда жүктеу көшіру пәрменін туындайды. Бастапқы файл мен тағайындалған файл - Егер файлды жүктеуге қалай сұраққа мүдделі болсаңыз, жауап екі параметрлерін пайдаланады қарапайым Көшіруден болып табылады.

Бірақ, жоғарыда көрсетілгендей, бұл қауіпсіздік мақсатында шектелуі мүмкін емес. Мысалы, біз жібереміз файлдың қандай тексеру, сіз массив $ _FILES өріс түрін пайдалануға болады. Біріншіден, инспекциясының айналысатын, содан кейін толық сценарий көшетін

Сіз пайдаланушылар ғана GIF, JPEG немесе PNG рұқсаты бар фотосуретті жүктеуге мүмкіндік келеді делік. бұл сияқты болуы мүмкін көрсетіңіз.

($ _ FILES [ 'file_upload'] [ 'түрі']! = «Кескін / GIF») {егер
«Кешіріңіз, біз тек Gif-файлдарды жүктеу қолдау көрсету» жаңғырығы;
шығу;
}

Сіз барлық 3 түрлерін жеткізіп келсе, жай ғана бейнесі басқа түріне қосымша шартты қосыңыз.

көшірмесі (сурет 1, сурет 2): көшіру осы сияқты орындалады.

жұмыс серверге компьютерден жүктеу кезде біздің жағдайда, сіз мұны аласыз

көшірмесі ($ _ FILES [ 'file_upload'] [ «tmp_name»], «1.jpg»)

Яғни, файл атауы 1.jpg көшіруге болады. Бұл мүлдем дұрыс емес. Бұл жағдайда, ол тек мысал болып табылады. Файл атауы әр түрлі көрсетіңіз, және ұзартуды көрсетіңіз, файлға байланысты әрқашан қажет.

кеңейту түрлі жолдары болуы мүмкін анықтаңыз. Ол барлық эрудиция әзірлеуші байланысты. кеңейтімін анықтау (секунд оннан айырма) жылдам жолдарының бірі - бұл мынадай коды болып табылады.

$ Path_info = pathinfo ($ _ FILES [ 'фото1'] [ «атауы»]);

$ Ext = $ path_info [ 'кеңейту'];

айнымалы біз қалаған кеңейтімін сақтаймыз EXT $. Файл атауы MD5 пайдалана кездейсоқ орнатуға болады. Сіз файлдар көп жүктеп алу үшін жоспарласаңыз, онда әр түрлі қалталарға оларды жібереміз жақсы. Сондықтан, бұл ыңғайлы болады. Атап айтқанда, Сіз тазалау келсе.

төмендегідей код жүктеп алу үшін болады.

/// фотосуреті

($ _FILES [ 'фото1'] [ 'tmp_name'] == NULL) егер

{

жаңғырығы ( «

Белгісіз файл.

кері ... «);

шығу;

}

///. үлкен файлдарды (бейне) жүктеу үшін рұқсат, бірақ тек суреттер бар, және пайдаланушылар шектеу қажет серверде кез келген жобаны айта

(($ _FILES [ «фото1»] [ «мөлшері»]> * 2 1024 * 1024), егер

{

?>

<Күшті /> 2 Мб

максималды рұқсат етілген мөлшері

кері ...

шығу;

}

// қалталарды жасаңыз

// ағымдағы айдың қалтаны жасау

егер (! file_exists ( «IMG /». күні ( «М»)))

{

mkdir ( «IMG /» күні ( «М»).);

}

// ағымдағы күннің қалтаны жасау

егер (! file_exists ( «IMG /». күні ( «М»). «/». күні ( «D»)))

{

mkdir ( «IMG /» күні ( «М») «/» күні ( «D») ...);

}

/// файл кеңейтімі

$ Path_info = pathinfo ($ _ FILES [ 'фото1'] [ «атауы»]);

$ Ext = $ path_info [ 'кеңейту'];

/// файла атын генерациялау

$ Id MD5 (күні ( «YMd»)) =;

(Көшірмесі ($ _ FILES [ 'фото1'] [ «tmp_name»], «IMG /». Күні ( «М»). «/», Егер. Күні ( «D»). «/». $ ID. $ EXT) )

{

жаңғырығы ( «Файл сәтті жүктеп»);

}

/// кез келген қосымша іс-қимыл (базасында жазба және т.б.. Н.)

}

бірнеше файлдар

бірнеше файлдарды (PHP) Жүктеу түрінде қосымша өрістер арқылы жүреді.

ол жүктеу үшін файлдар санын шектейді Бұл әдіс, өте жақсы емес. Сонымен қатар, ол бағдарламалау жаман нысаны болып саналады. динамикалық бәрін жасауға тырысады.

мінсіз нұсқа - бұл бір түймені басу арқылы бірден файлдар үлкен санының таңдау болып табылады.

Бұл әрекетті орындау үшін, осы код сияқты кескінді жасау.

<Аты = «upload_form» enctype = «көп / нысаны-деректер» «обработчик сілтейді» нысаны әдісі = «POST» акциясы =>

<Енгізу класс = «form_upload» түрі = «Файл» аты = «файл1 []» бірнеше мән = «Шолу»>

<Енгізу класс = «form_upload» түрі = аты = «upldFile» мәні = / «қосу» «ұсынады»>

сөздің бірнеше Сонымен Назар аударыңыз, мен аты массив [] ретінде беріледі. Бұл жағдайда, $ _FILES алап сәл басқаша болады. Сіз алаптың жиымын алады.

сынау қайта var_dump ($ _ файлдары) пайдалана аласыз;

Барлық сіздің файлдар осы сияқты алапта орналастырылатын болады:

  1. $ _FILES [ «файл1»] [ «атауы»] [0]
  2. $ _FILES [ «файл1»] [ «атауы»] [1]
  3. Тағыда басқа.

жақшада алапта файл нөмірі жазылған. нөлден бастап санау. Біз жай ғана циклын сұраңыз және [$ I] қосу индексі соңында жоғарыда сипатталған код хабарласу арқылы, сол жолмен оларды емдеуге.

$ I = 0;

($ _FILES [ «файл1»] [ «атауы»] [$ I] <> ''), ал

{

/// Жоғарыда кодын қойыңыз

}

Осылайша, сіз файлдар статикалық санының (соңғы фото) бар нұсқасын пайдалансаңыз, әдетте жағдайда болып, код артық қайталаусыз бір циклде серверге PHP файл жүктеу арқылы орын болады.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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