Jump to content
ciubyever

Upload cu PHP

Recommended Posts

Posted

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;

}

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...