Ich hab für meine Webseite ein Downloadscript geschrieben, aber irgendwie funktioniert es nicht und ich hab keine Ahnung warum. Vielleicht könnt ihr mir irgendwie helfen.
PHP-Code:
<?php
$productids = array();
$sql = "SELECT id, fileurl FROM product WHERE price='0.00'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) $productids[] = $row["id"];
if(isset($_GET["product"]) && is_numeric($_GET["product"]) && in_array($_GET["product"], $productids))
{
$product = intval($_GET["product"]);
$sql = "SELECT name, version, fileurl FROM product WHERE id=$product";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
if(file_exists($row["fileurl"]))
{
$fileurl = $row["fileurl"];
$sql = "UPDATE product SET downloads=downloads+1 WHERE id=$product";
mysql_query($sql);
if(ereg("Opera(/| )([0-9].[0-9]{1,2})", $_SERVER["HTTP_USER_AGENT"])) $browser = "opera";
elseif(ereg("MSIE ([0-9].[0-9]{1,2})", $_SERVER["HTTP_USER_AGENT"])) $browser = "ie";
else $browser = "";
$mime_type = ($browser == "ie" || $browser == "opera") ? "application/octetstream" : "application/octet-stream";
$search_string = array("\\", "/", ":", "*", "?", "\"", "<", ">", "|", " ", ".");
$replace_string = array("", "", "", "", "", "", "", "", "", "_", "_");
$filename = str_replace($search_string, $replace_string, $row["name"])."_".str_replace($search_string, $replace_string, $row["version"]).".rar";
header("Content-Type: ".$mime_type);
header("Content-Disposition: attachment; filename=\"$filename\"");
readfile($fileurl);
} else
{
# Fehlermeldung
}
}
} else
{
# Fehlermeldung
}
?>
Das Problem ist nun, dass er die Datei nicht zum Download anbietet, sondern eine lange Reihe von Zeichen ausgibt (in der man ab und an einen Dateinamen lesen kann, der im Archiv drin ist).
Die Datenbankverbindung wird vorher natürlich aufgebaut und die benötigten Werte sind in der Datenbank enthalten (sprich bei der Überprüfung, ob die Datei existiert geht alles klar, etc.).
MFG Connar