PHP - Download Tracking (Google Analaytics?)

MojoManagement

Lt. Commander
Registriert
Apr. 2007
Beiträge
1.039
Hi Leute,

ich bin auf der Suche nach einer Möglichkeit Downloads über eine download.php zu tracken...
Momentan konnte ich nur die download.php hits und resumes tracken ... interessant wäre abgeschlossene Downloads sowie Abbrüche (falls möglich)
MySql liegt dahinter..
Ich habe mich mal versucht in Google Analytics schlau zu machen, komme da jedoch auch nicht wirklich weiter..

Über Hinweise(falls überhaupt möglich) oder Lösungsvorschläge wäre ich sehr dankbar!

Bin leider Anfänger in PHP...

Falls jemand sich außerdem sehr gut mit PHP auskennt und kurz Lust hat über meinen download.php Code zu schauen, PM, wäre sehr nett!

Gruß,
Moojoo
 
Würde mal aus dem Bauch heraus sagen, dass das ohne weiteres nicht geht, zmd. nicht so einfach.
Du müsstest das loggen und ggf. im Apache (falls du einen Apache verwendest) dort in den Logs schauen, ob die Verbindungsdaten etwas hergeben.
 
Das wäre schade...

Problematisch ist momentan bei mir auch, dass die Download Manager scheinbar die Hits (resume auch, prüfe HTTP_RANGE gesendet) in die Höhe treiben...
 
Gut möglich, aber momentan kann ich nur über die Glaskugel erahnen was du überhaupt machst.

Sprich poste mal einen entscheidenden Code-Ausschnitt, dann kann man mal drüber sehen.
 
Bietest du den Download-Vorgang an? Weil wenn das der Fall ist, dann kannste ja per Jscript das abschließen des Downloads überwachen und dann nen Ajax-Call schicken, nach dem motto "is fertig". Wenn du die download.php jedoch frei hast, dann wirds in der tat schwierig
 
Ja, mit jQuery AJAX habe ich auch schon etwas gefunden im Netz, nur nichts funktionales (meiner Meinung nach, war letztens schon überfordert mit AJAX Basic Auth durchführen...)

Wie würde das denn ablaufen mit Ajax bzw. was meinst du mit dem letzten Satz? Hast du da zufällig was zur Hand?
 
Naja, ein Ajax-Call mit jquery ist ziemlich einfach ;) Hier eine Doku: http://api.jquery.com/jQuery.ajax/

Und als Beispiel:

FileToRequest.php
PHP:
<?php echo 'Hello World! Ich habe folgende UserID: ' . intval($_POST['userID'])  . ' und mache damit jetzt magic ;)' ; ?>

request.js
PHP:
$.ajax({
  url: "FileToRequest.php",
  type: "POST",
  data: { userID : "1234" },
  success: function() {
     alert("Erfolgreicher Ajax-Request")
  }
});

Den Teil in der request.js natürlich erst feuern, wenn du überprüft hast, dass der Download abgeschloßen wurde. ZB. durch das verglecihen von file-größen ;)

Mit frei meine ich, dass die download.php von jedem überall aufgerufen werden kann, ohne dass es eine Einschränkung gibt. Ich würde es zB. so machen, dass ich die download.php nur mit einem anderen Script auf meinem Server aufrufen kann. Mittels
PHP:
$_SERVER['REMOTE_ADDR']
überprüfen, ob die Anfrage von meinem Server kommt und dann mit
PHP:
file_get_contents()
mir die Datei holen und dann als Download anbieten. Das hat den Vorteil, dass niemand deine download.php von sich aus aufrufen kann, um so zB. an Dateien zu kommen, die er eigentlich nicht sehen darf und die den Datei-Pfad verschleiern kannst.

Da du die Stelle kontrollierst, von der aus der Download stattfindet, kannst du dort im Javascript dann auch die Ajax-Call losschicken, welcher den Succes einträgt (Nachdem die Datei gedownloadet wurde)
 
Danke für die ganzen Infos und den Code.
Momentan habe ich es so mit dem Zählen "gelöst", ob der HTTP_REFERER von meiner URL kommt (gibt momentan eh nur den index)
Ansonsten wird einfach nicht gezählt...

URL-Verschleierung bzw. Direkt Link Verbot habe ich zurück gestellt, sonst kracht ja auch bei jedem der Download mit einem Manager ab?

Beim AJAX muss ich mich erst einlesen, momentan wüsste ich gar nicht, was ich wo einbauen muss und was wann wo wie getriggert wird.. :D
 
Nunja, ja :) Das klappt natürlich nicht. Wenn du jedoch eine download.php hast, dann schau massiv darauf,w as gedownledt werden kann, nicht dass jmd sonst deine mysql-connection-infos etc. abgreift und dann unfug mit deinem Server veranstaltet.

Mich hats früher auch ein wenig vor Ajax gegraust ;) Aber je öfter man das macht, umso leichter gehts von der Hand. Bei Fragen kannste dich btw. gern melden ;)
 
Zurück
Oben