»  Pagina principala  »  PHP si mysql »  Upload de fisiere cu PHP

Upload de fisiere cu PHP


Scripturi pentru uploadare de fisiere

intr-un folder din site-ul tau se pot face multe. Va voi ararta cum sa faceti un upload simplu, insa scriptul pe care-l voi prezenta in prima faza nu este suficient de sigur pentru a putea fi folosit. Pentru ca un script de upload sa fie functional trebuie sa setam niste restrictii pentru fisierele uploadate. Acestea fiind spuse, sa incepem.

Scriptul cuprinde doua fisiere: 1 fisier .html su un fisier .php

Fisierul .html il voi denumi upload.html si va cuprinde codul de mai jos:

       
<html>
      <form enctype="multipart/form-data" action="upload.php" method="POST">
      Choose a file to upload: <input type="file" name="uploadedfile"><br>
      Description: <textarea name="descriere" rows=3 cols=30>descrierea aici</textarea><br>
      <input type="submit" value="Upload Fisier" />
      </form>
    </html>

Am introdus si un textarea cu "Descriere" dar deocamdata nu foloseste la nimic, fiind folositor doar pentru exemplele urmatoare.
Dupa cum puteti observa, se face trimitere la fisierul upload.php care va contine urmatorul cod:

       

<?php
        error_reporting(0);
        $target_path = "uploads/"; /* folderul in care se vor uploada fisierele */
        $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
        if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)){
        echo "Fisierul ".  basename( $_FILES['uploadedfile']['name'])." a fost uploadat"; /* concateneaza textul predefinit cu numele fisierului uploadat */
        }
        else{
        echo "Avem probleme la uploadare!";
        }
        ?>

   

Cam asta ar fi codul necesar pentru a urca fisiere. De functionat functioneaza dar problema e ca nu e sigur din cauza lipsei restrictiilor. (se pot uploada tot felul de fisiere: executabile, de dimensiuni foarte mari ).


Limitarea tipurilor de fisiere care pot fi uploadate:
         In exemplul de mai jos am adaugat conditia ca doar fisierele de tip .jpeg si .jpg sa fie acceptate.
         Variabila $verif a fost setata la 1. Daca nu este indeplinita conditia este schimbata la 0 si uploadarea nu se mai face.
<?php
    error_reporting(0);
    $target_path = "uploads/";
    $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
    $verif=1; //va fi folosita pentru validare
if (!($_FILES['uploadedfile']['type']=="image/jpeg")) /* daca fisierul nu este de tipul .jpeg */
{
echo "Fisierul uploadat nu are extensia corespunzatoare<br>";
$verif=0;
}
if ($verif==0)
{
echo "nu am putut sa uploadam fisierul";
}
else
{
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)){
        echo "Fisierul ".  basename( $_FILES['uploadedfile']['name'])." a fost uploadat"; /* concateneaza textul predefinit cu numele fisierului uploadat */
        }
        else{
        echo "Avem probleme la uploadare!";
        }
}
        ?> 


         Se pot pune mai multe conditii de forma IF. De exemplu o conditie pentru dimensiune:
if ($_FILES['uploadedfile']['size'] > 200000)
{
echo "Fisierul e mai mare decat e permis.<br>";
$verif=0;
}
      Aceasta conditie se poate adauga pur si simplu in script si este suficienta pentru a controla dimensiunea fisierului care va fi uploadat. Este suficienta si coditia pentru tipul fisierului dar ar fi totusi mai bine sa avem posibilitatea sa permitem urcarea mai multor tipuri de fisiere.
      Putem sa facem asta verificand extensia fisierelor. Pentru a afla extensia fisierului pe care il vom uploada si a o putea folosi pentru verificare trebuie sa o extragem cu PHP din numele fisierului.
$numefile = $_FILES['uploadedfile']['name']; /* punem numele fisierului intr-o variabila pentru a ne fi mai usor sa-l folosim in actiunea urmatoare */
$ext = substr($numefile, strpos($numefile,'.'), strlen($numefile)-1); /* extrage extensia din numele fisierului */
 echo $ext."<br>";

       Odata gasita extensia fisierului problema este ca si rezolvata.
       Pentru o mai buna flexibilitate a scriptului o sa bagam intr-un array
extensiile pentru care permitem uplaodarea.
$extensii_bune =  array('.jpg','.jpeg','.gif','.bmp');
      
       Conditia va fi de urmatoarea:
 if(!in_array($ext,$extensii_bune))
{
   echo "Nu suportam extensia ".$ext;
   $verif=0;
}






Articole asemanatoare
» Tutorial complet JavaScript (prima parte)
» Script Afisare Aleatoare de Imagini
» Numara vizitele ( Hit Counter )

Comentarii



   Daniel

Mda.....dar scriptul tau nu incarca fisiere mai mari de 0.5 mb .Adica chiar daca ii pui restrictia ca dimensiunea fisierului sa fie mai mica de 20 mb si fisierul va fi de 5 mb tot nu se va incarca.
29-Jun-2010 - 22:31


   cristian

Cred ca ai restrictie de la hosting pentru upload. Incearca sa rezolvi problema apeland la technical support sau modificand setarea in php.ini.
30-Jun-2010 - 10:33


   robert

auzi ma daniele da nu ti se pare ca vrei cam multa mura in gura ......?    
si eu caut de vro 3 ani  un cod de  comentariu ca acesta si nu m-am plins pe ceaturiii  
cine vre sa comenteze buzzz!!!   robyresyta@yahoo.com
19-Nov-2010 - 17:50



Voteaza acest articol!
 



Trimite un comentariu!

Nume *
E-mail *
Comentariu *
  Vreau sa fiu anuntat de urmatoarele mesaje la acest articol

Security image

Cristian Bozeanu

Free Mini Games

Cloud tag

tutorial, photoshop, html, css, javascript, flash, php, mysql, grafica 3D, tutorial, coduri, scripturi, generator de coduri, cursuri php