9x bewertet

Dateidownload realisieren

von daser  |  25.01.2010 um 22:53 h
PHP Grundlagen
Typ: PHP Grundlagen
Stufe:Einfach
Ich denke, es ist sehr einfach gehalten aber jeder fängt mal klein an. ;)

Dieses Script ist perfekt verwendbar für Downloads die nur Möglich sind wenn, man sich über ein Login Script eingeloggt hat und die Session "username" gesetzt wurde.

Die file Variable wird wie folgt gefüllt.

Ein File z.B. Beispiel.zip liegt auf dem Server im Verzeichnis "downloads" (Absoluter Pfad), folglich ist file nur mit dem Dateinamen zu füllen, also file=Beispiel.zip.

Ich hoffe ich konnte für mein allererstes Tutorial soviel wie möglich erklären und vorallem Verständlich. Über Lob und Kritik würde ich mich freuen, zum Abschluss nocheinmal das Script mit Kommentaren. ;)




<?php
session_start
(); //Falls Login vorhanden

$dir '/www/htdocs/XXXXXXX/'// Absoluter Pfad zum Download
Verzeichnis
$type 
'image/png || application/zip'// Verschiedene Dateitypen
$error_no_login "Du musst eingeloggt sein!";


// Function Download zum generieren des Downloads
function Download($file$dir$type) {
    
header("Content-Type: $type");
    
header("Content-Disposition: attachment; filename=\"$file\"");
    
readfile($dir.$file);
}



if(isset(
$_SESSION['username'])) { // Wenn Session gesetzt, dann
ueberpruefen ob GET Variable file gesetzt wurde.
    if(!empty(
$_GET['file']) && !preg_match('=/='$_GET['file'])) {
        
// Wenn File existiert dann downloaden.
        
if(file_exists ($dir.$_GET['file'])) {
            
Download($_GET['file'], $dir$type);
        }
    }
}
else
{
    echo 
$error_no_login// Fehlermeldung wenn man nicht eingeloggt
ist.
}
?>




MfG

daser



4 Kommentare




Nekoji

In deinem Code sind leider ein paar überflüssige Backslashes. Wäre schön, wenn du diese noch entfernen könntest. :)
am 25.01.2010 um 22:55 Uhr


daser

Tutorial bearbeitet. ;)
am 25.01.2010 um 22:59 Uhr


Zeroine

Schönes Tutorial! Sicher brauchbar! ˆˆ

+6 P
am 26.01.2010 um 18:09 Uhr


SmaX

Ganz Ok, aber ein bisschen mehr Beschreibung wäre schon gut.. für die Anfänger..
Aber sonst gutes Tutorial..
am 26.01.2010 um 20:07 Uhr