Ich habe, glaube ich, das Problem gefunden und es auch gleich durch modifikation des Sources behoben:
Das ganze Problem fand ab der Zeile 21 in der Datei "load.php" statt:
Das Script fragt, egal ob extern oder intern die Grösse des Files ab und da die Grösse nicht beim Hinzufügen des Links in der Datenbank gespeichert wird, löst es hier irgendwie durch einen ungültigen Wert das Problem aus (ich tippe mal, alle User die in der PHP.ini secure = 1 haben, haben dieses Problem):
Code: Alles auswählen
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$file_name = $row[file_name];
[color=red]$file_size = filesize($download_dir . $file_name);[/color]
$file_free = $row[free];
$file_extern = $row[extern];
}
Diesen Code habe ich dann durch diesen ersetzt:
Code: Alles auswählen
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$file_name = $row[file_name];
$file_free = $row[free];
$file_extern = $row[extern];
}
if ( $file_extern == "0")
{
$file_size = filesize($download_dir . $file_name);
}
So wird die Grösse
nur dann abgefragt, wenn es sich um einen internen Link handelt. Externe Links lässt das Script kalt.
Und schon waren bei mir die Probleme auf einen Schlag gelöst.
Zum Testen:
http://www.unbreakable.ch/include/forum/downloads.php
Und hier noch der ganze Code von
load.php
Code: Alles auswählen
$download_dir = "media/";
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_DOWNLOADS);
init_userprefs($userdata);
//
// End session management
//
$sql = "SELECT file_name, free, extern FROM " . DOWNLOADS_TABLE . " WHERE id = '$id'";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$file_name = $row[file_name];
$file_free = $row[free];
$file_extern = $row[extern];
}
if ( $file_extern == "0")
{
$file_size = filesize($download_dir . $file_name);
}
$user_id = $userdata['user_id'];
$sql = "SELECT user_traffic FROM " . USERS_TABLE . " WHERE user_id = '$user_id'";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$user_traffic = $row[user_traffic];
}
if ( $file_free == "1" OR $file_extern == "1")
{
$query_klicks = "UPDATE " . DOWNLOADS_TABLE . " SET klicks=klicks+1 WHERE id = '$id'";
$result_klicks = mysql_query($query_klicks);
}
if ( $userdata['session_logged_in'] AND $user_traffic & $file_size AND $file_free == "0" AND $file_free == "0" AND $file_extern == "0")
{
$query_traffic = "UPDATE " . USERS_TABLE . " SET user_traffic=user_traffic-" . $file_size . " WHERE user_id = '$user_id'";
$query_klicks = "UPDATE " . DOWNLOADS_TABLE . " SET klicks=klicks+1 WHERE id = '$id'";
$result_traffic = mysql_query($query_traffic);
$result_klicks = mysql_query($query_klicks);
}
if ( $file_extern == "1" )
{
Header("Location: $file_name");
}
if ( $file_free == "1" OR ( $userdata['session_logged_in'] AND $user_traffic & $file_size) )
{
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$file_name\"");
readfile($download_dir . "/" . $file_name);
}
// Der anfang und schluss PHP-Tag muss noch selbst hinzugefügt werden.
Hoffe ich habe da etwas geholfen.

Sonst slapt me
Gruss uNbReAkAbLe