DarkDragon193
Neues Mitglied
[Gelöst] mod_rewrite & Datei-Download
In http://www.html.de/php/36245-einen-datei-downloaden-aber-nur-mit-passwort.html wurde besprochen, wie man einen Dateidownload mit einem Passwort schützt. Mein Weg wäre mittels mod_rewrite. Noch immer funktioniert das ganze nicht und ich weiß einfach nicht, wie ich das Problem gelöst bekomme. Auch mermhaus's Codeschnippsel hat mir nur bedingt geholfen.
Die .htaccess sieht nun so aus:
Mit dem ursprünglichen "-" würde ja kein Rewrite stattfinden, ist also nicht Sinn der Sache.
Der php-Code sieht nun so aus:
Wieder gehe ich davon aus, dass die Anforderung beim Öffnen der Datei wieder umgeleitet wird. Wie schaffe ich das jetzt..?
Ratlos wie eh und je,
DarkDark1993
In http://www.html.de/php/36245-einen-datei-downloaden-aber-nur-mit-passwort.html wurde besprochen, wie man einen Dateidownload mit einem Passwort schützt. Mein Weg wäre mittels mod_rewrite. Noch immer funktioniert das ganze nicht und ich weiß einfach nicht, wie ich das Problem gelöst bekomme. Auch mermhaus's Codeschnippsel hat mir nur bedingt geholfen.
Die .htaccess sieht nun so aus:
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^file-download/.+$ index.php [NC,L]
RewriteRule ^.*$ index.php
Der php-Code sieht nun so aus:
PHP:
<?php
$baseUrl = "/Downloads/";
$path = parse_url( $_SERVER[ 'REQUEST_URI' ], PHP_URL_PATH );
$path = substr( $path, strlen( $baseUrl ) );
// If a file was selected
if( 1 === preg_match( '#file-download/.+$#', $path ) ) {
fileDownload( "$baseUrl$path" );
}
function fileDownload( $path )
{
// Die Funktion verbleibt für den späteren Gebrauch.
startDownload( $path );
}
function startDownload( $path ) {
echo $baseUrl;
echo "<a href='$path'>$baseUrl$path</a>";
if( $resFile = fopen( $path, "r" ) ) { // Fehler: Die Datei wird nicht gefunden.
}
}
// List all Downloadable content
function ListDownloads( ) {
echo "<ul>";
ListDownloadsRec( $baseUrl . "file-download/" );
echo "</ul>";
}
function ListDownloadsRec( $folder ) {
if( $resDir = opendir( $folder ) ) {
while( $content = readdir( $resDir ) ) {
if( $content === '.' or $content === '..' )
continue;
if( is_dir( $content ) )
ListDownloadsRec( "$folder/$content" );
else
echo "<li><a href='$folder$content' title='Download'>$content</a></li>";
}
closedir( $resDir );
}
}
?>
Ratlos wie eh und je,
DarkDark1993
Zuletzt bearbeitet: