12
votes

PHP: données d'image binaires, vérifiant le type d'image

J'ai des images dans la corbeille, je veux vérifier l'en-tête pour vérifier le format (JPG, PNG, etc.)

Je ne veux pas utiliser des fichiers temporaires! J'ai une solution à l'aide de fichiers Temp.


0 commentaires

7 Réponses :


0
votes

Les fichiers sont-ils téléchargés ou sont-ils déjà sur le système de fichiers?

essayez d'utiliser mime_content_type () pour obtenir le format MIME du fichier.


0 commentaires

-1
votes

Pourquoi ne pas simplement vérifier l'intégrité du fichier? :)

une alternative xxx


2 commentaires

Donc, la plupart de vos fichiers GIF ne sont pas réellement gifs? Il n'y a vraiment aucune raison que cela ne fonctionnerait pas si vous avez affaire à des téléchargements d'utilisateurs, et même vous n'avez probablement rien à craindre.


En 2012, certains utilisateurs croient qu'ils peuvent convertir des images simplement en renommant le fichier ... Donc, ce n'est pas fiable.



26
votes

Les bits commencent par:

$JPEG = "\xFF\xD8\xFF"
$GIF  = "GIF"
$PNG  = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a"
$BMP  = "BM"
$PSD  = "8BPS"
$SWF  = "FWS"


4 commentaires

Pourriez-vous donner un exemple de la manière dont vous les vérifieriez contre certaines données binaires à l'aide de PHP? Merci


@Donutreply - juste pour les personnes qui cherchent: gist.github.com/codebrauer/5fe9ad14fa9786b3d1f6


Avez-vous des informations sur les derniers bits pour trouver la fin d'une image?


@Daniel a découvert de fin de compte.am à la recherche également à la recherche de la même chose.



5
votes

Voici une implémentation de la fonction décrite par Wrikken xxx


0 commentaires

0
votes

Utilisez l'extension PHP FileInfo:

http: // de.php.net/manual/fr/funcunction.finfo-file.php

STI est à l'aide de la commande "Fichier" * Nix pour déterminer de manière fiable le type MIME d'un fichier donné: < / p> xxx

Cette extension est expédiée avec PHP 5.3 ou peut être installée à partir de PACL (PACL Install FileInfo) pour les versions antérieures.


0 commentaires

0
votes

http://php.net/manual/fr/function.getimagesize.php

"Index 2 est l'une des constantes IMAGETYPE_XXX indiquant le type de l'image."


1 commentaires

Voir les documents de la fonction, il est écrit qu'il ne doit pas l'utiliser pour "Image".



48
votes

Je peux voir que la plupart d'entre vous ne comprenaient pas la question suivante :) (question indiquait comment valider les données binaires dans la mémoire tampon, pas un fichier sur disque).

J'ai eu le même problème et je l'ai résolu avec: < / p> xxx


3 commentaires

Cette solution est la meilleure, si vous utilisez php> 5.3


Cela devrait en effet être avancé au-dessus du mien avec l'état actuel de PHP, 5,3 vieillit.


Vous obtenez quelque chose de similaire à Application / PDF; Charset = binaire qui, à son tour, peut être extrait de cette manière: Liste ($ mime, $ Raw_Charset) = exploser (';', $ Finfo-> tampon ($ Rawimage)); et ensuite (si vous avez besoin du charset): $ charset = exploser ('=', couper ($ Raw_Charset)) [1];