1.7k Aufrufe
Gefragt in BS-Sonstige von
zum Thema:
Download durch Passwort schützen

hat mal jemand den Schnipsel/Beitrag von thomasn1975
geprüft?

5 Antworten

0 Punkte
Beantwortet von thomasn1975 Einsteiger_in (13 Punkte)
selbst ich weiß nicht, was du meinst
0 Punkte
Beantwortet von
Sorry, war etwas ungenau.

Es geht um diesen Beitrag:
https://supportnet.de/stat/2003/5/id135370.asp
Antwort 9

Gruß
ein Streuner
0 Punkte
Beantwortet von
www.supportnet.de/stat/2003/5/id135370.asp

hab ich geprüft. ist ok. was wolltest du noch wissen?
0 Punkte
Beantwortet von
Nun gut, bei mir läuft es nicht.
Wenn ich alleine die geschweiften Klammern zähle (5), kann es nicht funktionieren.

Gruß
ein Streuner
0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Hallo Webstreuner,

ich habe das bei mir folgendermaßen gelöst:

zunächst lege ich ein Array $Linkliste mit den zum Download angebotenen Dateien an.
Dann erzeuge ich für jeden Eintrag in der Linkliste einen Button mit dem Index des Eintrags als Name und dem Namen des Downloads als Value. Über class='linkbutton' habe ich den so formatiert, wie ich ihn optisch gerne haben will)


<?php
echo"<input type='submit' class='linkbutton' name='DLStart[$IX]' value='$File_Name'><br>";
?>



Wenn dann ein Button angeklickt wird, gehe ich mit dem Index in die Linkliste und sende die Datei. Damit gibt es keine Adresse des Downloads ind es kann entsprechend auch keine Adresse direkt eingetippt werden.

Hier der Code zur Ausgabe:


<?php
session_start();
$XX = array_keys($_POST['DLStart']); // Irgendein Link zum Download ausgewählt?
if (count($XX)!=0)
{
$ix = $XX[0];
$file = $_SESSION['Linkliste'][$ix]; // ja, Namen aus Liste holen
$dir = $_SESSION['Standardpfad'].'/';
$path_parts = pathinfo($file);
$extention = strtolower($path_parts['extension']);
$type = $_SESSION['mimetype'][$extention];
header("Content-Type: $type");
header("Content-Disposition:attachment; filename=\"$file\"");
readfile($dir.$file);
exit;
}
?>


Ich habe alle Files in einem eigenen Verzeichnis. Den Pfadnamen zum Zugriff auf die Datei habe ich unter der Sessionvariablen Standardpfad abgelegt.
Über die Funktion pathinfo() hole ich den Dateityp, mit dem ich den Mimetype der Datei aus einer Tabelle abfrage und als Header für den Download ausgebe. Die Tabelle mit den Mimetypes muss vorher angelegt werden. Ich habe da nur eine kleine Auswahl an Typen drin, weil ich nicht alle Dateitypen zum Download anbiete.
z.B. so:


$_SESSION['mimetype'] = array (
"pdf" => "application/pdf",
"doc" => "application/msword",
"gif" => "image/gif",
"jpg" => "image/jpeg",
"jpeg" => "image/jpeg",
);

Weitere Typenzuordnungen finden sich im Internet.


Wichtig ist, dass die Ausgabe (beginnend mit den beiden Header Zeilen) die erste Ausgabe eines Forms ist. Andernfalls wird dieser Header nicht akzeptiert und die Datei wird nicht ausgegeben.

Es sieht komplizierter aus, als es wirklich ist und hat den Vorteil, dass es wirklich nirgendwo eine Adresse gibt, die über manuelle Eingabe abgefragt werden könnte.

Gruß
computerschrat
...