PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kein *.gif


Dönerman
27.09.2005, 09:59:54
Ich habe ein script gefunden wo man automatisch thumbs erstellen kann!
aber die *.gif werden schwarz! warum! könnt ihr mir helfen??

mein ganzes upload script!


<?php
include ("dbconnect.php");
$imgname = $_FILES['userfile']['name'];
$path = 'upload';


if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {

copy($_FILES['userfile']['tmp_name'], "./".$path."/$imgname");
header ("location: upload_3_admin1.php");
} else {
if (!$imgname) {
header ("location: upload_4_admin1.php");
}
}

$folder_scr = "upload";
$des_src = "thumbs";
$thumbx = "100";
$thumby = "100";

function mkthumb($img_src,
$img_width,
$img_height,
$folder_scr,
$des_src)
{
$image = imagecreatefromjpeg($folder_scr."/".$img_src);
list($src_width, $src_height) = getimagesize($folder_scr."/".$img_src);
if($src_width >= $src_height)
{
$new_image_width = $img_width;
$new_image_height = $src_height * $img_width / $src_width;
}
if($src_width < $src_height)
{
$new_image_height = $img_width;
$new_image_width = $src_width * $img_height / $src_height;
}
$new_image = imagecreatetruecolor($new_image_width, $new_image_height);
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_image_width,$new_image_height, $src_width, $src_height);
imagejpeg($new_image, $des_src."/".$img_src, 100);
}

$filename = $_SERVER['PHP_SELF'];

$verz=opendir($folder_scr);

$linkl = array ();

while ($file = readdir ($verz))
{

if($file != "." && $file != ".." && $file != $filename)
{
array_push ($linkl, "$file");
}
}

$anzahl = count($linkl);

sort ($linkl);

foreach($linkl as $key => $value)
{

if(!file_exists($des_src."/".$value))
{

mkthumb($value, $thumbx, $thumby, $folder_scr, $des_src);
}
}

closedir($verz);

$datum = date("j.n.Y g:i:s");
$eintrag = "INSERT INTO file (name, time) VALUES ('$imgname', '$datum')";
$eintragen = mysql_query($eintrag);
exec('xcopy C:\apachefriends\xampp\htdocs\test\php\echt\admin1\upload C:\apachefriends\xampp\htdocs\test\php\echt\admin1\picture /e/i');

header ("location: upload/index.php?id=$imgname");

c4
27.09.2005, 10:19:01
Frag doch einfach die Person, die das Ding verbrochen hat...

Dönerman
27.09.2005, 10:21:17
haha!

da steht eh "$image = imagecreatefromjpeg"

Ehm.. wie kann ich machen, dass ich kein gif hochladen kann??

geht das überhaupt?

c4
27.09.2005, 10:23:31
Man kann alles hochladen, da kannst Du nix beeinflussen.
Du kannst aber dafür sorgen, dass nur das gespeichert wird, was Du willst. Wie Du das überprüfst darfst Du gefälligst selber probieren!
Tipp: Suchen und Überlegen!

sysop
27.09.2005, 21:05:19
wenn du schon am grübeln bist, würde ich mal überlegen, wie man eine erlaubt-liste anlegt, in der ALLES verboten ist, was du nicht dezitiert erlaubst.

Serp
28.09.2005, 01:15:07
Alternativ könntest du ja auch einfach den MIME-Typ des Bilds ermitteln und dann im Script per switch die dazu passende Funktion aufrufen. Gibt ja immerhin auch imagecreatefromgif und imagecreatefrompng... ;)

meikel (†)
28.09.2005, 01:25:36
Alternativ könntest du ja auch einfach den MIME-Typ des Bilds ermitteln ...
Das macht man nicht alternativ sondern man macht es ausschließlich so. Entscheidend ist der MIME Typ und nicht die Extension:

switch(mime_content_type($_FILES['upload']['tmp_name'])
{
case 'image/jpeg':
# irgend was
break;
case 'image/gif':
# was anderes
break
default:
echo 'Nicht erlaubter Dateityp.';
$error = true;
}

Man ermittelt den MIME Typ selber!
$_FILES['userfile']['type']
Der Mime-Type der Datei, falls der Browser diese Information zur Verfügung gestellt hat.
Wer sich darauf verläßt, hat auch verloren.

Serp
28.09.2005, 01:28:32
Ich meinte auch Alternativ zu einer Lösung, dass nur jpgs hochgeladen werden können, nicht dazu, dass man das irgendwie per Dateiendung überprüft.