|
In acest tutorial va voi arata cum sa creati un formular HTML cu ajutorul caruia veti putea incarca fisiere pe site, incepand de la structura HTML a formularului pana la codul PHP. In plus, va voi explica cum se pot seta foarte usor tipul fisierelor acceptate si marimea maxima a acestora.
Aici poti vedea un demo al formularului pe care il vom realiza.
Ce sunt formularele Html?
Formularele reprezinta o metoda de interactivitate cu utilizatorii unei pagini web. Prin intermediul unui formular se pot obtine date importante de la vizitatorii unui site. Pentru a defini un formular, este nevoie ca acesta sa fie incadrat de tag-urile <form> si </form>.
Instructiunea <form> are 2 atribute foarte importante: ACTION si METHOD.
- Cu ajutorul atributului ACTION ii spunem browser-ului ce se va intampla cu datele introduse in formular, cu alte cuvinte fisierul care va primi aceste date si le va prelucra.
- Dupa ce formularul a fost completat, utilizatorul apasa un buton de trimitere, apoi datele vor fi procesate cu ajutorul unui limbaj de programare. Atributul METHOD, asa cum ii spune si numele, precizeaza metoda de trimitere a datelor si poate avea doua valori. Valoarea implicita a acestui atribut este GET, cu ajutorul acestei metode putand fi trimise cantitati mici de date, dar cea mai folosita metoda este POST, ce permite transmiterea mai multor informatii, de dimensiuni mai mari.
Mai jos poti vedea codul HTML pentru un formular simplu. Acesta contine un singur camp de tip fisier (file) si un buton de trimitere (submit).
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" id="file"> <br />
<input type="submit" value="Upload" class="buton"/>
</form>
Dupa cum poti observa, campul fisier are denumirea userfile. Aceasta denumire este importanta deoarece fisierul va fi preluat din formular utilizand aceasta denumire.
|
OBS. Pentru a putea incarca fisiere, tag-ul form trebuie sa contina atributul enctype="multipart/form-data". In caz contrar, campul userfile va fi transmis, dar valoarea sa va fi una nula.
|
Preluarea fisierului incarcat
In continuare ne vom ocupa de fisierul upload.php, ce are ca scop preluarea fisierului incarcat in formular si salvarea acestuia pe server.
Permitem utilizatorului sa uploadeze doar imagini jpg, gif, bmp si png (celelalte tipuri de fisiere, posibil malitioase, cum ar fi fisiere executabile, fisiere .php, fisiere .js nu pot fi urcate). Cu ajutorul functiei substr() vom delimita extensia fisierului, de care avem nevoie pentru a o putea verifica. Aceasta portiune este cuprinsa intre caracterul . ( a carui pozitie o vom calcula cu functia strpos()) si sfarsitul denumirii fisierului (pe care il vom afla cu functia strlen() ce returneaza lungimea unui sir de caractere).
Iata un mic exemplu pentru a intalege mai bine cum functioneaza codul:
<?php
$filename = "poza.bmp";
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
echo "$ext";
?>
Rezultatul executiei scriptului de mai sus va fi afisarea textului ".bmp".
Un alt lucru de care trebuie sa tii cont este ca atunci cand un fisier este transmis de catre un formular, acesta este incarcat intr-un director temporar pe server. Pentru a-l pastra pe server, el trebuie salvat intr-un alt director de catre scriptul .php ce prelucreaza datele din formular.
Iata codul din fisierul upload.php:
<?php
http://mozzartut.isgreat.org/simple-upload.php
$allowed_filetypes = array('.jpg','.gif','.bmp','.png');
$max_filesize = 524288;
$upload_path = './files/';
$filename = $_FILES['userfile']['name'];
$ext = substr($filename, strpos($filename,'.'),
strlen($filename)-1);
if(!in_array($ext,$allowed_filetypes))
die('Acest fisier nu este acceptat.');
if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
die('Marimea fisierului este mai mare de 0.5MB.');
if (!is_dir('files')) {
mkdir('files', 0777);
}
if(!is_writable($upload_path))
die('Folderul specificat nu poate fi accesat. (CHMOD 777)');
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))
echo 'Fisierul a fost salvat cu succes.
<a href="' . $upload_path . $filename . '" title="fisier" target="_blank"><br/><img src="' . $upload_path . $filename . '" width="120px"/></a>';
else
echo 'A aparut o eroare. Mai incearca odata.';
echo "<br/><a href='index.php'>Incarca un fisier</a>";
?>
Sper ca acest tutorial sa va fie de folos. Daca aveti intrebari, nu ezitati sa-mi trimiteti un mesaj sau sa scrieti un comentariu.
|