A lo que te refieres algunos le llaman "enmascarar al archivo", pudiendo así camuflar archivos potencialmente peligrosos. Para esto, actualmente se utiliza el módulo
Fileinfo (es posible que, en versiones antiguas de PHP, sea necesario activar la librería
php_fileinfo.dll
en el archivo
php.ini
), siendo la forma más efectiva para detectar casos así. Un ejemplo de su uso:
Código PHP:
Ver original$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime = $finfo->file($_FILES['ejemplo']['tmp_name']); $mimes = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/bmp'];
echo in_array($mime, $mimes) ?
'Es un archivo de imagen' : 'No es un archivo de imagen';
En el ejemplo, se crea un nuevo recurso
fileinfo
, pasándole como argumento la constante
FILEINFO_MIME_TYPE
para así obtener el MIME del archivo; luego, obtenemos dicha información del archivo en cuestión; establecemos los MIME aceptados (en este caso, de archivos de imagen) en un arreglo y, finalmente, verificamos si el MIME del archivo coincide con uno de ellos, imprimiéndose una respuesta según sea el caso.
Y, en el caso de que la versión de PHP que usas no tenga implementado dicho módulo, puedes usar la función
getimagesize()
, con la diferencia de que solo podrás usarla con archivos de imagen.
P. D.: Creo que ya te respondieron esto. No había visto las respuestas.