PHP Carregar arquivos – somente verificação de imagem

Tenho um simples script de upload do PHP que comecei. Não sou o melhor para o PHP. Apenas procurando algumas sugestões.

Eu quero limitar meu script para apenas .JPG, .JPEG, .GIF e .PNG

Isso é possível?

 

Sim, com bastante facilidade. Mas primeiro, você precisa de alguns bits extras:

 // never assume the upload succeeded if ($_FILES['file']['error'] !== UPLOAD_ERR_OK) { die("Upload failed with error code " . $_FILES['file']['error']); } $info = getimagesize($_FILES['file']['tmp_name']); if ($info === FALSE) { die("Unable to determine image type of uploaded file"); } if (($info[2] !== IMAGETYPE_GIF) && ($info[2] !== IMAGETYPE_JPEG) && ($info[2] !== IMAGETYPE_PNG)) { die("Not a gif/jpeg/png"); } 

documentos relevantes aqui e aqui e aqui

O caminho do arquivo não é necessariamente a melhor maneira de verificar se uma imagem realmente é uma imagem. Eu poderia pegar um arquivo de javascript malicioso, renomeá-lo para ter a extensão .jpg e carregá-lo. Agora, quando você tenta exibi-lo em seu site, talvez eu tenha apenas comprometido seu site.

Aqui está uma function para validar é realmente uma imagem:

  

tente isso:

  
 if (substr($_FILES["fieldName"]["name"], strlen($_FILES["fieldName"]["name"])-4) == ".jpg") { if(move_uploaded_file($_FILES["fieldName"]["tmp_name"],$path."/".$_FILES['fieldName']['name'])) { echo "image sucessfully uploaded!"; } } 

Da mesma forma, você pode verificar outros formatos de imagem também.