Jump to content
php.lv forumi

Atļaut uploadot tikai bildes


Jackal

Recommended Posts

Nu man ir shitāds sktipts, tikai ir viena problēma ar šito skriptu var uploadot jebkuru failu. Kā ierobežot uploadošanu, lai var uploadot tikai bildes?

 

<?php

if($_SERVER['REQUEST_METHOD'] =='POST'){

foreach ($_FILES["pictures"]["error"] as $key => $error) {

if ($error == UPLOAD_ERR_OK) {

$tmp_name = $_FILES["pictures"]["tmp_name"][$key];

$name = $_FILES["pictures"]["name"][$key];

move_uploaded_file($tmp_name, "C:\Web Page\EasyPHP1-8\www\upload/$name");

echo "File";

echo " ";

echo $name;

echo " ";

echo "have been uploaded successfully";

}

}

}

 

?>

Link to comment
Share on other sites

Delfins - tas tikai gadījumā, ja tev ir ssh/telnet uz kastes... respektīvi ja caur web uploadē kkādu mēslaini, tad izsaucot tāpat apacis (vai kāds cits servs) pārbauda ekstensiju un atbilstoši tai arī rīkojas. so uztraukumam nav pamata.

elementārākais veids ir pārbaudīt pēdējos četrus simbolus na naļičijie ".jpg" ( vai kā cita, piemēram .png) un vsjo. neaizmirstam arī par pathinfo() funkciju, kura neprasa nekādus papildus mime moduļus. un arī neaizmirstam par to, ka uploadējot failu tiek noteikts tā mimetype (ja nemaldos tad vienreiz bija diskusija par to no kurienes tas mimetype uzrodas).

bet nu kā cilvēki runā tad visātrākais esot

$extension = substr(strrchr($filename, "."), 1);

Link to comment
Share on other sites

hmnc, gan extension gan pārlūka padotais filetype ir garām.

Pamatošu. Pārlūks var padot jebko (arī ļaunais lietotājs). Viens pārlūks pados image/jpeg, cits image/pjpeg (ja pareizi atceros netscape mime tipu jpg bildēm), cits vēl kautko un lietotājs arī doc failam pados image/jpeg telnetā. Un ko tālāk? Kā GD bibliotēka apstrādās tādu failu? Nekā. Tādēļ nevajag radīt problēmas kur to nav - jālieto funkcijas darbam ar konkrētu failu nevis nedrošiem tā atribūtiem.

Varbūt mazliet uzvilkos, bet tieši ar failu tipu pārbaudi esmu redzējis visādus "brīnumus", kuri neiet krastā, jo kādā gadījumā nefunkcionē pareizi.

Link to comment
Share on other sites

eglits - nedaudz paranoiski tu izklausies. paroles tu noteikti arī checksummo 5 reizes :)

pievienojos Delfins - nedabūn x/y izmērus, značit nav bilde.

a kur tad skriptā būs execute('bilde.jpg'); ? :DD

Link to comment
Share on other sites

hmnc, nē, tikai 1 reizi, bet obligāti klāt lieku salt'u (sāli?).

Vispār (laikam) šis ir iesācēju forums un nevajag mācīt nepareizas metodes. Tas nekas, ka "var arī tā"... Jo iesācēji mēdz interpretēt padomus visneiedomakajos veidos un rezultātā var neatpazīt paplašinājumu "jpeg", neatpazīt image/pjpeg un beigās vēl pārbaudīt tikai "jpg" esamību faila nosaukumā un kopēt uz no ārpuses pieejamu mapi "fakejpg.php" tipa failus.

Link to comment
Share on other sites

To es noteikšu ar to pašu getimagesize() funkciju.

With JPG images, two extra indexes are returned: channels and bits. channels will be 3 for RGB pictures and 4 for CMYK pictures. bits is the number of bits for each color.
Link to comment
Share on other sites

×
×
  • Create New...