PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Downloadcounter


Qbic
22.03.2003, 13:58:51
Hallo erstmal ... bin frisch angemeldet, da ich mal leider keinen entsprechenden Beitrag in diesem Forum über die Suche Funktion gefunden habe...

Also: - IE6.0 - Linux/Apache Server

Ich schicke beim Download einer Datei diese mit ' $sendsize=fread($url,$fsize) '. Danach teste ich $sendsize auf die Dateigrösse. Ist diese gleich der Datei, dann zähl ich nen Downloadcounter hoch.
Wenn ein User also beim downloaden abbrechen drückt, wird der Counter nicht hochgezählt. Bloss wenn 'Download von Dateien' im Browser (IE6.0) deaktiviert ist und die Datei entsprechend klein, dann wird mein Counter hochgezählt, obwohl der Download Client-Browserseitig verboten wurde. Bei grösseren Dateien passiert das nicht. Wie kann ich dem begegnen ?

- Danke - QBic -

PS: Wann wird die Self_PHP 1.0.1 Site um alle PHP-Funktionen ergänzt ? sprich: preg-match´s oder ob_end, ob_flush etc... ?

|Coding
22.03.2003, 16:55:10
Original geschrieben von Qbic
PS: Wann wird die Self_PHP 1.0.1 Site um alle PHP-Funktionen ergänzt ? sprich: preg-match´s oder ob_end, ob_flush etc... ?

alles zu seiner zeit :-))

btw: die aktuelle version ist aber doch 1.2 :)

Qbic
22.03.2003, 18:12:27
:) sry

... aber zu meiner Frage... steh ich da auf nem dicken Schlauch und hab was übersehn, oder gibts ne Lösung für ... ?

- Qbic -

|Coding
22.03.2003, 20:30:38
poste mal dein script, dann kann man sich ein besseres bild von deiner problematik machen.

benutze aber bitte das php tag [php] für php-code. beschreibung siehe hier: click (http://www.selfphp.info/forum/forum/misc.php?s=&action=bbcode#code)

Qbic
22.03.2003, 21:30:16
...
header("Cache-control: private");
header("Content-Type: x-type/subtype");
header("Content-Disposition: attachment; filename=".$fileName);

$trans=readfile($pathToFile,filesize($pathToFile));

if($trans==filesize($pathToFile)) {

@mysql_query("update downloads set count = count + 1 where id= '$id' ;"); // Datei_Download_Zähler

$result = @mysql_query("select * from userdownloads where User_ID='$userID' and File_ID='$fileID' ;"); // welcher User welche Datei

$num=mysql_num_rows($result);

if($num==0){ // der erste Download einer Datei

$result = @mysql_query("insert into userdownloads (User_ID, File_ID, count) values ('$usrID', '$fileID', '1') ;");

}elseif($num==1) { // weitere Downloads einer Datei

$result = @mysql_query("update userdownloads set count=count+1 where User_ID='$usrID' and File_ID='$fileID' ;");
}
}
exit();




also der Code funktioniert wunderbar - hoff das keine schreibfehler dren sind, weil ich ihn etwas übersichtlicher gestaltet habe - bloss wenn Dateiendownload im Clientbrowser IE6.0 'deaktiviert' ist, dann liefert mir $trans die Dateigrösse. Aber nur (!) bei kleinen Dateien, die scheinbar in null komma nichts an den Browser geschickt wurden...

- QBic -

|Coding
22.03.2003, 22:14:26
also warum das nur bei kleinen dateien geht, kann ich mir auch nicht erklären...

ich glaube aber nicht dass, das was mit der geschwindigkeit zu tun hat.

Qbic
23.03.2003, 13:29:04
Wieso glaubst du nicht, dass das was mit der Geschwindigkeit zu tun hat ? Könntest Du Deine Vermutung etwas konkretisiern bitte.
Vielleicht komm ich dann auf andere Ideen...

Eine 9KB Datei is ruckzuck versendet, noch bevor der Browser das 'bla-bla nicht erlaubt' Fenster geöffnet hat ... nur so erklär ich mir, dass readfile die Dateigrösse zurückgibt. Bei einer 3MB Datei passiert das nicht.

|Coding
23.03.2003, 13:55:10
ich weiß net, das mit der geschwindigkeit scheint mir eine absurde fehlerquelle. da tippe ich doch eher darauf das was mit dem script selber nicht stimmt.

ich frage mich gerade, was das zweite argument von readfile() zubedeuten hat. das wirkt irgendwie komisch...

was willst du denn genau mit dieser codezeile bewirken?

Dago
23.03.2003, 15:09:31
Beim IE ist es so, dass er den Download schon startet, bevor man auf speichern klickt... Deswegen werden kleine Dateien scheinbar(!) in 0,nix übertragen.

|Coding
23.03.2003, 15:27:41
hi,

auch ne' möglichkeit.

stimmt allerdings, das habe ich mal in ner zeitschrift gelesen. ist aber schon was her...

Qbic
23.03.2003, 15:29:16
@|Coding:
bei fread kann ich auch die Dateigrösse (2.te Param) weglassen...der is optional.. is gehupft wie gesprungen

@Dago:
Thx.. demnach gibts auch keine Lösung für dieses prob... ausser IE deinstalliern ;) oder das 500ste secure-patch drübernudeln, um noch mehr sicherheitslücken zu bekommen ...

wenn aber jemand schonmal sowas getrixxt hat, kann er mir das gerne verraten.... :)

Danke - QBic -

|Coding
23.03.2003, 15:38:32
Original geschrieben von Qbic
@|Coding:
bei fread kann ich auch die Dateigrösse (2.te Param) weglassen...der is optional.. is gehupft wie gesprungen

jopp, ich habe es eben auf php.net gelesen :-)