Ich möchte Dateien vor dem Download geschützt werden, wenn der Link bekannt ist. Ich habe eine Datei in meinem Stammordner und erstellt eine .htaccess-Datei mit folgendem:Wie erlaube ich PHP-Dateizugriff auf verbotene Dateien
<Files ~ "\.xlsx$">
Order allow,deny
Deny from all
</Files>
Wenn die Verbindung (www.domain.com/excel.xlsx) geladen wird, erzeugt der Browser einen 403 Forbidden Fehler. Das ist richtig.
Ich habe diese PHP-Datei in einem Ordner in der Wurzel gelegt:
<?php
echo '<a href="../Excel.xlsx" download>Click to download</a>';
?>
Aber wenn ich zum Download klicken, bin ich ein 403-Fehler gegeben wieder.
Wie kann ich PHP erlauben, auf diese Datei zuzugreifen und sie mit dem folgenden Code herunterzuladen? Vielen Dank!
Sie müssten wahrscheinlich eine Download-Proxy-Datei wie 'download.php? File = thefilename.xlsx' erstellen. In dieser Datei lesen Sie dann den Dateiinhalt mit PHP und geben ihn an den Browser zurück. Dann können Sie auch prüfen, ob der Benutzer angemeldet ist, oder ein CSRF-Token hinzufügen, um zu bestätigen, dass die Anfrage von Ihrer Site kommt. (Suchen Sie einfach nach "force download php" und Sie erhalten viele Beispiele). –
Sie verwenden ein "Routing-Skript". Erstellen Sie einen Link wie 'router.php? File = Excel.xlsx', mit dem Sie php-Sitzungsinformationen verwenden können, um zu entscheiden, ob Sie den Dateiinhalt weitergeben möchten oder nicht. Sie müssen in diesem Fall auch die richtigen Header senden. Besser noch ist es, eine Referenz wie 'route/Excel.xlsx' zu erstellen und das interne HTTP-Server-Rewriting zu verwenden, um solche eingehenden Anfragen an Ihr Routing-Skript' route.php' umzuleiten. – arkascha