Uploadet nur gifs und keine jpgs
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
blicken
byte
datei
dateiname
eigene funktion
exit
fehler
format
image
inhalt
intuition
leere datei
manual
mimen
opus
ordner
string
swf
variable
wirklichkeit
-
hi,
diese Script hier soll erlauben, gifs und jpg hochzu laden. Aber eldier erlaubt er nur gifs. Was ist falsch dran:
$mime = $_FILES["datei"]["type"]; if($mime == "image/jpeg" || $mime == "image/gif" || $mime == "image/jpg") { // In den Bilderordner verschieben move_uploaded_file($_FILES["datei"]["tmp_name"], $bilder_ordner .$_FILES["datei"]["name"]); // Wo ist die Datei jetzt? -> Pfad ausgeben header ("Location: new_pics.php?fertig=1"); } else { header ("Location: new_pics.php?format=1"); exit; }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ich bin zwar noch php-anf?nger, aber ich w?rde behaupten, dass in der ersten Zeile der Wurm drin ist.
frag mich jetzt aber bitte nicht nach dem Warum, das ist m?nnliche Intuition ^^
gibt es nicht in php eine eigene funktion, um den mime-type eines bildes zu bestimmen?
wenn ich das skript richtig verstanden habe (hofe ich doch mal stark), ?bergibst du am anfang ein assoziatives array an die Variable "mime". oder was soll das darstellen? -
ja richtig, und dann will ich halt festellen ob es ein gif oder ein jpg ist. aber bei gifs geht es nur bei jpgs nicht
-
AFAIK ist der mimie type nur der vom Browser ?bermittlete. Er l?sst sich also f?lschen und in Wirklichkeit ganz andere Dateien hochzuladen.
Um zu ?berpr?fen ob und um welches Bild es sich handelt eignet sich getimagesize besser.
http://de3.php.net/manual/de/function.getimagesize.php -
[code]
$array = array(
1 => "gif",
2 => "jpg",
3 => "jpeg",
4 => "SWF");
$size = getimagesize($_FILES["datei"]["type"]);
if($size['2'] == "jpeg" || $size['2'] == "gif" || $size['2'] == "jpg")
{
[code] -
$array = array( 1 => "gif", 2 => "jpg", 3 => "jpeg", 4 => "SWF"); $size = getimagesize($_FILES["datei"]["type"]); if($size['2'] == "jpeg" || $size['2'] == "gif" || $size['2'] == "jpg") {
-
moul schrieb:
$array = array( 1 => 'gif', 2 => 'jpg', 3 => 'jpeg', 4 => 'SWF'); $size = getimagesize($_FILES['datei']['type']); if($size['2'] == 'jpeg' || $size['2'] == 'gif' || $size['2'] == 'jpg') {
Das ist falsch, da $size['2'] eine Zahl enth?lt!
Mach's so:
$pfad = "DeinOrdner/" . $_FILES["datei"]["name"]; move_uploaded_file($_FILES["datei"]["tmp_name"], $pfad); // ----------------------- $array = array( 1 => "GIF", 2 => "JPG", 3 => "PNG", 4 => "SWF"); $size = getimagesize($pfad); $bildtyp = $array[$size['2']]; // ----------------------------- if($bildtyp == "JPG" || $bildtyp == "GIF") { header ("Location: $pfad"); } else { unlink($pfad); header ("Location: new_pics.php?format=1"); exit; }
-
ich habe versuch es so zu machen , aber es klappt immer noch nciht hier mal mein ganzer code:
PHP:
<?php // Der Ordner, in den die Bilder hochgeladen werden sollen $bilder_ordner = "bilder/"; // Dateiname leer? if($_FILES["datei"]["name"] == "") { header ("Location: new_pics.php?fehler=1"); exit; } // Tempor?rer Dateiname leer? if($_FILES["datei"]["tmp_name"] == "") { header ("Location: new_pics.php?fehler2=1"); exit; } // Leere Datei? if($_FILES["datei"]["size"] == 0) { header ("Location: new_pics.php?fehler3=1"); exit; } // Datei gr??er als 10000 Byte? if($_FILES["datei"]["size"] > 1572864) { header ("Location: new_pics.php?fehler4=1"); exit; } $filename = $_FILES["datei"]["type"]; // die hochgeladene Datei eben if (substr($filename, -4) == '.jpg' OR substr($filename, -5) == '.jpeg' OR substr($filename, -4) == '.gif') { // In den Bilderordner verschieben move_uploaded_file($_FILES["datei"]["tmp_name"], $bilder_ordner .$_FILES["datei"]["name"]); // Wo ist die Datei jetzt? -> Pfad ausgeben header ("Location: new_pics.php?fertig=1"); } else { header ("Location: new_pics.php?format=1"); exit; } ?>
-
D?j? vu?
Hatten wir das nicht schon mal?
$filename = $_FILES["datei"]["type"];
$_FILES['datei']['type'] enth?lt nicht den Namen der Datei, sondern eben den MIME-Type ("image/blub").
Um solche Fehler zu umgehen (und zu beheben), macht es sich immer gut, vor der Ausf?hrung einer Aktion mal testweise mit print_r($_FILES); den gesamen Inhalt dieser Variable anzuzeigen. Da siehst du dann auf einen Blick, welche Text-Strings wo in der Variable stehen.
Und:
http://de.php.net/manual/de/features.file-upload.php
Ist auch ganz interessant ...
MfG
alopex
Beitrag ge?ndert am 23.07.2005 21:26 von alopex -
also ich habe meinen Fehler gefunden. Es war kein Fehler. Der Upload klappt mit IE wunderbar nur mit Opera nicht, wei? echt nciht warum...
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage