КомпютриТипове файлове

PHP: качване на файлове на сървъра,

Изтеглянето на файлове чрез PHP - един много интересен случай, към който трябва да се подхожда много внимателно. В интернет можете да намерите множество примери за прилагането на качване на файлове, но не всички от тях са добри и да се срещнат правилата за безопасност.

Такива неща трябва да доведат докрай, дори ако то е по-дълго време. Ако оставите пролука в кода, след което цялата си сървър може да бъде компрометирана.

безопасност

С PHP качване на файлове на сървъра, се извършва много лесно. Кодът е много кратко и ясно. Само няколко линии. Въпреки това, този метод е опасен. Много повече време и реда код си на сигурно място.

Опасността е, че, ако не се направи проверки, всеки хакер може да качите своите скриптове на вашия сървър. В този случай, тя ще има пълен достъп. Той може да прави каквото си иска:

  • изтриване на база данни;
  • изтриване на файлове обекти;
  • модифицира файлове обекти;
  • добавите вашата реклама на вашия сайт;
  • изтегляне на вируси;
  • пренасочване на всички потребители на сайтовете им;
  • както и много други неща, които идват на ум нападател.

Винаги трябва да се провери, че се опитва да изтеглите файл за потребителя. Например, ако качите само изображения, е необходимо да се провери, че файлът е изображение точно. В противен случай ще свалите нищо.

Точно как да се прилагат за проверка, той ще бъде показано, със сценария директен преглед, за да качвате файлове.

Създаване на PHP форма

файл формуляра за качване е много проста. Липсва бутоните върху бутона Преглед и качване на снимки.

Описва как да създавате форми няма, защото е лесно. По-нататъшни инструкции предполагат, че вече имате основните понятия на HTML (в противен случай нямаше да се търси информация за изтеглянето на PHP).

Но имайте предвид, че данните във формата, които трябва да се добави enctype атрибут.

В противен случай данните файл манипулатор няма да се предават.

Как би трябвало да работи?

Когато кликнете върху бутона за преглед трябва да видите прозорец, където иска да изберете файл.

След това той ще бъде задължен да получа път, където се намира файла.

Ако пътят не се появи, извърши действието отново.

След като кликнете върху манипулатора за изтегляне на файлове може да даде никаква информация.

Например, можете да напишете линията, която гласи, че файлът е "така и така" името успешното качване на "еди" папка. Разбира се, името на файла ще бъде даден винаги различна.

Обикновено тази информация се използва за отстраняване на грешки код. По този начин е възможно да се провери, че данните се предават и пише да се появят в желаната директория. Това означава, че дори и името на файла не е показана. Тъй като тази допълнителна информация, че потребителят не трябва.

Той има смисъл да изход името само ако потребителят изтегля множество файлове. Такъв е случаят, помислете малко по-нататък. Нека не изпреварваме себе си.

регулиране

В PHP качване на файлове към сървъра се нуждае от определени настройки, които трябва да бъдат направени във файла php.ini. Този файл съдържа много настройки. Те всички ние не се нуждаем. Ние сме заинтересовани в три линии: file_uploads, upload_tmp_dir и upload_max_filesize.

Моля, имайте предвид, че тези настройки ще се отразят на всичките си сайтове на сървъра, а не само една. Следователно, за да определят максималния размер въз основа на факта, че ще трябва да се зареди потребители. Не се препоръчва да се създаде твърде голям.

След смяна на стойностите на тези параметри, трябва да рестартирате сървъра. В противен случай настройките не ще влязат в сила, тъй като те чета в момента на натоварването на сървъра.

Можете да направите това в конзолата чрез свързване посредством SSH към сървъра. Просто въведете командата услуга уеб-рестартиране, а след това на настройките ще влязат в сила.

Друг метод - рестартиране чрез ISP-панел или чрез доставчик на платежна панел.

Array файл

В PHP качване на файлове се извършва от масива $ _FILES. Тя съдържа цялата информация за файловете, които сваляте.

За да видите каква информация се съдържа в масива, достатъчно, за да пиша в манипулатор файл следната.

Изберете всички файлове и натиснете бутона "Качване". На страницата за манипулатор ще покаже информацията, която се съхранява в $ _FILES. Променливата е написан изцяло с главни букви. PHP - език-чувствителни.

Както можете да видите, в този масив има много области. Всички те са важни за нас. Първото поле съдържа името на файла във формата, в която тя се използва на вашия компютър.

Колоната тип определен тип файл. Tmp_name поле съответства на името на временния файл. След края на сценария ще бъде изтрита.

Полето за грешка съдържа код за грешка. Това е малко по-нататък. Размер - размера в байтове.

грешки

Извършва се чрез качване на PHP файл винаги е придружен от код на грешка. Съобщение за грешка, се вписват в "грешка". Грешката на снимки е нула.

Помислете за стойността на всички грешки:

Говореше се, че по-горе за параметър, който може да бъде определен по обичайния HTML.

Тук е образец, за да изтеглите файла, което показва, ограничение на размера на качения файл.

PHP: качване на файлове скрипт

Както всички провежда на практика? В PHP качване на файлове се появява команда копие. Ако се интересувате от въпроса за това как да изтеглите файл, отговорът е прост Закона за авторско, която използва два параметъра - файла източник и файлът дестинация.

Но, както е посочено по-горе, не може да бъде ограничен от съображения за сигурност. Например, вижте какъв вид файл, ние кораба, можете да използвате тип поле в масива $ _FILES. Първо, нека да се справят с инспекция, а след това преминете към пълен скрипт

Да речем, че искате да се даде възможност на потребителите да качват снимка с резолюция от само GIF, JPEG или PNG. Посочва се, че може да бъде по този начин.

ако ($ _ ФАЙЛОВЕ [ 'file_upload'] [ "тип"]! = "изображение / GIF") {
ехо "Съжаляваме, че поддържаме само свалянето Gif-файлове";
изход;
}

Ако искате да превозва всички 3 вида, просто добавете допълнително условие към другия тип изображение.

Копирането се извършва по следния начин: копие (снимка 1, изображение 2).

В нашия случай, когато работата се изтегля от компютъра към сървъра, можете да го направите

копие ($ _ FILES [ 'file_upload "] [" tmp_name "]", 1.jpg ")

Това означава, че файлът ще се копира с 1.jpg за името. Това не е напълно вярно. В този случай, това е само един пример. Името на файла винаги е необходимо да се уточни различни, и да определи разширяването, в зависимост от файла.

Определяне на разширението могат да бъдат различни начини. Всичко зависи от разработчика на ерудиция. Един от най-бързите начини за (разлика от десети от секунди) определи разширяването - това е следващата код.

$ PATH_INFO = pathinfo ($ _ ФАЙЛОВЕ [ 'photo1'] [ "име"]);

$ Ext = $ PATH_INFO [ "разширение"];

променлива $ на вътр The ние ще се съхранява на желаното разширение. Името на файла може да се определя на случаен принцип с помощта на md5. Ако имате намерение да изтеглите много файлове, по-добре е да ги транспортира до различни папки. Така ще бъде по-удобно. По-специално, ако искате да се очисти.

да изтеглите кода ще бъде, както следва.

/// Със снимка

ако ($ _FILES [ 'photo1'] [ 'tmp_name'] == нула)

{

ехо ( "

<силен> Непознат файл.

Назад ... ");

изход;

}

///. Кажете за всеки проект на сървъра е позволено да се зареди големи файлове (видео), но има само снимки и потребителите трябва да се ограничи

ако (($ _FILES [ "photo1"] [ "размер"]> 1024 * 1024 * 2)

{

?>

максимално допустимия размер на <силни> 2 MB

Назад ...

изход;

}

// създавате папки

// създадете папка на текущия месец

ако (! file_exists ( "IMG /". дата ( "M")))

{

защитен режим ( "IMG /" дата ( "М").);

}

// създадете папка на текущия ден

ако (! file_exists ( "IMG /". дата ( "М"). "/". дата ( "D")))

{

защитен режим ( "IMG /" дата ( "М") "/" дата ( "D") ...);

}

/// файлово разширение

$ PATH_INFO = pathinfo ($ _ ФАЙЛОВЕ [ 'photo1'] [ "име"]);

$ Ext = $ PATH_INFO [ "разширение"];

/// генерира име на файла

$ Id = md5 (дата ( "Ymd"));

ако (копие ($ _ ФАЙЛОВЕ [ 'photo1'] [ "tmp_name"] "IMG /". дата ( "М"). "/". дата ( "D"). "/". $ ID. $ вътр) )

{

ехо ( "Файл качена успешно");

}

/// допълнителни действия (вписване в базата данни, и така нататък. Н.)

}

множество файлове

Качване на множество файлове (PHP) се случва с помощта на допълнителни полета във формуляра.

Този метод не е много добра, тъй като ограничава броя на файлове за изтегляне. Освен това се смята за лоша форма в програмирането. Опитайте се да направите всичко динамичен.

Идеалният вариант - това е възможност за избор на голям брой файлове едновременно с натискане на един бутон.

За да направите това, направете форма като този код.

<Форма метод = действие "POST" = "Връзка към файл манипулатор" име = "upload_form" enctype = "съставното / форм-данни">

<Вход клас = тип "form_upload" = "файл" име = "file1 []" множествена стойност = "Преглед">

Имайте предвид, че многократно добавянето на думата, а името е дадено като масив []. В този случай, $ _FILES масив ще бъде малко по-различен. Вие ще получите масив от масива.

За да тествате отново може да се използва var_dump ($ _ FILES);

Всичките ви файлове ще бъдат поставени в масива по следния начин:

  1. $ _FILES [ "file1"] [ "име"] [0]
  2. $ _FILES [ "file1"] [ "име"] [1]
  3. И така нататък.

В скоби е написано номера на файла в масива. Преброяване от нула. Ние се отнасяме към тях по същия начин, просто питам цикъл и като се свържете с описаната по-горе код в края на индекса добавяне на [$ аз].

$ I = 0;

докато ($ _FILES [ "file1"] [ "име"] [$ Ь] <> '')

{

/// поставете горе код

}

По този начин, вие ще трябва да се случи чрез PHP качване на файлове на до сървъра в един цикъл, без ненужни повторения на кода, както обикновено става, ако използвате версия със статична брой файлове (последна снимка).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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