[php]
error_reporting(E_ALL);
// Funktionen definieren
// -----------------------------------------------
function checkUpload($myFILE, $file_extensions, $mime_types, $maxsize)
{
$errors = array();
// Uploadfehler prüfen
switch ($myFILE['error']){
case 1: $errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als ".ini_get('upload_max_filesize')." ist.";
break;
case 2: $errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als ".$maxsize/(1024*1024)." MB ist.";
break;
case 3: $errors[] = "Die Datei wurde nur teilweise hochgeladen.";
break;
case 4: $errors[] = "Es wurde keine Datei ausgewählt.";
return $errors;
break;
default : break;
}
// MIME-Type prüfen
if(count($mime_types)!=0 AND !in_array(strtolower($myFILE['type']), $mime_types)){
$fehler = "Falscher MIME-Type (".$myFILE['type'].").
".
"Erlaubte Typen sind:
\n";
foreach($mime_types as $type)
$fehler .= " - ".$type."\n
";
$errors[] = $fehler;
}
// Dateiendung prüfen
if($myFILE['name']=='' OR (count($file_extensions)!=0 AND !in_array(strtolower(getExtension($myFILE['name'])), $file_extensions))){
$fehler = "Falsche Dateiendung (".getExtension($myFILE['name']).").
".
"Erlaubte Endungen sind:
\n";
foreach($file_extensions as $extension)
$fehler .= " - ".$extension."\n
";
$errors[] = $fehler;
}
// Dateigröße prüfen
if($myFILE['size'] > $maxsize){
$errors[] = "Datei zu groß (".sprintf('%.2f',$myFILE['size']/(1024*1024))." MB).
".
"Erlaubte Größe: ".$maxsize/(1024*1024)." MB\n";
}
return $errors;
}
// gibt die Dateiendung einer Datei zurück
function getExtension ($filename)
{
if(strrpos($filename, '.'))
return substr($filename, strrpos($filename, '.')+1);
return false;
}
// erzeugt einen Zufallswert
function getRandomValue()
{
return substr(md5(rand(1, 9999)),0,8).substr(time(),-6);
}
// erzeugt einen neuen Dateinamen aus Zufallswert und
// Dateiendung
function renameFile ($filename)
{
return getRandomValue().".".getExtension($filename);
}
// Werte zur Dateiprüfung initialisieren
// -----------------------------------------------
$maxsize = 2*1024*1024;
$file_extensions = array('jpg', 'jpeg', 'jpe', 'gif', 'png');
$mime_types = array('image/pjpeg', 'image/jpeg', 'image/gif', 'image/png', 'image/x-png');
// Upload-Ordner definieren
// -----------------------------------------------
$ordner = "uploads/";
// Beginn des Skriptes
// -----------------------------------------------
echo "\n";
echo "\n";
echo "
echo "
echo "\n";
echo "\n";
// Falls der Benutzer auf "Upload" gedrückt hat,
// wird die Datei überprüft
if(isset($_POST['submit']) AND $_POST['submit']=='Upload'){
// Fehlerarray erzeugen
$errors = array();
$myFILE = $_FILES['Datei'];
$errors = checkUpload($myFILE, $file_extensions, $mime_types, $maxsize);
if(count($errors)){
echo "
\n".
"Die Datei konnte nicht gespeichert werden.
\n";
foreach($errors as $error)
echo $error."
\n";
echo "Zurück zum Upload-Formular\n".
"
\n";
}
else {
do {
$neuer_name = renameFile($myFILE['name']);
} while(file_exists($ordner.$neuer_name));
if(@move_uploaded_file($myFILE['tmp_name'], $ordner.$neuer_name)){
echo "
\n".
"Die Datei wurde erfolgreich gespeichert.
\n".
"Zurück zum Upload-Formular\n".
"
\n";
}
else{
echo "
\n".
"Die Datei konnte nicht gespeichert werden.
\n".
"Es ist ein Upload-Fehler aufgetreten.
\n".
"Bitte versuchen Sie es später erneut.
\n".
"
\n".
"Sollte der Upload noch immer nicht funktionieren, informieren Sie uns bitte per Email.
\n".
"Zurück zum Upload-Formular\n".
"
\n";
}
}
}
// Beim ersten Aufruf des Skriptes wird das
// Upload-Formular angezeigt
else{
echo "
Laden Sie ein Bild hoch!
\n";
echo "
Erlaubte Dateiendungen sind:
\n";
foreach($file_extensions as $extension)
echo " - ".$extension."\n
";
echo "
Erlaubte Dateigröße:
\n";
echo " - maximal ".($maxsize/(1024*1024))." MB\n
";
echo "
\n";
}
echo "\n";
echo "\n";
[/php]