dateitypen prüfen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anweisung
bild
bilddatei
breite hhe
datei
dateiname
definition
deklaration
eintrag
fehler
fehlermeldung
gerade mal
hauptsache
image
insert
kategorie
pawort
pixel
sammlung
zeile
-
Sers Leude
ich wollt mal fragen, wie ich bei einem Upload (mit if-Anweisung) ganz ALLGEMEIN pr?fe, ob es sich um ein Bild oder was anderes handelt.
und wenn mir schonmal so ein Thema auf machen, k?nnen wa auc gleich eine Sammlung von Definitionen auf machen ^^ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also einen einfachen Test kannst du anhand der Dateiendungen vornehmen. L?sst sich allerdings ziemlich leicht austricksen.
'Ne zweite M?glichkeit w?re, dass du versuchst die Datei unter Verwendung einer Grafikbibiliothek (libjpeg, libpng etc.) als ein bestimmter Dateityp zu laden. Wenn das funktioniert, stimmt der Typ.
Schlie?lich bleibt noch die M?glichkeit, das du dich mal ?ber den (bin?ren) Aufbau verschiedener Bildformate informierst und eine entsprechende Pr?froutine selbst schreibst. D?rfte allerdings relativ schwierig werden, nehm' ich mal an.
knuddelstreff schrieb:
und wenn mir schonmal so ein Thema auf machen, k?nnen wa auc gleich eine Sammlung von Definitionen auf machen ^^
Das verstehe ich nicht. Was genau willst du?
LG,
thw -
joa, was mein ich damit genau.
also eine kleine Bibliotek auf machen.
unter so ner Definition versteh ich sowas.
image/gif
so pr?ft man ja auf giftypen.
Jetzt brauch ich aber noch seeeeeeeehr viel mehr Typen.
und f?r Bilder einen ganz allgemeinen Parameter, also, dass es egal ist welches Bildformat es ist, hauptsache es ist eins... -
Die netten Server laufen doch bestimmt unter Linux, und da ist es mit dem "file-Befehl doch ein leichtes, sich den echten Dateityp, unabh?ngig vom Dateinamen, ausspucken zu lassen, dann br?uchte man noch eine Tabelle/Datenbank mit einer Black-/Whitelist von Dateitypen, und pro hochgeladener Datei wird die Abfrage durchgef?hrt...
PS: die Profis umgehen das dann und nehmen einfach FTP...
-
um genau zu sein brauche ich es um das hier zu pr?fen:
$pixel=getimagesize("$data");
$width=$pixel[0];
$height=$pixel[1];
mit den 3 Zeilen bekommt man die Bildproportionen raus. das hab ich bei meinem Upload eingebaut.
Ist die zu uploadende Datei aber kein Bild, kommen da 2 ganz bl?de Fehlermeldungen:
1)
Warning: getimagesize(): Unable to access index.php in /home/webpages/lima-city/knuddelstreff/html/index2.php on line 47
2)
Warning: getimagesize(index.php): failed to open stream: No such file or directory in /home/webpages/lima-city/knuddelstreff/html/index2.php on line 47
mit ner IF-Anweisung hab ichs jetzt gerade mal versucht. das klapt auch so weit... die Fehlermeldungen kommen nicht mehr, egal bei welcher Datei... was aber auch nicht mehr mitgeliefert wird, sind die Bildproportionen.
dann ham ich die 3 Zeilen mal an ner anderen Stelle hingesetzt (ganz unten vom script).
Das hat bei richtiger Bilddatei auc wieder geklapt... aber mal wieder net bei anderen.
ich screib einfac mal das ganze Script hin:
$verbindung = mysql_connect ("mysql.lima-city.de", "USER", "Passwort") or die ("keine Verbindung m?glich. Benutzername oder Passwort sind falsch"); mysql_select_db("DB528542912") or die ("Die Datenbank existiert nicht."); $data = $_FILES['userfile']['name']; $kategorie = $_POST['kategorie']; $pixel=getimagesize("$data"); $width=$pixel[0]; $height=$pixel[1]; if($data=="") { echo "<p></p>"; } else { if(file_exists('uploadbilder/'.$data.'')) { echo "Diese Datei existiert bereits. Bitte benennen Sie die Datei um!"; } else { // In PHP kleiner als 4.1.0 sollten Sie $HTTP_POST_FILES anstatt $_FILES verwenden. // In PHP kleiner als 4.0.3 verwenden man copy() und is_uploaded_file() anstatt von // move_uploaded_file() //Deklaration der g?ltigen mimetypen $mimearray=array("image/gif", "image/jpeg", "image/pjpeg","image/x-png","image/png"); //Upload verzeichnis $uploaddir = 'uploadbilder/'; //Pr?fen ob Formular gesendet wurde if($_POST['senden']==true){ // Pr?fung auf G?ltigkeit des Vordeklarierten MimeTyps if(in_array($_FILES['userfile']['type'],$mimearray)) { // dateiupload if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) { print "Datei ist g?ltig und wurde erfolgreich hochgeladen. <br>Debugginginfo:\n"; print "<br>"; print "Name: ".$_FILES['userfile']['name']."<br>"; print "Gr??e: ".$_FILES['userfile']['size']."<br>"; print "Typ: ".$_FILES['userfile']['type']."<br>"; $eintrag = "INSERT INTO uploadbilder (bild, kategorie, breite, hoehe) VALUES ('$data','$kategorie','$width','$height')"; $eintragen = mysql_query($eintrag); if($eintragen == true) { echo "Eintrag erfolgreich in die Datenbank eingetragen"; } }else{ // Fehler beim Dateiupload print "Fehler beim Dateiupload"; } }else{ //Fehlermeldung wenn Datei nicht den vordeklarierten MimeTypes entspricht print $_FILES['userfile']['name']." - ".$_FILES['userfile']['type']." <br>ist nicht f?r den Upload gestatet"; } } } }
also... am Amfang, wo die 3 zeilen jetzt steen, ab ic mal die IF-Anweisung ingeschrieben:
if($data == $mimearray) { $pixel=getimagesize("$data"); $width=$pixel[0]; $height=$pixel[1]; } else { echo "<p></p>"; }
das funzt aber iwie net... die Bildproportionen werden eben net mitgeliefert... -
Und was ist, wenn jemand eine simple HTML-Datei hochladen will? Der darf dann net...
-
ne, sind nur gif, png und jpg erlaubt... aber immer, wenn ne andere Datei, als ein Bild kommt, kommen eben diese bl?den Felermeldungen... um die get es sic ja
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage