<?php
###############################################################################
# A PHP File Upload Script with simple spam protection
# Uploadskript mit einfachem Spamschutz und Dateigrößenbegrenzung
###############################################################################
# Dieses Programm ist freie Software. Sie können es weitergeben und/oder 
# nach Ihren Anforderungen modifizieren
#
#################### Einstellungen ############################################
#
$ordner 'upload';        // Upload Ordner
$size_file '350000';        // Zulässige Datei größe, 350000 = 350KB
$zul_endungen = array('gif''pdf''png''jpg''jpeg''exe''zip''txt''log''rar''wmv''mpg''mpeg');
#
###############################################################################

echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n".
    
"<html>\n".
    
"<head>\n".
    
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n".
    
"<meta name=\"robots\" content=\"none\">\n".
    
"<title>Datei-Upload</title>\n".
    
"<LINK rel=StyleSheet type=\"text/css\" href=\"/style.css\">\n".
    
"</head>\n".
    
"<body>\n";

function 
hochladen($datei$ordner){
global 
$size_file;
global 
$zul_endungen;

  if(!
$_FILES[$datei]['tmp_name']){
    echo 
"Fehler: Bitte geben Sie eine Datei an!";
      echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Nochmal Versuchen</a></p>";
  return 
false;
  }
  
  if (
$_FILES[$datei]["size"] > $size_file) {
    echo 
"Fehler: Nur Dateien bis ".round($size_file/10241)." KB dürfen hochgeladen werden!";
    echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Nochmal Versuchen</a></p>";
    return 
false;
  }

  if(!@
ereg('^[ a-zA-Z0-9._-]*$'$_FILES[$datei]['name'])){
    echo 
"Fehler: Ungültiger Dateiname ".htmlspecialchars($_FILES[$datei]['name'])."!";
      echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Nochmal Versuchen</a></p>";
  return 
false;
  }
  
  if(!
in_array(strtolower(substr(strrchr($_FILES['Datei']['name'], "."), 1)), $zul_endungen)){
    echo 
"Fehler: Unzulässiges Dateiformat, zulässig sind nur";
    for(
$i 0$i count($zul_endungen); $i++){
      echo 
" ".$zul_endungen[$i];
      if(
$i != count($zul_endungen)-1) echo ",";
    }
    echo 
"!";
     echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Nochmal Versuchen</a></p>";
   return 
false;
  }

  if(@
file_exists('./'.$ordner.'/'.$_FILES[$datei]['name'])){
    echo 
"Fehler: Datei <a href=\"./".$ordner."/".$_FILES[$datei]['name']."\">".$_FILES[$datei]['name']."</a> existiert schon!";
      echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Andere Datei Hochladen</a></p>";
  return 
false;
  }
  
  if(!@
is_dir($ordner)){
    echo 
"Fehler: Ordner ".$ordner." existiert nicht!";
    return 
false;
  }
 
  if(@
move_uploaded_file($_FILES[$datei]['tmp_name'], './'.$ordner.'/'.$_FILES[$datei]['name'])){
    echo 
"Die Datei <a href=\"./".$ordner."/".$_FILES[$datei]['name']."\">".$_FILES[$datei]['name'].
    
"</a> (".round($_FILES[$datei]['size']/10242)."KB) wurde hochgeladen.";
      echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Noch eine Datei Hochladen</a></p>";
  return 
true;
  }
  
  switch(
$_FILES[$datei]['error']){
    case 
1:
      echo 
"Fehler: Die hochgeladene Datei überschreitet die in der php.ini festgelegten Größe von ".
    
ini_get('upload_max_filesize')."MB.";
       echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Nochmal Versuchen</a></p>";
    break;
    
    case 
2:
      echo 
"Fehler: Die hochgeladene Datei überschreitet die in dem HTML Formular angegebene maximale Dateigröße.";
        echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Nochmal Versuchen</a></p>";
   break;
    
    case 
3:
      echo 
"Fehler: Die Datei wurde nur teilweise hochgeladen.";
       echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Nochmal Versuchen</a></p>";
    break;
    
    case 
4:
      echo 
"Fehler: Es wurde keine Datei hochgeladen.";
        echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Nochmal Versuchen</a></p>";
   break;
    
    default:
      echo 
"Fehler: Die Datei konnte nicht hochgeladen werden.";
       echo 
"<p><a href=\"".$_SERVER['PHP_SELF']."\">Nochmal Versuchen</a></p>";
    break;
  }

  return 
false;

}

$spamtest $_POST['test'];

if(
$_POST['Send'] == 'Hochladen'){
   if (
$spamtest == "Spam") {
    echo 
"Hochladen nicht möglich, Spamtest nicht bestanden.";
    exit();
  } 
   else {
    
hochladen('Datei'$ordner);
    }
}

else {
echo 
" <table border='0' >\n".
    
"  <tr><td colspan=\"2\">Hier k&ouml;nnen Dateien hochgeladen werden:</td></tr>\n".
    
"  <form action=\"#\" enctype=\"multipart/form-data\" method=\"post\">\n".
    
"  <tr><td align=\"right\" colspan=\"2\"> <input name=\"Datei\" type=\"file\"></td></tr>\n".
    
"  <tr><td><select name=\"test\">   <option selected=\"selected\">Spam</option>\n".
    
"  <option>Kein Spam</option> </select></td>\n".
    
"  <td align=\"right\"><input name=\"Send\" type=\"submit\" value=\"Hochladen\">\n".
    
"  </td></tr></form><br>\n</table>\n";
}

echo 
"</body>\n </html>";

?>