Dateien auf dem Rechner speichern?!

PHP-Fan

Erfahrenes Mitglied
Hallo,

ich habe derzeit ein Problem. Wenn man bei mir einen Download anklickt, welche die endungen .torrent oder .txt haben, werden manche im eigenen Fenster geöffnet. Es soll aber so ein, dass alle Dateien extern auf dem Rechner gespeichert werden und nicht das sich die Dateien im eigenen Fenster öffnet. Dann hat man nämlich ein blöden Buchstabensalat.

Kann man das per PHP/HTML beheben oder liegt das am Server/Einstellungen?
 
PHP:
<?php
if(is_readable($_GET['file']))
{
	$file = $_GET['file'];
	$filename = basename($file);
	$size = filesize($file);
	header('Content-Type: application/octet-stream');
	header("Content-Disposition: attachment; filename=$filename");
	header("Content-Length: $size");
	header('Expires: 0');
	header('Cache-Control: no-cache, no-store, must-revalidate');
	header('Pragma: no-cache');  
	readfile($file);
}
else
{
	trigger_error('NO_FILE', E_USER_WARNING);
}
?>
Du verlinkst einfach auf die php-Datei (z.B. file.php), wobei du als GET-Parameter den Dateinamen angibst. Falls die Datei nicht im gleichen Verzeichnis liegt, schreibst du den Pfad dazu ;)
z.B: http://deineurl.tld/file.php?file=dokumente/beschreibung.doc oder so...
 
Hallo,

in der Form würde ich dieses Skript aber auf keinen Fall auf einen Server stellen. Man beachte nur mal http://deineurl.tld/file.php?file=datei_mit_allen_passwörtern.php

Grüße,
Matthias
 
Das Skript soll ihm ja auch nur veranschaulichen, wie es geht... Um die Sicherheit kann er sich ja kümmern :)
 
Hallo,

in der Regel haben weniger erfahrene PHP-Skripter leider noch nicht den Blick für solche Sicherheitslöcher. Da ist die Gefahr groß, dass ein in Bezug auf die Sicherheit bedenklicher Quellcode einfach unreflektiert übernommen wird. Daher mein ausdrücklicher Hinweis.

Grüße,
Matthias
 
Funktioniert weiterhin nicht. Ich will einfach nur das die Inhalte die man Downloaden kann auf dem Rechner gespeichert werden und nicht im Popup selbst geöffnet werden (Dann erhält man nämlich Buchstaben Salat). Liegt das nicht an den Headern?
 
Zurück