Problem bei Download Script

ezias

Erfahrenes Mitglied
Hallo zusammen
hab ein kleines Problem hab mir ein Downloadscript geschrieben funktioniert auch alles soweit. Die Daten von jedem Download werden in einer mySQL Datenbank abgespeichert und über eine andere Datei die per open.php?id=(z.B.)7 geöffnet wird. Die Datei läd sich dann auch runter aber eben nicht das dieses Fenster auf geht Ziel Speichern Unter und dann das Downloadfenster mit dem Statusbalken angezeigt wird sondern läd sich wie eine .html seite Im Browser die open.php schaut so aus!
PHP:
<?php
include("./config.php");
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
$sql = "SELECT
*
FROM
download
WHERE ID='".$_GET['id']."'
ORDER BY
Id DESC";
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result)) {
while($row = mysql_fetch_assoc($result)) {
$filename = $row['Download'];
echo"<center>Der Download von";
echo $row['Name'];
echo " wird gleich gestartet</center>";
echo"<meta http-equiv=\"refresh\" content=\"1; URL=$filename\">";
}
}
?>
könnte mir da einer vieleicht sagen wo mein Fehler liegt!
Danke
 
Danke für den Tip funktioniert soweit jetzt erstmal ganz gut nur hab ich noch das Problem das mir jetzt nicht die Datei runtergeladen wird sondern die open.php
code schaut so aus:
PHP:
<?
include("./config.php"); 
if (!isset($id)) die("keine gueltige ID angegeben");  
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
$result = mysql_query("SELECT Dateiname FROM downloads WHERE ID = '$id'"); 
$filename = mysql_result($result, 0);
header("Content-Disposition: filename=\"$filename\"");
header("Content-Length: ".filesize($filename)); 
header("Content-Type: application/octet-stream");
readfile($filename);
?>
habs auch schon mit beiden Links versucht und mit sämtlichen Codeschnipseln aber das einzige was bisher immer nur runtergeladen wird ist die .php Datei wo liegt da mein Fehler.
Danke schonmal für die Hilfe.
 
Ich möchte mich gern bei diesem Problem anschliessen.

Ich habe folgenden Code:

PHP:
...
$file = fopen($saved_export, 'r') or die ("Cannot open exportfile!");
header("Content-type: application/txt");
header("Content-Disposition: attachment; filename=$outputname");
fpassthru($file);
...

Die Variablen werden alle gesetzt im Skript und meistens funktioniert der Download auch. Es öffnet sich ein Fenster zum Auswählen des Speicherortes und alles ist prima.

Nun hat sich herausgestellt, dass dies leider nicht überall klappt. Ich kann den Fehler leider nicht selber nachvollziehen, aber bei manchen Kunden wird nicht die generierte Textdatei zum Download angeboten, sondern es wird probiert, das php-Skipt zu downloaden, was dann in einer Fehlermeldung abgebrochen wird.

Hat jemand eine Ahnung, woran das liegen könnte. Vielleicht hat das auch was mit dem Browser zu tun? Weil im Grunde kann es dann doch kein Programmierfehler sein, da das Skript ja auf dem selben Webserver läuft und nur der Client ein anderer ist?

Vielleicht bin ich dann letzten Endes auch im falschen Forum, aber ich will es erstmal hier probieren...
 
Ok, das Problem ist gelöst...und war etwas eigenartiger Herkunft.
Für die, die es interessiert:

Es wurde vor kurzem noch eine https-Umgebung eingerichtet. Zwar
wurde diese Umgebung vom Kunden nicht genutzt als der Fehler
auftrat, allerdings davor und im selben Browserfenster . Nach dem
Wechsel zur gewohnen Umgebung wurde nach wie vor auf die https-Version
zugegriffen. (Erklärung?)

Und wenn eine SSL-Verbindung genutzt wird, dann ist dies hier zu
beachten: http://nl2.php.net/manual/nl/function.session-cache-limiter.php
 
Zurück