[Erledigt]PHP Download Probleme

Erstmal hallo alle zusammen,
ich plag mich seit ein paar Tagen mit einem Download-Berreich für meine Seite rum, an sich funktioniert er soweit einwandfrei, bis es dann zum Dateidownload an sich kommt.

Ich möchte über PHP einen Download der Datei starten, ohne dass der Benutzer den eigentlichen Link zu Gesicht bekommt.

EDIT: Hab die Probleme durch probieren doch noch gelöst bekomen, hab die Lösungen weiter untern dazugeschrieben, wenn jemand die gleichen probleme hat.

Habe mich im Internet schlaugelesen und herausgefunden, dass es so funktioniert:

[quote]
$file="Downloads/Test.exe"
header(‘Content-type: application/octetstream’);
header(“Content-Length: “.filesize($file));
header('Content-Disposition: attachment; filename=”’.basename($file).’”’);
readfile($file); [/quote]

In die $file Variable lade ich einen Eintrag aus der Datenbank, worin dann der Link zu der Datei enthalten ist, der gesamte Code sieht so aus:

[code]
$DID = $_GET[‘DID’];
$DL = $_GET[‘DL’];
if(!empty($DID) && $DL==“1”){
$sqlcnt=“SELECT * FROM downloads WHERE ID= $DID” ;
$rescnt=mysql_query($sqlcnt,$db_link);
$daten=mysql_fetch_array($rescnt);

$file=$daten[‘DL-Link’];

if(!file_exists($file)) {
echo “Die Datei existiert nicht bzw. ist nicht erreichbar!!”;
exit();
}
header(‘Content-type: application/octetstream’);
header(“Content-Length: “.filesize($file));
header('Content-Disposition: attachment; filename=”’.basename($file).’”’);
}[/code]

und in der download.php die included wird steht dann noch:

readfile($file); und natürlich noch einiges mehr an Code, der hierfür aber unerheblich sein sollte.

Ich hab hab auf meinem Rechner XAMPP installiert, da klappt auch soweit alles, bis auf die Tatsache, dass die .exe Datei sich nach dem Download nicht mehr ausführen lässt -.- , die Datei sieht so aus, als wenn ich die Ursprungsdatei mit dem Editor geöffnet und dann nochmal als .exe abgespeichert hätte, es fehlt also auch das Symbol. Dateigröße,Name und auch Inhalt werden allerdings korrekt geschrieben/runtergeladen.

Hier weiß ich nun wirklich nicht mehr woran es liegen könnte, der Mime-Type sollte auch stimmen, da es sich um ein Setup handelt, also eine .exe .


EDIT: Hab das readfile($file) einfach mal direkt mit oben in die index.php hinter die header() geschrieben und siehe da, es geht !

Auf bplaced hab ich wenn ich die Seite hochlade noch ein weiteres Problem, ich kriege die Fehlermeldung Warning: Cannot modify header information , obwohl die Dateien und der Code 1zu1 die gleichen sind, wie auf meinem XAMPP-Server. Er meint in der DB-Config.php wird eine Ausgabe erzeugt, die sieht aber wie folgt aus:

<?php
$dbname="DBName";
$dbhost="localhost";
$dbuser="Benutzername";
$dbpass="Passwort";
$db_link=@mysql_connect($dbhost,$dbuser,$dbpass);
mysql_set_charset("utf8");
mysql_query("SET lc_time_names = 'de_DE'");  
if(! $db_link ) die("Zur Zeit keine Verbindung möglich - später nochmal probieren ");
$db_sel=mysql_select_db($dbname)
or die("Auswahl der Datenbank fehlgeschlagen");
?>

Datei wurde mit dem Editor(Notepad.exe) geöffnet und hier 1zu1 reinkopiert (bis auf die Datenbank-Zugansdaten), da sollten also auch keine Leerzeichen sein.

Ich bin wirklich ein wenig ratlos und mir fällt absolut nichts mehr ein, wär toll wenn mir wer helfen könnte. :neutral_face:


EDIT: Habe in den php-Dateien unter Kodierung BOM-Einschließen deaktiviert und dann gings :wink: