OrdinadorsTipus d'arxius

PHP: càrrega d'arxius al servidor

La descàrrega d'arxius a través de PHP - un cas molt interessant, a la qual ha de ser abordat amb molta cura. A Internet es poden trobar nombrosos exemples de l'aplicació de la càrrega d'arxius, però no tots ells són bons i complir amb les normes de seguretat.

Tals coses han de dur a terme, fins i tot si es porta molt de temps. Si deixa un buit en el codi, a continuació, tot el servidor pot veure compromesa.

seguretat

Amb PHP de càrrega d'arxius al servidor es porta a terme amb força facilitat. El codi és molt curt i simple. Només un parell de línies. No obstant això, aquest mètode és perillós. Molt més temps i línies de codi a un lloc segur.

El perill és que, si vostè no fa inspeccions, qualsevol atacant podria pujar els seus scripts al seu servidor. En aquest cas, tindrà accés complet. Ell pot fer el que vulgui:

  • eliminar la base de dades;
  • eliminar llocs arxius;
  • modificar els llocs d'arxius;
  • afegir el seu anunci al seu lloc web;
  • descarregar virus;
  • redirigir tots els usuaris en els seus llocs;
  • i moltes altres coses que vénen a la ment atacant.

Sempre ha de comprovar que intenta descarregar un arxiu per a l'usuari. Per exemple, si càrrega només imatges, cal verificar que l'arxiu és una imatge amb precisió. Altrament, descarregar res.

Exactament com implementar la verificació, es mostrarà, amb el guió examen directe de càrrega.

Crear un formulari PHP

formulari de càrrega d'arxius és molt senzill. Falten els botons botó buscar i carregar.

Descriu com crear formes no ho farà, perquè és fàcil. Altres instruccions se suposa que ja té els conceptes bàsics d'HTML (altrament no estarien buscant informació sobre la descàrrega de PHP).

Fixeu-vos, que les dades en el formulari que necessita afegir l'atribut enctype.

En cas contrari, no s'han de transmetre dades sobre gestor d'arxiu.

Com hauria de funcionar?

En fer clic al botó d'exploració hauria d'aparèixer una caixa on li demana que triï un arxiu.

Després que es requereix per rebre una ruta on es troba l'arxiu.

Si no apareix la ruta d'accés, realitzar l'acció de nou.

Després de fer clic al controlador de descàrrega d'arxius pot donar cap informació.

Per exemple, es pot escriure la línia que indica que l'arxiu és "tal i tal", el nom s'ha carregat correctament a la carpeta "tal i tal". Per descomptat, el nom de l'arxiu es donarà sempre diferent.

Normalment, aquesta informació s'utilitza per depurar el codi. D'aquesta manera és possible verificar que les dades es transmeten i escriptures es produeixen en el directori desitjat. És a dir, fins i tot el nom de l'arxiu no està indicat. Atès que aquesta informació addicional que l'usuari no necessita.

Té sentit de sortida el nom només si l'usuari descarrega diversos arxius. Tal és el cas, consideri una mica més lluny. No sortirem endavant de nosaltres mateixos.

ajust

En PHP càrrega d'arxius al servidor requereix certs ajustos, els quals s'han de fer a l'arxiu php.ini. Aquest fitxer conté una gran quantitat de configuracions. Que tot el que no necessitem. Estem interessats en tres línies: file_uploads, upload_tmp_dir i upload_max_filesize.

Recordeu que aquests ajustos afectaran a tots els seus llocs al servidor, no només qualsevol. Per tant, per establir la mida màxima basat en el fet que va haver de carregar als usuaris. No es recomana ajustar massa gran.

Una vegada que canviï els valors d'aquests paràmetres, cal reiniciar el servidor. Altrament, els ajustos no tindran efecte, a mesura que llegeixen en el moment de la càrrega del servidor.

Pot fer això a la consola mitjançant la connexió a través de SSH al servidor. Només cal introduir la comanda service httpd restart, i després els ajustos seran efectius.

Un altre mètode - un reinici a través de l'ISP-panell o proveïdor a través del panell de facturació.

arxiu de matriu

En PHP de càrrega es realitza mitjançant la matriu $ _FILES. Conté tota la informació sobre els arxius que descarreguem.

Per veure la informació que està continguda en la matriu, prou com per escriure al controlador d'arxiu següents.

Seleccionar qualsevol arxiu i feu clic a "Pujar". A la pàgina controlador mostrarà la informació que s'emmagatzema en $ _FILES. La variable està escrit completament en majúscules. PHP - un llenguatge sensible.

Com es pot veure, en aquesta matriu té una gran quantitat de camps. Tots ells són importants per a nosaltres. El primer camp conté el nom de l'arxiu en la forma en què s'utilitza en l'equip.

La columna de tipus especifica el tipus d'arxiu. Tmp_name camp correspon al nom del fitxer temporal. Després del final de la seqüència de comandaments s'eliminaran.

El camp d'error conté un codi d'error. Aquest va ser una mica més lluny. Mida - la mida en bytes.

errors

Dut a terme a través de la càrrega d'arxius PHP sempre va acompanyat d'un codi d'error. Un missatge d'error introduït en el "error". L'error de pantalla és zero.

Penseu el valor de tots els errors:

S'ha dit anteriorment sobre el paràmetre que es pot especificar en el codi HTML de costum.

Aquí hi ha un exemple de formulari per descarregar l'arxiu, el que indica un límit de la quantitat de l'arxiu carregat.

script de càrrega d'arxius: PHP

Com tots ells duts a terme a la pràctica? En PHP arxiu de càrrega es produeix comanda de còpia. Si vostè està interessat en la qüestió de com descarregar un arxiu, la resposta és senzilla contra còpies, que utilitza dos paràmetres - l'arxiu d'origen i l'arxiu de destinació.

Però, com s'ha dit, no pot ser limitada per raons de seguretat. Per exemple, fa una ullada a quin tipus d'arxiu que enviem, pot utilitzar el tipus de camp en l'array $ _FILES. En primer lloc, tractarem amb la inspecció, i després passar a la seqüència de comandaments completa

Diguem que vostè vol permetre als usuaris pujar una foto amb una resolució de només el GIF, JPEG o PNG. Indiquen que pot ser així.

if ($ _ FILES [ 'file_upload'] [ 'type']! = "image / gif") {
echo "Ho sento, només es suporten la descàrrega d'arxius Gif-";
sortida;
}

Si vostè vol enviar els 3 tipus, només cal afegir una condició addicional a un altre tipus d'imatge.

La còpia es realitza així: còpia (Imatge 1, Imatge 2).

En el nostre cas, quan la feina s'està descarregant des del PC al servidor, pot fer-ho

còpia ($ _ FILES [ 'file_upload'] [ "tmp_name"], "1.jpg")

És a dir, l'arxiu es copiarà amb el nom 1.jpg. Això no és del tot correcte. En aquest cas, és només un exemple. El nom de l'arxiu és sempre necessari especificar diferents, i especificar l'extensió, depenent de l'arxiu.

Determinar l'extensió pot ser de diferents maneres. Tot depèn dels desenvolupadors d'erudició. Una de les maneres més ràpides per (a diferència de dècimes de segon) determinar l'extensió - Aquest és el següent codi.

$ Path_Info = pathinfo ($ _ FILES [ 'photo1'] [ "name"]);

$ Ext = $ PATH_INFO [ 'extensió'];

La variable $ ext la qual emmagatzemarà l'extensió desitjada. Un nom de fitxer es pot ajustar de forma aleatòria usant MD5. Si va a descarregar una gran quantitat d'arxius, és millor enviar-los a diferents carpetes. Pel que serà més convenient. En particular, si desitja purgar.

per descarregar el codi serà el següent.

/// Amb foto

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

{

echo ( "

arxiu desconegut.

Tornar ... ");

sortida;

}

///. Vostè diu que per a qualsevol projecte al servidor se li permet carregar arxius de grans dimensions (vídeo), però no són només les imatges, i els usuaris han de limitar

if (($ _FILES [ "foto1"] [ "mida"]> 1024 * 1024 * 2)

{

?>

la mida màxima permès de 2 MB

Tornar ...

sortida;

}

// crear carpetes

// crear una carpeta del mes en curs

if (! file_exists ( "img /". data ( "M")))

{

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

}

// crear una carpeta del dia actual

if (! file_exists ( "img /". data ( "M"). "/". data ( "D")))

{

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

}

/// extensió d'arxiu

$ Path_Info = pathinfo ($ _ FILES [ 'photo1'] [ "name"]);

$ Ext = $ PATH_INFO [ 'extensió'];

/// generar el nom de fitxer

$ Id = MD5 (data ( "AMD"));

si (còpia ($ _ FILES [ 'photo1'] [ "tmp_name"], "img /". data ( "M"). "/". data ( "D"). "/". $ id. $ ext) )

{

echo ( "arxiu carregat amb èxit");

}

/// qualsevol acció addicional (entrada a la base de dades, i així successivament. N.)

}

diversos arxius

Càrrega de diversos arxius (PHP) es produeix per mitjà de camps addicionals en la forma.

Aquest mètode no és molt bo, ja que limita el nombre d'arxius per descarregar. D'altra banda, es considera de mala educació en la programació. Tractar de fer tot dinàmic.

L'opció ideal - és una elecció d'un gran nombre d'arxius a la vegada prement un sol botó.

Per a això, creu una forma com aquest codi.

<= Tipus d'entrada de classe "form_upload" = "file" name = "arxiu1 []" valor múltiple = "Descripció general">

<= Tipus de classe d'entrada "form_upload" = "submit" name = "upldFile" value = "Afegeix" />

Tingueu en compte que l'addició múltiple de la paraula, i el nom es dóna com una matriu []. En aquest cas, array $ _FILES serà una mica diferent. Obtindrà un conjunt de la matriu.

Per provar de nou pot utilitzar la var_dump ($ _ FILES);

Tots els arxius es col·loquen en la matriu de la següent manera:

  1. $ _FILES [ "arxiu1"] [ "nom"] [0]
  2. $ _FILES [ "arxiu1"] [ "nom"] [1]
  3. I així successivament.

Entre parèntesi s'escriu el nombre d'arxiu de la matriu. A comptar des de zero. Els tractem de la mateixa manera, només demana el cicle i posant-se en contacte amb el codi anteriorment descrit al final de l'índex afegint [$ i].

$ I = 0;

while ($ _FILES [ "arxiu1"] [ "nom"] [$ i] <> '')

{

/// enganxar el codi anterior

}

Per tant, haurà de passar per una càrrega d'arxius PHP amb el servidor en un cicle sense repetició innecessària del codi, com sol ser el cas si s'utilitza la versió amb un nombre estàtic d'arxius (última foto).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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