Tutorial script incarcare fisiere (PHP)
Salutare tuturor!
Astazi am sa va arat pas cu pas cum se face un script PHP de incarcat fisiere.
1. Pagina HTML ce contine formularul de incarcare.
Pentru inceput avem nevoie de o pagina HTML ( index.html) in care sa se gaseasca continutul urmator:
1 2 3 4 |
<form action="incarca.php" method="POST" enctype="multipart/form-data"> <input type="file" name="fisier" id="fisier"/> <input type="submit" value="Porneste incarcarea"/> </form> |
Acest cod nu face nimic altceva decat sa preia fisierul ales de noi si sa il trimita pe server.
Dupa cum se poate observa deja, aici este doar codul de incarcare a fisierului. Asta inseamna ca puteti adauga codul intr-o pagina deja facuta de Dvs. sau sa faceti o pagina exact asa cum doriti.
2. Acum creeam fisierul incarca.php si intram in el.
Prima data trebuie sa setam o functie care sa interzica accesul utilizatorilor asupra fisierului in caz ca nu folosesc formularul. Functia este urmatoarea:
1 2 3 |
if(!isset($_FILES['fisier']) && !isset($_POST['trimite'])){ exit("Imi pare rau, dar nu ai voie sa intri aici!"); } |
Acum mai trebuie sa setam cateva variabile si suntem aproape gata. Variabilele sunt acestea:
1 2 3 4 5 6 |
date_default_timezone_set('Europe/Bucharest'); // Aceasta functie seteaza ora pentru Romania. $erori= array(); // Aceasta functie este o lista goala care este utilizata in caz ca apare vre-o eroare. $lista_cu_extensiile_pernmise= array("jpeg","jpg","png","gif","ico","bmp","txt","doc","psd"); // Aici este lista cu fisierele permise. $marime_maxima_fisier = "2097152"; // Marimea maxima a fisierelor in B(ytes). $folder_pentru_incarcari = "imagini"; // Numele folderului in care se salveaza fisierele. Doar numele, fara nici un /. $adresa_site = "http://localhost/up/"; // Adresa curenta unde este instalat site-ul. |
Totuti, din motive de securitate am mai setat urmatoarea functie in caz ca apar probleme cu folderul pentru incarcari:
1 2 3 |
if (!file_exists($folder_pentru_incarcari)) { mkdir($folder_pentru_incarcari, 0777, true); } |
Acum trebuie sa definim niste variabile care ne vor ajuta pe viitor. Variabilele sunt urmatoarele:
1 2 3 4 5 6 |
$nume_fisier = $_FILES['fisier']['name']; $marime_fisier =$_FILES['fisier']['size']; $nume_fisier_temporar =$_FILES['fisier']['tmp_name']; $tip_fisier=$_FILES['fisier']['type']; $extensie_fisier=strtolower(end(explode('.',$_FILES['fisier']['name']))); $nume_fisier_complet = date('dmYHis').'.'.$extensie_fisier; |
Acum tot ce mai trebuie sa facem este sa punem un sir de functii si variabile care sa incarce fisierul si sa faca verificari:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
if(in_array($extensie_fisier,$lista_cu_extensiile_pernmise)=== false) { $erori="Ne pare rau, dar fisierul pe care incercati sa il incarci nu are nici una din extensiile permise."; } else { if($marime_fisier > $marime_maxima_fisier) { $erori="Ne pare rau, dar fisierul pe care incercati sa il incarci are marimea mai mare decat cea permisa."; } else { if($marime_fisier < 1) { $erori="Ne pare rau, dar fisierul pe care incercati sa il incarci este prea mic."; } else { move_uploaded_file($nume_fisier_temporar,$folder_pentru_incarcari."/".$nume_fisier_complet); echo "Felicitari! Fisierul tau a fost incarcat si il poti accesa la adresa urmatoare: $adresa_site$folder_pentru_incarcari/$nume_fisier_complet"; } } } |
Ultimul lucru care ne mai trebuie in fisierul nostru este o functie care sa afiseze erorile in caz ca sunt:
1 2 3 |
if($erori==true){ print_r($erori); } |
3. Salvam fisierul si testam.
Daca fiecare pas a fost urmat corect, fisierele Dvs. ar trebui sa arate astfel:
index.html:
1 2 3 4 |
<form action="incarca.php" method="POST" enctype="multipart/form-data"> <input type="file" name="fisier" id="fisier"/> <input type="submit" value="Porneste incarcarea"/> </form> |
incarca.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php if(!isset($_FILES['fisier']) && !isset($_POST['trimite'])) { exit("Imi pare rau, dar nu ai voie sa intri aici!"); } date_default_timezone_set('Europe/Bucharest'); $erori = array(); $lista_cu_extensiile_pernmise= array("jpeg","jpg","png","gif","ico","bmp","txt","doc","psd","sql"); $marime_maxima_fisier = "2097152"; // marimea in B(ytes). $folder_pentru_incarcari = "imagini"; // Doar numele, fara nici un /. $adresa_site = "http://localhost/up/"; if (!file_exists($folder_pentru_incarcari)) { mkdir($folder_pentru_incarcari, 0777, true); } $nume_fisier = $_FILES['fisier']['name']; $marime_fisier =$_FILES['fisier']['size']; $nume_fisier_temporar =$_FILES['fisier']['tmp_name']; $tip_fisier=$_FILES['fisier']['type']; $extensie_fisier=strtolower(end(explode('.',$_FILES['fisier']['name']))); $nume_fisier_complet = date('dmYHis').'.'.$extensie_fisier; if(in_array($extensie_fisier,$lista_cu_extensiile_pernmise)=== false) { $erori="Ne pare rau, dar fisierul pe care incercati sa il incarci nu are nici una din extensiile permise."; } else { if($marime_fisier > $marime_maxima_fisier) { $erori="Ne pare rau, dar fisierul pe care incercati sa il incarci are marimea mai mare decat cea permisa."; } else { if($marime_fisier < 1) { $erori="Ne pare rau, dar fisierul pe care incercati sa il incarci este prea mic."; } else { move_uploaded_file($nume_fisier_temporar,$folder_pentru_incarcari."/".$nume_fisier_complet); echo "Felicitari! Fisierul tau a fost incarcat si il poti accesa la adresa urmatoare: $adresa_site$folder_pentru_incarcari/$nume_fisier_complet"; } } } if($erori==true) { print_r($erori); } ?> |
Nota: Scriptul a fost testat si merge perfect. Daca aveti probleme va rugam sa le lasati in sectiunea pentru comentarii 🙂
Asta a fost tot pe astazi! Ne vedem data viitoare cu un nou articol 😉