Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
readfile - Download will net starten [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
readfile - Download will net starten


 
Muffin
23-05-2005, 20:33 
 
Moinsen,
ich habe mir heute einen Downloadstarter in PHP geschrieben.
Dieser klappt aufm Localhost Perfekt.

Im Internet allerdings geht er nur bis Dateien die kleiner als 5 MB sind. Danach kommt einfach eine weiße Seite - keine Fehler oder sonstiges :(.

# Um die Extension zu kriegen nehmen wir den Namen, "exploden diesen" und in dem Array
# können auch mehrere Punkte drinne sein, da wir immer das Letzte nehmen kriegen wir das richtige
$ext = explode(".", $file);
$mime_type = $mime[ $ext[ count ( $ext ) - 1 ] ];

header("HTTP/1.1 200 OK");
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");

header("Content-Type: $mime_type");
header("Content-Length: $result[size]");
header("Content-Disposition: attachment; filename=\"$result[file]\"");
readfile( $file );

Das ist der Code der genutzt wird.
Der Server nutzt PHP 4.3.7 im Safe Mode.

Achso, das hier ist die gesamte Funktion die den Download startet:

function download(){
global $db,$prefix,$strError,$arrSecurity,$GeneralConfig,$mime;
$id = $_GET['id'];
if(!is_numeric($id)) {$err[] = _idnumeric;}
if(empty($err)){

$result = $db -> fetch_array($db -> query("SELECT `parent_id`,`size`,`file` FROM `".$prefix."_download` where `broken` = 0 AND `id` = $id"));
$CatParent = $db -> fetch_assoc($db -> query("SELECT `name`,`view` FROM `".$prefix."_download_cat` where `id` = ".$result['parent_id']));
if( access( $CatParent['view'] ) == 1){
if( blocked_referer() == 0)
{
$db -> query("UPDATE `".$prefix."_download` set `downloads` = `downloads`+1 where `id` = $id");
$file = "download/".$result['file'];
if ( is_file ( $file ))
{
# Um die Extension zu kriegen nehmen wir den Namen, "exploden diesen" und in dem Array
# können auch mehrere Punkte drinne sein, da wir immer das Letzte nehmen kriegen wir das richtige
$ext = explode(".", $file);
$mime_type = $mime[ $ext[ count ( $ext ) - 1 ] ];

header("HTTP/1.1 200 OK");
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");

header("Content-Type: $mime_type");
header("Content-Length: $result[size]");
header("Content-Disposition: attachment; filename=\"$result[file]\"");
readfile( $file );

}
}
Else
{
$content = $strError -> Announce(_download_klau);
}
}
Else{
$content = $strError -> Announce(_security);
}
}
Else{
$content = $strError -> CheckError($err);
}

return $content;
}

Das komische ist, wenn ich die Datei in dem ersten CodeSchnipsel direkt mit den Arrays ersetze, klappt es, wenn ich das in der Funktion mache, kommt trotzdem noch er Weiße Bildschirm.

Komisch ist dann auch noch das der Query welcher die Downloads zählen soll bei den Downloads über 5 MB manchmal einfach um 3 höher geht, obwohl im Query ja drinne steht +1.

Weiß da jemand rat?


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:50 Uhr.