nur komplette Downloads zählen

Watusimann

Erfahrenes Mitglied
Hatte die Suchfunktion benutzt, in der Hoffnung, daß sich alles aufklärt, leider ergab das ganze nur ein Hinweis auf "Server auslesen /Transfervolume prüfen"

Gibt es eine Möglichkeit nur einen fertigen Transfer zu zählen, oder hab ich mich da in etwas verrannt? Momentan sieht es so aus, wird also der Klick gezählt.

PHP:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: private");
 
include("/home/www/webXXX/files/var.inc.php");

$db=mysql_connect($db_host, $db_login, $db_pwd) or die ( include("db_error.php"));
$q=mysql_select_db($db_name, $db) or die( include ("db_error.php"));
$result = mysql_query("SELECT  code, dl_link FROM download WHERE code = '$code'");
while ($data = mysql_fetch_array($result))
{

 $code=$data['code'];
 if ($_SERVER['REQUEST_URI'] == $ur.$code){
 $true="x";
 
  $name=$data['dl_link'];
  $SRC_FILE = "/home/www/webXXX/files/".$name;
  $download_size = filesize($SRC_FILE);
  $filename = basename($SRC_FILE);
    
  header("Content-Type:application/octet-stream");
  header("Content-Disposition: attachment;filename=$filename");
  header("Accept-Ranges: bytes");
  header("Content-Length: $download_size"); @readfile($SRC_FILE);
  mysql_query("UPDATE download SET count=count+1 WHERE code = '$code'", $db);
//  mysql_query("UPDATE download SET code=MD5('".$code."') WHERE code = '$code'", $db);
  $header = "From: \"".$sender_dl."\" <".$sendermail_dl.">\n";
  mail($empfaenger_dl, $betreff_dl_true, $mailtext_dl_true, $header);
  }
}
mysql_close($db);

if (!$true) include("dl_error.php");

Ich bekomme also für jedes Download eine Mail, hat mich einen persönlich Wert, zwecks Auswertung der DL´s in bestimmten Foren. Desweiteren (ist hier erstmal optional ausgeschaltet) eine Änderung des Links zwecks Linksteeling.
 
Watusimann hat gesagt.:
Gibt es eine Möglichkeit nur einen fertigen Transfer zu zählen, oder hab ich mich da in etwas verrannt? Momentan sieht es so aus, wird also der Klick gezählt.

Hallo,

meines Wissens geht das nicht, lass mich aber gerne belehren.:)

mfg
forsterm
 
Ich denke das geht so einfach nicht, da PHP nichts mehr damit zu tun hat wenn der Server dem Client die Datei schickt.
 
Hm - das sieht nicht gut aus. :(
Ich spinn jetzt mal rum:
Angenommen es gäbe die Möglichkeit, den Port zuprüfen, wie lange dieser offen ist. Sobald sich der Port schließt, besteht vielleicht die Möglichkeit zu prüfen wie groß der Traffic war. Dann prüft man mittels DB ob dieser übereinstimmt und dann count+1

Wäre das ein Gedankengang, den man verfolgen könnte?
 
Ganz genau diese Antwort @Gumbo habe ich beim suchen auch von dir gefunden :)
Nur leider blieb es bei dieser Antwort, und ehrlich gesagt, wüßt ich nicht, wie dies realisieren soll :( .

@Daddi - sag mir wenn ich mich täusche, aber es gibt doch Portscanner auf php-Basis.
 
Ich weiß zwar nicht, welchen Webserver du hast und ob dein Anbieter, falls du einen hast, es zulässt, auf die Log-Dateien zuzugreifen. Wenn du jedoch Zugriff hast, könntest du die Log-Datein mithilfe eigentlich recht simpler Algorithmen (am einfachsten mit regulären Ausdrücken) verarbeiten und später analysieren.
 
Vielen Dank Gumbo für deine Mühe, aber Zugriff habe ich leider nicht. Dann schlag ich mir das wohl eher aus dem Kopf. schade ... Trotzdem vielen Dank an alle, für die aufgebrachte Zeit :)

gruß der Dave
 
Wenn du, statt die Datei komplett zu senden, sie zeilenweise sendest, sollte es eigentlich gehen.
Wurde die Verbindung vom Client beendet, wird normalerweise auch die Skriptausführung abgebrochen... du solltest dann nur eine Mail bekommen, wenn die letzte Zeile gesendet wurde.
 
Zurück