Problem mit DL-Mod

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Bene
Mitglied
Beiträge: 18
Registriert: 13.11.2003 19:24
Wohnort: Recklinghausen
Kontaktdaten:

Problem mit DL-Mod

Beitrag von Bene »

Hallo,

ich habe ein Problem mit meinem DL-Mod.
Wenn ihr hier schaut, seht ihr, dass die
Warning: filesize(): Stat failed for http://www.dpsg-re.de/downloads/interes ... _karte.gif (errno=2 - No such file or directory) in /homepages/14/d89944760/htdocs/forum/downloads.php on line 121
erscheint.
Zeile 121 sieht so aus:

Code: Alles auswählen

if ($file_extern == "0") $file_size = filesize($download_dir.$file_path.$file_name_name);
die gesamte downloads.php seht ihr HIER.
Ich habe $download_dir = "http://www.dpsg-re.de/downloads/"; gesetzt, es war vorher ein relativer Pfad zu einem Verzeichnis im Board-Ordner. Stellt das schon das Problem dar? Sollte es doch eigentlich nicht, oder?

Für mich schauts so aus, als ob das Script keine Rechte hat, die Datei-Eigenschaften zu lesen. Die Datei http://www.dpsg-re.de/downloads/interes ... _karte.gif die es nicht geben soll, existiert nämlich....

Danke schon einmal für eure Hilfe!

Bene
Zuletzt geändert von Bene am 17.08.2004 22:15, insgesamt 1-mal geändert.
Man kann sich drehen wie man will: der Popo bleibt immer hinten!
Bene
Mitglied
Beiträge: 18
Registriert: 13.11.2003 19:24
Wohnort: Recklinghausen
Kontaktdaten:

Beitrag von Bene »

Hallo!
Ich mal wieder!
Ich habe den Fehler:

Code: Alles auswählen

$download_dir = "http://www.dpsg-re.de/downloads/";
haben wir jetzt auf

Code: Alles auswählen

$download_dir = "../www/downloads/";
Der Mod scheint aber tatsächlich nur mit (relativen) Pfaden klar zu kommen...

Allerdings zieht der noch nicht den Traffic ab...
Wir arbeiten dran :-)

//edit //
hmm...
ich weiß nun schon, dass die entscheidenden Zeilen in der load.php stehen. Es sind die Zeilen 51 - 57:

Code: Alles auswählen

if ( $userdata['session_logged_in'] AND $user_traffic > $file_size 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);
	}
Hier müsste ja der Fehler sein, sodass der Traffic nicht vom Gesamtlimit abgezogen wird... nur wo steckt der??!

Ich habe dir Zeile 51

Code: Alles auswählen

if ( $userdata['session_logged_in'] AND $user_traffic > $file_size AND $file_free == "0" AND $file_extern == "0")
geändert. Vorher stand da

Code: Alles auswählen

if ( $userdata['session_logged_in'] AND $user_traffic > $file_size AND $file_free == "0" AND $file_free == "0" AND $file_extern == "0")
ist die doppelte Abfrage nach $file_free == "0" nötig?? Nicht wirklich, oder??

Die komplette load.php seht ihr HIER

Ich hoffe, ihr könnt mir helfen!!
Bene
Man kann sich drehen wie man will: der Popo bleibt immer hinten!
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Beitrag von makue »

Bene hat geschrieben:Der Mod scheint aber tatsächlich nur mit (relativen) Pfaden klar zu kommen...
Man kann filesize() nur auf lokale Dateien anwenden, egal ob relativ oder absolut.
Bene hat geschrieben:ist die doppelte Abfrage nach $file_free == "0" nötig?? Nicht wirklich, oder??
Nein, doppelt ist nicht nötig. Vielleicht solltest Du an dieser Stelle mal mit print die Variablen testweise ausgeben um zu sehen welche Bedingung nicht stimmt.
Bene
Mitglied
Beiträge: 18
Registriert: 13.11.2003 19:24
Wohnort: Recklinghausen
Kontaktdaten:

Beitrag von Bene »

Ich habe das Script mal einem Arbeitskollegen zum Fraß vorgeworfen:
in der load.php:

Code: Alles auswählen

$file_size = ($row['extern']==0 ) ? '' : filesize($download_dir .$file_path.$file_name);
ist falsch.
Die richtige Zeile ist:

Code: Alles auswählen

$file_size = ($row['extern']== "0" ) ? filesize($download_dir.$file_path.$file_name) : '';
Danke trotzdem für deine Mühe, makue!

Dass filesize() nur lokale Dateien verarbeiten kann ist mir zwar bewusst. Allerdings habe ich den Zusammenhang wohl nicht gepeilt... :oops:

Gruß,

Bene
Man kann sich drehen wie man will: der Popo bleibt immer hinten!
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Beitrag von makue »

Schön das es geht. Aber...

== "0" ist eigentlich falsch, da die Spalte "extern" vom typ tinyint ist, also eine Zahl, kein String. PHP wandelt aber den Typ beim Vergleich, so dass es im Endeffekt trotzdem funktioniert. Ganz sauber ist das nicht. Dies hätte sicher auch gereicht:

Code: Alles auswählen

$file_size = ($row['extern']!=0 ) ? '' : filesize($download_dir .$file_path.$file_name); 
Also einfach bloß die Vergleichsbedingung negieren oder eben, wie Du es gemacht hast, den hinteren Teil des trinären Ausdrucks drehen.
Antworten

Zurück zu „phpBB 2.0: Mod Support“