Um Dateien hochzuladen, müssen wir den Typ „type=file“ des Formulars in HTML und sein enctype-Attribut verwenden. Das müssen wir alle nutzen. Natürlich müssen wir unter den PHP-Funktionsbibliotheken die FILE-Funktionsbibliothek, die String-Typ-Funktionsbibliothek, die Verzeichnis-Funktionsbibliothek und $_FILES[] verwenden.
Möglicherweise gibt es auf jeder Website viele Einschränkungen beim Hochladen von Dateien. Diese Einschränkungen können Dateityp, Dateigröße, Erweiterung und das Vorhandensein des Upload-Verzeichnisses, das Vorhandensein der Upload-Datei, die Beschreibbarkeit des Verzeichnisses sowie die Lesbarkeit und das Umbenennen von Dateien umfassen hochgeladene Dateien und wie Sie Dateien aus dem Cache in das gewünschte Verzeichnis kopieren.
Natürlich darf die Fehlervorverarbeitung nicht außer Acht gelassen werden! Wenn wir weiter darauf eingehen, können wir auch die Aufzeichnung von Ereignisprotokollen für Dateivorgänge aktivieren.
Im Folgenden implementieren wir diese Funktionen durch ein Programm:
Der erste ist unser voreingestellter Variablenwert, der Dateigröße, Dateierweiterungstyp, MIMI-Typ und ob die Schaltervariable
$MAX_SIZE = 2000000 gelöscht werden soll;
$FILE_MIMES = array('image/jpeg','image/jpg','image/gif'
,'image/png','application/msword');
$
FILE_EXTS = array('.zip','.jpg','.png',
'.gif');
Legen Sie Browser-Zugriffsvariablen und Verzeichnis-Zugriffsvariablen fest:
$site_name = $_SERVER['HTTP_HOST'];
$url_dir = http://.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]);
$url_this = http://.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF' ];
$upload_dir = files/;
$upload_url = $url_dir./files/;
$message =;
Erstellen Sie das Upload-Verzeichnis und ändern Sie die Berechtigungen entsprechend:
if (!is_dir(files)) {
if (!mkdir($upload_dir))
die (das Verzeichnis „upload_files“ existiert nicht und die Erstellung ist fehlgeschlagen);
if (!chmod($upload_dir,0755))
sterben (Änderungsberechtigung auf 755 fehlgeschlagen.);
}
Umgang mit Benutzeranfragen:
if ($_REQUEST[del] && $DELETABLE) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\n);
fclose($resource);
if (strpos($_REQUEST[del],/.)>0); //mögliches Hacken
else if (strpos($_REQUEST[del],files/) === false); //mögliches Hacken
else if (substr($_REQUEST[del],0,6)==files/) {
unlink($_REQUEST[del]);
print <script>window.location.href='$url_this?message=erfolgreich gelöscht'</script>;
}
}
else if ($_FILES['userfile']) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR]
.$_FILES['Benutzerdatei']['Name'].
.$_FILES['userfile']['type'].\n);
fclose($resource);
$file_type = $_FILES['userfile']['type'];
$file_name = $_FILES['userfile']['name'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,.)));
//Dateigrößenprüfung:
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$message = Die Dateigröße beträgt mehr als 2 MB.;
//Dateityp-/Erweiterungsprüfung
else if (!in_array($file_type, $FILE_MIMES)
&& !in_array($file_ext, $FILE_EXTS) )
$message = Entschuldigung, $file_name($file_type) darf nicht hochgeladen werden.;
anders
$message = do_upload($upload_dir, $upload_url);
print <script>window.location.href='$url_this?message=$message'</script>;
}
else if (!$_FILES['userfile']);
anders
$message = Ungültige Datei angegeben.;
Listen Sie die von uns hochgeladenen Dateien auf:
$handle=opendir($upload_dir);
$filelist = ;
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= <a href='$upload_dir$file'>.$file.</a>;
if ($DELETABLE)
$filelist .= <a href='?del=$upload_dir$file' title='delete'>x</a>;
$filelist .= <sub><small><small><font color=grey> .date(dm H:i, filemtime($upload_dir.$file))
.</font></small></small></sub>;
$filelist .=<br>;
}
}
function do_upload($upload_dir, $upload_url) {
$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];
$file_name = str_replace( \\,,$file_name );
$file_name = str_replace(',,$file_name);
$file_path = $upload_dir.$file_name;
//Dateinamenprüfung
if ( $file_name ==) {
$message = Ungültiger Dateiname angegeben;
$message zurückgeben;
}
$result = move_uploaded_file($temp_name, $file_path);
if (!chmod($file_path,0777))
$message = Änderung der Berechtigung auf 777 fehlgeschlagen.;
anders
$message = ($result)?$file_name erfolgreich hochgeladen:
Beim Hochladen einer Datei stimmt etwas nicht.;
$message zurückgeben;
}
?>
<center>
<font color=red><?=$_REQUEST[message]?></font>
<br>
<form name=upload id=upload ENCTYPE=multipart/form-data method=post>
Datei hochladen <Eingabetyp=Datei-ID=Benutzerdateiname=Benutzerdatei>
<Eingabetyp=Submit-Name=Upload-Wert=Upload>
</form>
<br><b>Meine Dateien</b>
<hr width=70%>
<?=$filelist?>
<hr width=70%>
<small><sup>Entwickelt von
<a style=text-decoration:none href=http://tech.citypost.ca>CityPost.ca</a>
</sup></small>
</Mitte>