php image Upload

Bin eben fertig geworden mitn Imageupload und stelle mir nun die Frage wie ich überprüfen kann ob es auch wirklich ein Bild ist, nicht nur eine Datei die mit .png,jpg oder sonstwas geliefert wird, da ich bis jetzt nur auf die Endung überprüfe nicht auf den Inhalt! Kann mir da jemand helfen?

lg danke

Kleines Beispiel:

[php]

$datei = „test.jpg“;

function detect_mime($filename) {
$filetype=strrchr($filename, „.“);

switch ($filetype) {
case „.bmp“: $datei=„image/bmp“; break;
case „.gif“: $datei=„image/gif“; break;
case „.jpeg“: $datei=„image/jpeg“; break;
case „.jpg“: $datei=„image/jpeg“; break;
case „.png“: $datei=„image/png“; break;
}
return $datei;
} [/php]

So und dann brauchste ja nur noch ne Abfrage, die $datei überprüft. Habs aber nicht getestet. Such am besten einfach bei Google ma nach „MIME-Typ“

hm naja es gibt noch weitere Varianten - allerdings weiß ich nicht welche am sichersten ist. Vlt alle miteinander kombinieren ^^
[PHP]
//Methode 1
//$bild ist die hochgeladene Datei
if(getimagesize($bild) === false) unlink($blid);

//Methode 2
if(!preg_match(„%.+/image%i“,$_FILES[„file“][„type“])) unlink($bild);
[/PHP]

ansonsten kannst du auch einfach versuchen ob du mit den Bildfunktionen etwas am bild ändern kannst, wenn das fehlschlägt ist es kein Bild…

Weiß nicht, ob das möglich ist, sollte aber. Man kann die Datei ja auch mit PHP öffnen und die ersten paar Buchstaben auslesen. Wenn man das ganze mal mit nem Texteditor macht, sieht man, was ich meine.

Funktioniert sehr gut bei .gif-Dateien, weil man es direkt erkennt an den ersten Buchstaben in der Datei. .jpg hat auch immer das selbe und sonst hab ich noch nichts weiteres getestet.

Ich habe das heute erst gemacht, leider etwas erfolglos xDD

also…
irgendwie so →

[PHP]

<?php if (eregi('.jpg',$file) || eregi('.gif',$file) || eregi('.bmp',$file) || eregi('.png')) { echo 'Alles hat geklappt.'; } else { echo '
Es sind nur die Dateitypen .jpg , .gif , .bmp und .png erlaubt!
'; } ?>

[/PHP]

$file , ist die die Variable für die datei.

Schreib einfach mal google, php eregi , hin ^^ ;heart

@zorndyuke: Überprüft das ganze dann nicht auch nur, ob es JPG oder jpg ist? Also wenn ich mir so das Beispeil auf php.net anschaue

[php]<?php $string = 'XYZ'; if (eregi('z', $string)) { echo "'$string' contains a 'z' or 'Z'!"; } ?>[/php]

Zeigt für mich, dass er nach bestimmten Dingen, in diesem Falle ein „z“ in einem String durchsucht und dann ausgibt, dass dieses „z“ in irgendeiner Form vorhanden ist.

Oder so: SELFHTML: HTML/XHTML / Formulare / Felder für Datei-Upload

Schwachsinnige Lösung, da sie Umgangen werden kann.

:shock: Wie das?

Boormarklet
Selber ein Formular erstellen
FF-Addon „Web Developer“ verwenden

Solche Leute gibts, also wirklich… :mrgreen: