PHP & htaccess -> beschränktes downloaden

gamerfunkie

Erfahrenes Mitglied
Hallo,
ich möchte auf meinem Webserver die Downloaddateien nicht direkt zugänglich machen, sondern einige Dateien nur für bestimmte Nutzer zulassen.
Da ich die Dateien per FTP hochladen möchte und sie nicht erst gross in einer Datenbank einlesen oder indizieren lassen will, ist mein Ansatz folgender:
Ich sperre per htaccess das Downloadverzeichnis. Wenn ein Nutzer eine Datei runterladen will, wird PHP die Datei an den Benutzer senden. Meine Frage ist jetzt wie ich das PHP-seitige realisiere.
Veilleicht kann mir jemang helfen.
Danke,
gamerfunkie
 
Folgende Funktion liest eine Datei stückchenweise ein und gibt sie aus. Wenn es sich um kleine Dateien handelt, oder du generell ohne Memory-Limit und ähnliches arbeitest, solltest du stattdessen auf [phpf]readfile[/phpf] zurückgreifen, da diese wesentlich schneller und einfacher arbeitet.

PHP:
<?php

// Maximale Speichernutzgrenze deaktivieren
ini_set( "memory_limit", "-1" );

// TimeOut Intervall merken
define( "RF_TIMEOUT", ini_get( "max_execution_time" ) );

/**
 * Gibt Datei stückchenweise aus.
 *
 * @param	String $filename, Pfad zur Datei
 * @return	boolean, true wenn erfolgreich, false sonst
 */
function readFileChunked( $filename ) {
	// Chunk Größe - Hier 1MB
	static $chunkSize = 1048576;

	// TimeOut in Sekunden
	static $timeout = RF_TIMEOUT;

	// Buffer initialisieren
	$buffer = null;

	if ( false === ( $fh = fopen( $filename, "rb" ) ) ) {
		// Dateizugriff schlug fehl
		return false;
	}

	while ( !feof( $fh ) ) {
		// Reinitialisiere TimeOut Intervall
		set_time_limit( $timeout );

		// So lange Dateiende nicht erreicht, gib chunkweise aus
		echo fread( $fh, $chunkSize );

		// Versuche die Buffer zu leeren, falls aktiv
		ob_flush();
		flush();
	}

	return fclose( $fh );
}
 
Zurück