Datei downloaden
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abhilfe
ansatz
attachment
beitrag
client
datei
dateiname
disposition
dynamische adressen
entsprechende datei
extra
folgende quelltext
gleiche prinzip
hchstens
kreativitt
lsung
nummer
schlssel
sofer
sptesten
-
hi,
wie kann man dateien über PHP downloaden ohne das der User mitbekommt wo die Datei wirklich liegt?
Danke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
naja, da gibts die variante wie sie oft genutzt wird... du schreibst die dl´s in ne datenbank und rufst dann den dl link per id ab oder so ähnlich... das der link dann so im etwa aussieht...
http://www.deineseite.de/download.php?id=2
indem du dann das öffnen dieser datei im script versuchst, meckert der browser ob es geöffnet werden soll odeer gespeichert (glaub ich jetz zumindest)
allerdings bekommt man dadurch als etwas erfahrener immernoch den urspungsort der datei raus...
was anderes is mir jetz nich auf dei schnelle eingefallen
mfg -
und wie geht das mit modewriten?
-
Es gibt ja auch sogenannte Download Scripts, die du dir dann installierst ... die haben 'n clickcounter uvm. und sehen auch noch ziemlich gut aus :)
Einfach googlen! -
Der folgende Quelltext wird dir helfen. Beachte, dass davor und danach keine Ausgabe (echo,print,...) erfolgen sollte.
Über eine id wird eine Zahl übergeben. Aus einem Array, in dem alle Dateien, die downloadbar sind, wird dann die entsprechende Datei ausgewählt.
Bisher wird bei dem Quelltext der Original-Dateiname ausgeliefert (siehe Zeile 12). Ich würde dir empfehlen diese mit
zu ersetzen. Die Datei trägt dann den Namen "Datei" + Nummer + Dateiendung.<?php header('Content-Disposition: attachment; filename=datei'.$id.'.'.$ft); ?>
<?php $id=$_GET['id']; $array = array('datei1.php','datei2.php','bild3.gif','datei4.html'); $file=$array[$id]; $ft = substr(strtolower(strrchr($file, '.')),1); $conttype = 'application/'; if(in_array($ft,array('jpg','jpeg','png','gif'))){$conttype='image/';} header('Content-type: '.$conttype.$ft); header('Content-Disposition: attachment; filename='.basename($file)); readfile($file); ?>
-
Mit jedem Filetransfair wird der Ort Bekannt unter dem die Datei liegt, spätestens wenn die Übertragung startet.
Als Abhilfe würde mir höchstens ein Skript einfallen, dass die Dateien vorübergehend in einen extra ordner kopiert, aber das geht auch nur wenn der Safemode deaktiviert ist.
Ansonsten, wenns keine Allzugroßen Dateien sind kannst du sie ja als Mail Verschicken, sollte über PHP ohne weiteres möglich sein.
Du kannst die Dateien natürlich auch in einer Datenbank ablegen (gibt ein extra Binärformat für sowas) und holst sie Dynamisch von dort. Allerdings geht diese Lösung ziemlich auf die Serverlast, in sofern kann es eben sein, dass du dir einen Anpfiff vom Betreiber einfängst.
Obwohl stimmt, muss mich korrigieren der Ansatz von tuvalu funktioniert
hatte das readfile übersehen.
Beitrag geaendert: 23.3.2007 15:18:30 von keiax -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage