Guten Tag,
habe mir mit etwas google Suche ein PHP Upload Script zusammengebastelt, welches vorher durch eine Nutzerabfrage durch eine MYSQL Datenbank gekoppelt ist. Der Login etc. funktioniert tadellos. Leider funktioniert der Upload aber nicht. Es wird weder eine Fehlermeldung angezeigt, noch wird eine Datei hochgeladen.
Das ganze kann mit Login: admin, Passwort: admin unter http://www.bk-eng.de gerne getestet werden. Die upload.php enthält folgenden Code:
Vielleicht weiß ja hier jemand Rat.
Vielen Dank im Voraus!
Gruß Alex
habe mir mit etwas google Suche ein PHP Upload Script zusammengebastelt, welches vorher durch eine Nutzerabfrage durch eine MYSQL Datenbank gekoppelt ist. Der Login etc. funktioniert tadellos. Leider funktioniert der Upload aber nicht. Es wird weder eine Fehlermeldung angezeigt, noch wird eine Datei hochgeladen.
Das ganze kann mit Login: admin, Passwort: admin unter http://www.bk-eng.de gerne getestet werden. Die upload.php enthält folgenden Code:
PHP-Code:
<?php
include ("checkuser.php");
//>>>>>>>>>>>>>>>>>>>> KONFIGURATION <<<<<<<<<<<<<<<<<<<<<<<<
//Maximale Dateigröße
$max_filesize = 400000000; //4000 KB = 4MB)
//Maximale Verzeichnislänge
$max_dirlen = 50; //50 Zeichen
//Arbeitsverzeichnis (Wird beim ersten Aufrufen der Datei erstellt)
$workingdir = "upload";
//Eigener Dateiname
$filename = "upload.php";
/*Dateitypen
Einfach die Dateiendung, Doppelpunkt und den PHP Dateityp eintragen.
Will man den PHP Dateitypen herausfinden, einfach mal eine Datei hochladen, dann wird
dieser angezeigt, auch wenn der Dateityp nicht zulässig war. Die Liste kann beliebig fortgeführt werden*/
$filetypes=array("*.html:text/html","*.jpg:image/jpeg","*.jpeg:image/pjpe","*.mp3:audio/mpeg","*.gif:image/gif","*.pdf:text/pdf");
//>>>>>>>>>>>>>>>>>>> KONFIGURATION ENDE <<<<<<<<<<<<<<<<<<<<<<<<
if (!file_exists($workingdir)) //Wenn das Arbeitsverzeichnis nicht da ist, dann anlegen.
{
mkdir($workingdir,0755);
}
?>
<HTML>
<HEAD>
<TITLE>Becker & Klaffka Fileserver</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<SCRIPT language=JavaScript>
<!--
function sicher(){
//Diese Funktion ist für die Formulare, aber eigentlich überflüssig.
var antwort;
antwort=confirm("Bist Du sicher, dass Du alle Felder wieder löschen willst?");
if (antwort==true){
return antwort;
}
else{
return antwort;
}
}
//-->
</script>
<style>
<!--
body {
SCROLLBAR-FACE-COLOR: #666666; SCROLLBAR-HIGHLIGHT-COLOR: #333333; SCROLLBAR-SHADOW-COLOR: #333333; SCROLLBAR-3DLIGHT-COLOR: #344556; SCROLLBAR-ARROW-COLOR: #fefefe; SCROLLBAR-TRACK-COLOR: #000011; SCROLLBAR-DARKSHADOW-COLOR: #333333;
BACKGROUND-COLOR: #EEEEEE;
}
input, textarea, select {
border: 1px solid #333333;
background: #FFFFFF;
font: 11px Tahoma, Arial, Helvetica, sans-serif;
color: #333333;
}
td {
font: 14px Tahoma, Arial, Helvetica, sans-serif;
color: #000000;
}
A:link {
COLOR: #666666; TEXT-DECORATION: none
}
A:visited {
COLOR: #666666; TEXT-DECORATION: none
}
A:active {
COLOR: #ff9933; TEXT-DECORATION: none
}
A:hover {
COLOR: white; BACKGROUND-COLOR: #000000; TEXT-DECORATION: none
}
//-->
</style>
</HEAD>
<BODY>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 width="800" align="center" bordercolor="#333333">
<TR>
<td colspan="2">
<div align="center"><font size="6">Datei Upload</font</div><br><br>
</td>
<tr>
<td valign="top" align="left" width="380" style="border-right:1px #000000 dashed;border-top:1px #000000 dashed;
border-bottom:1px #000000 dashed;">
<br>
<?php
// Dateiupload
//----------------------------------------------------------------------------------------------------------------------
if ($flag==1) //Wenn das Formular abgeschickt wurde.
{
//Datei checken
//--------------------------------------------------------
//Checken ob überhaupt eine Datei ausgewählt wurde
$i=1;
if(!$datei)
{
$fehler.="Keine Datei gewählt!<br>";
}
else
{
//Und die Größe der Datei
if($datei_size > $max_filesize)
{
$sizer = $datei_size;
$sizer = $sizer / 1000;
$sizer = number_format($sizer,2,",",".");
$fehler.="Datei ist zu groß! $sizer KB<br>";
}
else
{
$i=0;
$loop = $filetypes;
while(list($k,$v)=each($loop)) // Alle Dateitypen checken
{
$check=explode(":",$v); // Dateinamen checken (Bei ":" erfolgt Trennung)
if ($datei_type == $check[1] && $datei)
{
$i = $i+1;
}
}
}
}
if ($i==0) {$fehler.="Falscher Dateityp! " .$datei_type. "<br>";}
//Das Ganze in die Variable $fehler
//--------------------------------------------------------
if($fehler) //Bei Fehlern, Meldung ausgeben
{
$meldung="<h3><font color='#880000'>" .$fehler. "</font></h3>"; //Die Fehlermeldung etwas verschönern ;-)
unset($flag); //Variable $flag wieder zurück setzten
echo $meldung; //Fehlermeldung ausgeben
}
else
{
//Keine Fehler? Dann Datei hochladen
//--------------------------------------------------------------------
$writeurl = "";
if ($uvz2 != "")
{
$writeurl = "/".$uvz2;
}
$uvz = "$workingdir$writeurl"; //Verzeichnisname workingdir wird am Anfang deklariert.
//Die Verzeichnisnamen kommen aus dem Formular weiter unten
if (!file_exists($uvz)) //Wenn nicht vorhanden, dann anlegen
{
mkdir($uvz,0755); //mit den entsprechenden Rechten versehen
}
$name=$uvz."/".$datei_name;
copy($datei, $name); //Kopieren der Datei auf den Server
//Anzeigen der Dateigröße
$sizer = $datei_size;
$ending = "Byte";
if ($sizer > 1000)
{
//Berechnung der Dateigröße in KB
$sizer = $sizer / 1000;
$sizer = number_format($sizer,2,",",".");
$ending = "KB";
}
// Ausgabe der Informationen
echo "<font size='3'>Information:</font><br>";
echo "Dateityp: $datei_type <br>";
echo "Größe: $sizer $ending<br>";
echo "Dateiname: $datei_name<br>";
echo "<font color='#FF0000'>Datei wurde erfolgreich hochgeladen!</font><br>";
echo "<br><a href='$_SERVER[PHP_SELF]?$_SERVER[QUERY_STRING]'> <<< Zurück</a> (Nach 10 Sekunden automatisch.)<br><br>";
echo "<script language='JavaScript'>
var gWindowCloseWait = 10;
function zurueck()
{
window.location = (\"$_SERVER[PHP_SELF]?$_SERVER[QUERY_STRING]\");
}
window.setTimeout(\"zurueck()\", gWindowCloseWait*1000);
</script>";
}
//--------------------------------------------------------------------
}
//----------------------------------------------------------------------------------------------------------------------
// Verzeichnis anlegen
//----------------------------------------------------------------------------------------------------------------------
if ($flag2==1)
{
//Erst mal ein paar Prüfungen
if(!$verzname)
{
$fehler.="Kein Verzeichnis eingegeben!<br>"; //Wurde ein Verzeichnis eingegeben?
}
else
{
if(!eregi("^[a-zA-Z0-9]+$",$verzname))
{
$fehler.="Ungültige Zeichen im Verzeichnisnamen<br>
(Nur a-z und 0-9 erlaubt)<br>"; //Zeichen des anzulegenden Verzeichnisses prüfen
}
else
{
if (strlen($verzname) > $max_dirlen)
{
$fehler.="Verzeichnisname ist zu lang<br>(Max. $max_dirlen Zeichen)";
}
}
}
/*Doppelte Verzeichnisnamen checken. Fals nicht gewünscht, einfach diesen Bereich auskommentieren.
Bitte nur bei Unixsystemen, denn Windows erlaubt Doppelte Verzeichnisnamen nicht
und dann erscheinen unschöne Fehlermeldungen :-(
>>>>>>>>>>>>>>>>>>>>> Doppelte Verzeichnisnamen Anfang <<<<<<<<<<<<<<<<<<<<<<<<< */
$writeurl = "";
if ($uvz2)
{
$writeurl = "/".$uvz2;
}
$dir = "$workingdir$writeurl"; //Zusammensetzen des richtigen Pfades
$dir = strtolower($dir);
$verzname = strtolower($verzname);
$dh=opendir($dir);
if ($dh)
{
$i=1;
while ($filename=readdir($dh)) //Loopen durch die bereits angelegten Verzeichnisse
{
if (is_dir($dir."/".$filename) && $filename != "." && $filename != "..")
//Die Punkte ausschliessen falls Unixsystem
{
if ($verzname == $filename) {$fehler.="Verzeichnis ist schon vorhanden!<br>";}
//Doppelte Verzeichnisnamen ausschliessen, da es sonst zu Fehlermeldungen auf
//Windows-Webservern kommt
}
}
}
closedir($dh);
//>>>>>>>>>>>>>>>>>>>>> Doppelte Verzeichnisnamen Ende <<<<<<<<<<<<<<<<<<<<<<<<<
if($fehler)
{
$meldung="<h3><font color='#880000'>" .$fehler. "</font></h3>"; //Fehlermeldung verschönern ;-)
unset($flag2); //Variable $flag2 wieder zurück setzten
echo $meldung; //Fehlermeldug ausgeben
}
else //Wenn es keine Fehler gab
{
mkdir("$workingdir/".$verzname); //Dann kann das Verzeichnis angelegt werden
echo "<font size='4'>Verzeichnis '$verzname' wurde erstellt!</font>";
}
}
//----------------------------------------------------------------------------------------------------------------------
// Hier beginnt die eigentliche Seite
//----------------------------------------------------------------------------------------------------------------------
if(!$flag) //Die Variablen $flag und $flag2 bekommen erst mit dem Abschicken des einen oder des anderen Formulares einen Wert.
//Wird das Formular für den Dateiupload abgeschickt ist es $flag bei den Verzeichnissen ist es $flag2.. wer hätte das gedacht.
{
//Nun kommt HTML mit einem ganz kleinen Teil PHP
?>
<form action='<? echo $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; ?>' method='post' enctype='multipart/form-data' name='form1' id="form1" onReset="return sicher()">
<!-- Die Formaction besteht aus der aktuellen Datei und einer Variable hinter dem "?" Hier wird ein mögliches Unterverzeichnis
angegeben in dem wir uns vielleicht gerade befinden. Denn dort soll die Datei ja auch rein. //-->
<input type="hidden" name="flag" id="flag" value=1><!-- Hier kommt das versteckte Feld. Es bekommt den Wert 1 und wird in PHP
dann als variable gesehen //-->
<table border="1" width="340" cellpadding="1" cellspacing="1" bordercolor="#ffffff" style="border-collapse: collapse">
<tr>
<td colspan="2"><b>Datei wählen und hochladen</b><br>
<font size="1">Mögliche Dateitypen:<br>
<?php
while(list($k,$v)=each($filetypes)) // Alle Dateitypen checken
{
$check=explode(":",$v);
echo $check[0]. " ";
}
echo "<br>";
?>
Maximal <?php echo $max_filesize/1000; ?> KB pro Datei.</font></td>
</tr>
<tr>
<td width="54">Datei:</td>
<td>
<input name="datei" type="file" id="datei" size="30" value='<?php echo $datei; ?>'>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Hochladen"> <input type="reset" name="Reset" value="Zurücksetzen">
</td>
</tr>
</table>
</form>
<?php
//Nun das formular für die Verzeichnisse. Das erscheint nur, wenn man in dem Hauptverzeichnis ist...
//Sonst könnte man ja unendlich viele Verzeichnisse anlegen.
if ($uvz2 == "")
{
?>
<form action='<? echo $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; ?>' method='post' enctype='multipart/form-data' name='form2' id="form2" onReset="return sicher()">
<input type="hidden" name="flag2" id="flag2" value=1>
<table border="1" cellpadding="1" width="340" cellspacing="1" bordercolor="#ffffff" style="border-collapse: collapse">
<tr>
<td colspan="2"><b>Verzeichnis anlegen</b></td>
</tr>
<tr>
<td width="54">Name:</td>
<td>
<input name="verzname" type="text" id="verzname" size="30" value="">
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Anlegen"> <input type="reset" name="Reset" value="Zurücksetzen">
</td>
</tr>
</table>
</form>
<?php
}
}
//Nun erst mal eine JavaScript Funktion welche noch zum Löschen benötigt wird.
echo " <script language='JavaScript'>
function del(url, datei) {
if( confirm(\"Soll die Datei '\" + datei + \"' wirklich gelöscht werden?\") ) window.location = url;
}
</script>";
$writeurl = "";
//Wo sind wir? Haupt oder Unterverzeichnis?
if ($uvz2)
{
$writeurl = "/".$uvz2;
echo "<a href='$PHP_SELF'><< Zurück zum Hauptverzeichnis</a><br>";
}
$uvz="$workingdir$writeurl"; // workingdir wird am Anfang der Datei deklariert.
if (!file_exists($uvz)) //Wenn nicht vorhanden, dann anlegen
{
mkdir($uvz,0755);
}
if ($loesch=="datei") //Wenn Datei gelöscht werden soll.... Weiter unten.
{
$name = urldecode($name);
$pfad = $uvz."/".$name;
@unlink($pfad); //Pfad zusammenbasteln ;-)
if ($uvz2 != "") //Waren wir in einem Unterverzeichnis?
{
echo " <script language='JavaScript'>
window.location = ('$filename?uvz2=$uvz2') </script>"; //Dann wieder zurück in das Unterverzeichnis
}
else
{
echo " <script language='JavaScript'>
window.location = ('$filename') </script>"; //Und wieder dahin zurück wo wir waren
}
}
echo "<font size='3'><b>Aktuelles Verzeichnis: <b><a href='$uvz' target='_blank'>/$uvz</a></font>
</td>
<td style='border-top:1px #000000 dashed;border-bottom:1px #000000 dashed;' valign='top'>
<br>
<p align='center'><b>Hochgeladene Dateien:</b><br><hr width='400' color='#000000'></p></font><ol>";
//Anzeigen des Verzeichnisses und es folgt das Anzeigen der hochgeladenen Dateien
$i = 1;
$verzeichnis = opendir($uvz);
while ($file = readdir($verzeichnis)) //Verzeichnis auslesen
{
if (is_file($uvz."/".$file))
{
echo "<li><a href='$uvz/$file' target='_blank' onMouseOver=\"window.status='Dateiname: $file'; return true\" onMouseOut=\"window.status=''; return true\">$file</a> - - "; //Datei(en) anzeigen
$file = urlencode($file);
echo " <a href=\"javascript:del('$PHP_SELF?loesch=datei&name=$file&uvz2=$uvz2','".urldecode($file)."')\" onMouseOver=\"window.status='Löschen: " .urldecode($file). "'; return true\" onMouseOut=\"window.status=''; return true\"> <font color='#880000'>Löschen</font></a><hr></li>";
//Möglichkeit zum Löschen der Datei. Die JavaScriptfunktion del ist hierbei eine Abfrage ob wirklich gelöscht werden soll.
//Klickt man ja, wird die URL übergeben mit der Variable $loesch=datei Dieses wurde weiter oben ja bereits abgefragt.
$i++;
}
}
if ($i == 1)
{
echo "Keine Dateien vorhanden";
}
closedir($verzeichnis);
echo "</ol>";
if ($uvz2 == "")
{
//Das Gleiche für die Verzeichnisse nochmal
if ($loesch=="verzeichnis")
{
shell_exec(rmdir($name));
echo " <script language='JavaScript'>
window.location = ('$filename') </script>";
}
echo " <script language='JavaScript'>
function del2(url, verzeichnis) {
if( confirm(\"Soll Das Verzeichnis '\" + verzeichnis + \"' wirklich gelöscht werden?\") ) window.location = url;
}
</script>";
echo "<p align='center'><b>Angelegte Verzeichnisse:</b><br><hr width='400' color='#000000'></p><ol>";
//Auslesen der Verzeichnisse
$dirlist=array();
$writeurl = "";
if ($uvz2)
{
$writeurl = "/".$uvz2;
}
$dir = "$workingdir$writeurl";
$dh=opendir($dir);
if ($dh)
{
$i=1;
while ($filename=readdir($dh))
{
if (is_dir($dir."/".$filename) && $filename != "." && $filename != "..") //Die Punkte ausschliessen falls Unixsystem
{
echo "<li><a href='$PHP_SELF?uvz2=$filename' onMouseOver=\"window.status='Verzeichnis: ../$dir/$filename'; return true\" onMouseOut=\"window.status=''; return true\">../".$dir."/".$filename."</a> - - ";
echo " <a href=\"javascript:del2('$PHP_SELF?loesch=verzeichnis&name=".$dir."/".$filename."','$filename')\" onMouseOver=\"window.status='Löschen ../$dir/$filename'; return true\" onMouseOut=\"window.status=''; return true\"> <font color='#880000'>Löschen (Nur wenn leer.)</font></a><hr></li>";
//Ausgabe der Verzeichnisliste, wieder mit Möglichkeit zum Löschen.
$i++;
}
}
if ($i == 1)
{
echo "Keine Verzeichnisse vorhanden";
}
closedir($dh);
}
else
{
//Fehlermeldung
echo "Ein FEHLER ist aufgetreten und keiner weiß warum.... :-D";
}
echo "</ol>";
}
//----------------------------------------------------------------------------------------------------------------------
echo "</TD>
</TR>
</TABLE><br>
<table border='0' align='center'>
<tr><td valign='bottom' align='center'>
<a href='logout.php'>Logout " .$_SESSION["user_vorname"]. " " .$_SESSION["user_nachname"]. "</a><br>
Your IP:" .$_SERVER['REMOTE_ADDR']. "</td></tr>
</table>";
?>
</BODY>
</HTML>
Vielen Dank im Voraus!
Gruß Alex
Kommentar