Die Frage sagt alles .. Wie lassen Sie die Benutzer eine Datei von meiner Website herunterladen und nicht lassen sie sehen, aus welchem Link diese Datei stammt? Ich verstehe, dass es eine Notwendigkeit für etwas wie eine download.php, die als Gateway dienen, aber hinter dieser Phase, ich weiß nicht, was Skript nächste ... Wenn es Sie stört, den gesamten Code zu schreiben, ein paar Funktionen Namen, die ich verwenden sollte, wären wirklich praktisch!Ein PHP-Skript, mit dem Benutzer eine Datei von meiner Website herunterladen können, ohne den eigentlichen Datei-Link auf meiner Website anzuzeigen?
Antwort
Suchen Sie nach einer Möglichkeit, die herunterzuladende Datei anzugeben (z. B. eine GET-Variable, die mit der ID einer Zeile in einer Datenbank übereinstimmt, oder etwas in dieser Richtung). Stellen Sie sicher, dass es ein gültiger ist, weil Sie nicht möchten, dass Ihre Benutzer etwas von Ihrer Site herunterladen können. Verwenden Sie dann header
mit Content-Disposition
, um dem Browser mitzuteilen, dass die Datei heruntergeladen werden soll, und readfile
, um sie auszugeben.
Zum Beispiel:
<?php
$id = intval($_GET['id']);
$query = mysql_query('SELECT file_path FROM files WHERE id = ' . $id);
if (($row = mysql_fetch_row($query)) !== false)
{
header('Content-Disposition: attachment; filename=' . basename($row[0]));
readfile($row[0]);
}
exit;
?>
können Sie die header()
Funktion benutzen, die documented here
ist, würde ich am ersten Beispiel nach unten scrollen und auf der Suche vor. Es scheint genau das zu tun, was du willst.
Nur eine Anmerkung für Shedo Chung-Hee Surasi - Das zweite Beispiel zeigt Ihnen auch, wie Sie einen Dateinamen angeben können, der sich vom Namen der ursprünglichen Datei unterscheidet (wie Sie in Ihrer Frage erwähnt). – jerebear
readfile sollte das tun, was Sie wollen. Legen Sie die tatsächliche Datei außerhalb des Stammverzeichnisses des Webservers ab, und fordern Sie einige Anmeldeinformationen an, bevor Sie die Datei zurückgeben.
Sie können nicht verhindern, dass jemand eine Datei von einer URL herunterlädt, ohne dass dieser die URL kennt. Unter der HTTP-Spezifikation ist dies nicht möglich. Alles, was heruntergeladen wird, hat eine URL.
Sie können jedoch eine Download-URL verwenden, die nur einmal funktioniert oder bestimmte Informationen benötigt, die über die POST-Methode übergeben werden. Sie suchen nach einem Token in den GET- oder POST-Variablen und machen dieses Token ungültig, sobald es einmal verwendet wurde.
- 1. Der beste Weg, um Benutzer eine Datei von meiner Website herunterladen: http oder ftp
- 2. Suche auf meiner Website ohne MySQL
- 3. Header Probleme auf meiner Website
- 4. Integration meiner Website mit BlogEngine.Net
- 5. Paypal Zahlung Integration auf meiner Website
- 6. Besuch meiner Unterchilder den Benutzer automatisch aus der übergeordneten Website
- 7. JS Einbetten von Gfycat auf meiner Website
- 8. Embed Video auf meiner Website von Android
- 9. Erstellen einer persönlichen URL für alle Benutzer auf meiner Website
- 10. Sehr seltsame verbotene Fehler auf meiner Website
- 11. Verhindern von Werbenetzwerk-Popups auf meiner Website
- 12. meiner Website .com Redirect
- 13. Anmeldung mit Google Plus auf meiner Website
- 14. Gibt es eine JSONP-Bildsuch-API, mit der Benutzer nach Bildern auf meiner Website suchen können?
- 15. show ebay feedback auf meiner website
- 16. Bloengine.net als Unterverzeichnis meiner Website?
- 17. So ermitteln Sie den Ursprung des Traffics auf meiner Website
- 18. Droid-Browser verursacht Chaos auf meiner Website
- 19. Versuchen, ein Login auf meiner Website mit Soundcloud erstellen
- 20. Javascript Internationalisierung meiner Website (mehrsprachig)
- 21. Zeichen 'ς' nicht auf meiner Website angezeigt
- 22. : Ziel funktioniert nicht auf meiner Website
- 23. Facebook-Anwendung -> auf meiner Website?
- 24. Implementierung Autocomplete in meiner Website
- 25. Rechner von anderer Website zu meiner Website hinzufügen
- 26. JQuery .FadeIn funktioniert nicht auf meiner Website
- 27. Ändern meiner Website, um anonyme Kommentare zuzulassen
- 28. Facebook-Nutzer-ID meiner Website-Besucher ohne Authentifizierung erhalten
- 29. Wie mache ich ein Handy-freundliches Popup auf meiner Website?
- 30. Bild erscheint gezackt auf meiner Website
Ich erinnere mich an eine ähnliche Technik für den Export von E-Mail-Adressen in einer CSV-Datei. Der Content-Type-Header wurde von Safari für Mac ignoriert. – Keyo
Ist dieses Skript htaccess-proof? Ich habe eine htaccess-Regel, um den Zugriff auf echte URL zu verweigern, falls die Methode umgangen wurde. Hat "Deny of All" auch Auswirkungen auf dieses Skript? –
@ CodigosTutoriales, Regeln in .htaccess-Dateien wirken sich nur auf Webanfragen von einem Client aus. Sie tun nichts, um zu verhindern, dass Ihr Servercode Dateien auf dem Server liest. – zneak