Upload script
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beitrag
datei
dateiname
daten
dein
eingabe
endung
fehler
fenster
gedacht
gel
hilfe
kurzurlaub
letzte
mittag
ordner
pixel
sen
unklarheit
verbessert
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich mach dir mal eins, weil mir gerade langweilig ist...
PS: Kann bis morgen mittag dauern...
Edit:
So ging doch etwas schneller als gedacht, war nicht so kompliziert wir ich es mir vorgestellt hatte.
Edit2:
Da (der Chefkock die Dateinamen verschl?sselt haben wollte, werden sie nun md5 verschl?sselt...
Da das script einen bug hatte habe ich es schnell gel?scht...
* Der Pfad muss von der datei aus angegeben werden und am Ende ein / haben, falls die datein im selben ordner gespeichert werden sollen, in dem die datei liegt, leer lassen.
Beispiel:
Pfad der Upload Datei:
http://theuntouchables.xardas.lima-city.de/Daten/Bilder
Pfad in dem die Bilder sp?ter gespeichert werden sollen:
http://theuntouchables.xardas.lima-city.de/Daten/Bilder/Avatare
$path m?sste dann Avatare/ hei?en.
Bei unklarheiten bitte schreiben -
So ich komme gerade ausm kurzurlaub zur?ck...
Ich k?mmer mich mal drum...
Edit:
Ich habe den fehler gefunden...
also hier ist nun das hoffentlich bugfreie script...
<?php
$filesize = "102400";
$sizeabfrage = "yes";
$extend = "jpg|gif";
$extending = "yes";
$width = "100";
$height = "100";
$bulk = "no";
$path = "";
?>
<html>
<head>
<title>UPLOAD</title>
</head>
<body bgcolor=#ffffff text=#000000 link=#FF0000 alink=#FF0000 vlink=#FF0000>
<font face=arial size=2>
<?php
$fehler = FALSE;
if($senden)
{
$fehler = FALSE;
if ($file_name == "")
{
echo "<BR><font color=#FF0000><b>Es wurden keine Datein ausgew?hlt!</b></font>";
$fehler = TRUE;
}
if (!$fehler)
if ($sizeabfrage == "yes")
{
if ($file_size > $filesize)
{
echo "<BR><font color=#FF0000><b>Die Datei $file_name ist zu gro?!</b></font>";
$fehler = TRUE;
}
}
if (!$fehler)
if ($extending == "yes")
{
if (!eregi($extend, $file_name))
{
$typ = substr($file_name, -4, 4);
echo "<BR><font color=#FF0000><b>Der Dateityp $typ ist nicht erlaubt!</b></font>";
$fehler = TRUE;
}
}
if (!$fehler)
{
$filename = $file_name;
$typ = substr($file_name,-4);
$strlen = strlen($file_name);
$file_name = substr($file_name,0,$strlen-4);
$file_name = md5($file_name);
$file_name = $file_name.$typ;
if (copy($file,$path.$file_name))
{
if ($bulk == "yes")
{
$imagesize = getimagesize($file_name);
if ($imagesize[0] > $width)
{
echo "<BR><font color=#FF0000><b>Die Datei $filename ist zu breit!</b></font>";
unlink($file_name);
$fehler = TRUE;
}
elseif ($imagesize[1] > $height)
{
echo "<BR><font color=#FF0000><b>Die Datei $filename ist zu hoch!</b></font>";
unlink($file_name);
$fehler = TRUE;
}
else
{
echo "<BR><font color=#00FF00><b>Datei <font color=#0000FF>$filename</font> hochgeladen.</b></font>";
$fehler = FALSE;
}
}
else
{
echo "<BR><font color=#00FF00><b>Datei <font color=#0000FF>$filename</font> hochgeladen.</b></font>";
$fehler = FALSE;
}
}
else
{
echo "<BR><font color=#FF0000><b>Datei $file_name nicht hochgeladen!</b></font>";
$fehler = TRUE;
}
}
}
//Eingabe Fenster
if ($fehler || !$senden)
{
echo '<form action="'.$PHP_SELF.'" method="post" enctype="multipart/form-data">
<table>
<BR>
<b>Bitte Datei ausw?hlen:</b>';
echo '<BR>';
if ($sizeabfrage == "yes")
{
$size = $filesize/1024;
echo ("Maximale Gr??e: $size KB");
echo '<BR>';
}
if ($extending == "yes")
{
echo ("Erlaubte Dateitypen: ".$extend);
echo '<BR>';
}
if ($bulk == "yes")
{
echo ("Maximale H?he x Breite: ".$height."x".$width." Pixel");
echo '<BR>';
}
echo '<BR>';
echo '<tr><td>
<input type="file" size="30" name="file">
</td></tr>
</table>
<input type="Submit" name="senden" value="Hochladen">
</form>';
}
?> -
Nochwas:
Wenn du zwei dateien mit dem gleichen namen hochl?dst wird die erste ?berschrieben...
Edit:
Also da nun keine dateien mehr ?berschrieben werden sollen, auch wenn sie den gleichen namen haben...
<?php
$filesize = "102400";
$sizeabfrage = "yes";
$extend = "jpg|gif";
$extending = "yes";
$width = "100";
$height = "100";
$bulk = "no";
$path = "";
?>
<html>
<head>
<title>UPLOAD</title>
</head>
<body bgcolor=#ffffff text=#000000 link=#FF0000 alink=#FF0000 vlink=#FF0000>
<font face=arial size=2>
<?php
$fehler = FALSE;
if($senden)
{
$fehler = FALSE;
if ($file_name == "")
{
echo "<BR><font color=#FF0000><b>Es wurden keine Datein ausgew?hlt!</b></font>";
$fehler = TRUE;
}
if (!$fehler)
if ($sizeabfrage == "yes")
{
if ($file_size > $filesize)
{
echo "<BR><font color=#FF0000><b>Die Datei $file_name ist zu gro?!</b></font>";
$fehler = TRUE;
}
}
if (!$fehler)
if ($extending == "yes")
{
if (!eregi($extend, $file_name))
{
$typ = substr($file_name, -4, 4);
echo "<BR><font color=#FF0000><b>Der Dateityp $typ ist nicht erlaubt!</b></font>";
$fehler = TRUE;
}
}
if (!$fehler)
{
$filename = $file_name;
$typ = substr($file_name,-4);
$strlen = strlen($file_name);
$file_name = substr($file_name,0,$strlen-4);
$file_name = md5($file_name);
$file_name = $file_name.$typ;
$num = "0";
while(file_exists($file_name))
{
$file_name = $filename;
$typ = substr($file_name,-4);
$strlen = strlen($file_name);
$file_name = substr($file_name,0,$strlen-4);
$file_name = $filename.$num;
$file_name = md5($file_name);
$file_name = $file_name.$typ;
$num++;
}
if (copy($file,$path.$file_name))
{
if ($bulk == "yes")
{
$imagesize = getimagesize($file_name);
if ($imagesize[0] > $width)
{
echo "<BR><font color=#FF0000><b>Die Datei $filename ist zu breit!</b></font>";
unlink($file_name);
$fehler = TRUE;
}
elseif ($imagesize[1] > $height)
{
echo "<BR><font color=#FF0000><b>Die Datei $filename ist zu hoch!</b></font>";
unlink($file_name);
$fehler = TRUE;
}
else
{
echo "<BR><font color=#00FF00><b>Datei <font color=#0000FF>$filename</font> hochgeladen.</b></font>";
$fehler = FALSE;
}
}
else
{
echo "<BR><font color=#00FF00><b>Datei <font color=#0000FF>$filename</font> hochgeladen.</b></font>";
$fehler = FALSE;
}
}
else
{
echo "<BR><font color=#FF0000><b>Datei $file_name nicht hochgeladen!</b></font>";
$fehler = TRUE;
}
}
}
//Eingabe Fenster
if ($fehler || !$senden)
{
echo '<form action="'.$PHP_SELF.'" method="post" enctype="multipart/form-data">
<table>
<BR>
<b>Bitte Datei ausw?hlen:</b>';
echo '<BR>';
if ($sizeabfrage == "yes")
{
$size = $filesize/1024;
echo ("Maximale Gr??e: $size KB");
echo '<BR>';
}
if ($extending == "yes")
{
echo ("Erlaubte Dateitypen: ".$extend);
echo '<BR>';
}
if ($bulk == "yes")
{
echo ("Maximale H?he x Breite: ".$height."x".$width." Pixel");
echo '<BR>';
}
echo '<BR>';
echo '<tr><td>
<input type="file" size="30" name="file">
</td></tr>
</table>
<input type="Submit" name="senden" value="Hochladen">
</form>';
}
?> -
@theuntouchables
Dein Script ist wirklich gut, aber noch nicht ganz fehlerfrei. So kann man doch ganz einfach verhindern, dass vorhandene Datein ?berschrieben werden (file_exists()) und bei Dateiendungen, die mehr als drei Zeichen lang sind (z.B. .pspimage), werden nur die letzten vier angezeigt.
Ich hab das Script deshalb nochmal ein kleinwenig ?berarbeitet, ich hoffe du hast nichts dagegen, sonst musst du meinen Beitrag eben l?schen.
Hier mal "meine" Version:
<?php
$filesize = "102400";
$sizeabfrage = "yes";
$extend = "jpg|gif";
$extending = "yes";
$width = "100";
$height = "100";
$bulk = "yes";
$path = "";
?>
<html>
<head>
<title>UPLOAD</title>
</head>
<body bgcolor=#ffffff text=#000000 link=#FF0000 alink=#FF0000 vlink=#FF0000>
<font face=arial size=2>
<?php
$fehler = FALSE;
if(isset($_POST['senden']))
{
$fehler = FALSE;
if ($file_name == "")
{
echo "<BR><font color=#FF0000><b>Es wurden keine Datei ausgew?hlt!</b></font>";
$fehler = TRUE;
}
if(!$fehler)
if ($sizeabfrage == "yes")
{
if ($file_size > $filesize)
{
echo "<BR><font color=#FF0000><b>Die Datei $file_name ist zu gro?!</b></font>";
$fehler = TRUE;
}
}
if(!$fehler)
if ($extending == "yes")
{
$typ = substr(strrchr($file_name,"."),0);
if (!eregi($extend, $typ))
{
echo "<BR><font color=#FF0000><b>Der Dateityp $typ ist nicht erlaubt!</b></font>";
$fehler = TRUE;
}
}
if (!$fehler)
{
$filename = $file_name;
$typ = substr(strrchr($file_name,"."),0);
$strlen = strlen($file_name);
$file_name = substr($file_name,0,$strlen-$typ);
$file_name = md5($file_name);
$file_name = $file_name.$typ;
if(file_exists($file_name))
{
echo "<BR><font color=#FF0000><b>Datei <font color=#0000FF>$filename</font> existiert schon!</b></font>";
$fehler = TRUE;
}
if (!$fehler && copy($file,$path.$file_name))
{
if ($bulk == "yes")
{
$imagesize = getimagesize($file_name);
if ($imagesize[0] > $width)
{
echo "<BR><font color=#FF0000><b>Die Datei $filename ist zu breit!</b></font>";
unlink($file_name);
$fehler = TRUE;
}
elseif ($imagesize[1] > $height)
{
echo "<BR><font color=#FF0000><b>Die Datei $filename ist zu hoch!</b></font>";
unlink($file_name);
$fehler = TRUE;
}
else
{
echo "<BR><font color=#00FF00><b>Datei <font color=#0000FF>$filename</font> hochgeladen.</b></font>";
$fehler = FALSE;
}
}
else
{
echo "<BR><font color=#00FF00><b>Datei <font color=#0000FF>$filename</font> hochgeladen.</b></font>";
$fehler = FALSE;
}
}
else
{
echo "<BR><font color=#FF0000><b>Datei $filename nicht hochgeladen!</b></font>";
$fehler = TRUE;
}
}
}
//Eingabe Fenster
if ($fehler || !isset($_POST['senden']))
{
echo '<form action="'.$PHP_SELF.'" method="post" enctype="multipart/form-data">
<table>
<BR>
<b>Bitte Datei ausw?hlen:</b>';
echo '<BR>';
if ($sizeabfrage == "yes")
{
$size = $filesize/1024;
echo ("Maximale Gr??e: $size KB");
echo '<BR>';
}
if ($extending == "yes")
{
echo ("Erlaubte Dateitypen: ".$extend);
echo '<BR>';
}
if ($bulk == "yes")
{
echo ("Maximale H?he x Breite: ".$height."x".$width." Pixel");
echo '<BR>';
}
echo '<BR>';
echo '<tr><td>
<input type="file" size="30" name="file">
</td></tr>
</table>
<input type="Submit" name="senden" value="Hochladen">
</form>';
}
?>
Edit: Wie ich grade sehe hast du deins auch schon ge?ndert, solange ich gearbeitet habe... -
Also bei dem script sollten ja nur jpg und gif hochgeladen werden, also ist das mit mehr als 4 zeichen kein problem...
und dateien werden in der letzten version auch nichtmehr ?berschrieben...
Aber ich habe nix dagegen wenn mein script verbessert wird... -
Nee, das nur jpgs und gifs hochgeladen werden sollen ist schon klar, aber es gibt auch immer Leute, die trotzdem versuchen andere Dateitypen hochzuladen, die dann eben mehr Zeichen in der Endung haben, wie eben z.B. die pspimages. Somit w?rde dann bei der Meldung "Der Dateityp XXX ist nicht erlaubt" dastehen "Der Dateityp mage ist nicht erlaubt" und das sieht eben nicht wirklich toll aus, deshalb meine kleine Ver?nderung an der Stelle.
Allerdings gibt es ein Problem, was ich auch noch nicht l?sen konnte: Sobald in einer Datei irgendwo jpg oder gif steht (z.B. bild_jpg.doc), wird sie hochgeladen, auch wenn sie gar kein Bild ist.
Edit: So ich hab jetzt eine ganz gute L?sung gefunden: Wenn er jetzt die Datei ?berpr?ft, auf die zugelassenen Dateitypen, schaut er sich nicht mehr die ganze Datei an, sondern nur noch die Endung. Wenn die jetzt ein gif oder jpg enth?lt, l?d er sie zwar hoch, aber mit einer .docjpg-Datei kann man ja nichts weiter anfangen. Das aktualisierte Script ist oben. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage