Direkter Bildaufruf tracken, wie?

Malo

Send4Free.de
ID: 66899
L
20 April 2006
1.863
103
Direkter Bildaufruf tracken, wie?

Hallo will auf 2 meiner seiten den Direkten bilder aufruf tracken, sprich will wissen wo z.b world-of-smilies.com/test.gif eingebaut wird.

jetzt hab ich mir gedacht, mach ich eine php wo ich den trackincode einbaue und lasse in dieser das bild laden.

erste variante war
in die "aufruf.php"
Code:
<?php
header("location: ".$bildurl);
?>
<script des tracker>

zu packen, und das ganze über https://domain.de/aufruf.php?bildurl=test.gif aufrufen zu lassen. KLappte auch, smilie wird angezeigt, ich "JUHU"
dann hab ich das ganze per mod rewrite noch umwandeln lassen, das ich keine ? links habe, und habe daraus folgenden link gemacht: https://domain.de/bild_test.gif (damit lässt sich das ganze dann auch per code einbauen
Funtzt auch.
LEIDER wird da der trackincode ignoriert bzw nichts getrackt.
und wenn ich den trackercode vor das header mache wird nichts angezeigt.


weiß einer wie es geht das ich die direkt eingebauten bilder Tracken kann?
(möchte halt wissen wie oft ein bild aufgerufen wurde (für evtl top 10) und wo es "sehr" oft eingebunden wird (evtl trafficsklau)
achja es handelt sich um animierte & statische Gif datein und statische jpg´s & pngs

Achja, auswertung der logfiles kommt für mich nicht in frage... möchte das gern direkt machen..

bin über hilfen Sehr dankbar

DANKe

ps: rechtschreibfehler bitte ignorieren :) danke
 
Was ist der Tracking-Code ?

Ich vermute ein DB-Eintrag ? Mach ihn besser vor den Header, weil sobald der Header geschickt wird, leitet der Browser um.
 
Was ist der Tracking-Code ?

Ich vermute ein DB-Eintrag ? Mach ihn besser vor den Header, weil sobald der Header geschickt wird, leitet der Browser um.

naja "noch" is der trackincode der code von meinem besucherstats tool
das ding is, wenn ich das ding vor den header mache, wir das bild nicht mehr angezeigt
 
naja "noch" is der trackincode der code von meinem besucherstats tool
das ding is, wenn ich das ding vor den header mache, wir das bild nicht mehr angezeigt
Ein HTML-Code ? 8O
Na, der geht freilich ned. Du musst serverseitig das machen, es darf keine Ausgabe an den Browser rausgehen, sonst funktioniert es logisch ned.
 
Ein HTML-Code ? 8O
Na, der geht freilich ned. Du musst serverseitig das machen, es darf keine Ausgabe an den Browser rausgehen, sonst funktioniert es logisch ned.

ja sieht so aus:
<script language="JavaScript" type="text/javascript" src="https://www.domain.de/pphlogger.js.php?id=55506"></script>
<noscript><img alt="" src="https://www.domain.de/pphlogger.php?id=wos&st=img"></noscript>
 
ja sieht so aus:
[HTML-Code]
Denk mal nach:
Du willst ein Bild an den Browser schicken ? Wie kann man in ein Bild HTML einbauen ? Richtig, gar nicht.

Logge in eine Datei, in eine Datenbank oder sende Daten via Socket, aber schick nichts an den Browser, wenn du einen location-Header schicken willst/geschickt hast.

Sollte doch eigentlich logisch sein, wenn man das Konzept von HTTP verstanden hat.
 
ahh , groschen ist gefallen :)

<?php
query("UPDATE bildupload_uploads SET views=views+1 WHERE `file_name`='".$_GET['img']."'");
?>

würde also z.bgehen

gut nun weiß ich worauf ich aufbaun kann

danke für den hinweis
 
hi habs mit
Code:
<?php
header ("Content-type: image/gif");
$filename = $_GET['Bild'];
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize($filename));
fclose ($handle);

 

$jetzt = time();
// Hier kannst sowas reinhauen wie 
// mysql_query("INSERT INTO `db` value ('$_SERVER['HTTP_REFERER']','$_GET['Bild']','$jetzt')")
// 

echo $contents;
?>

gelöst
aufgerufen wirds dann per anzeigen.php?Bild=/var/www/balbalba/html/images/smilies/party/tollersmilie.gif

damit man den relativen pfad etc nicht sieht hab ich daraus jetzt mit mod rewrite nen link gemacht der so aussieht wos_party/tollersmilie.gif

klar aktuell eingebaute bilder sind noch nach dem alten pfad, aber der user sieht ja jetzt nur noch das wos_party/tollersmilie.gif und die paar die es dann doch anders machen, machen den kohl nicht fett :)

ja ips/ domains sperren mach ich schon über .httaccess
 
Zuletzt bearbeitet:
$filename = $_GET['Bild'];
$handle = fopen ($filename, "r");
Die GET-Daten sind vom User manipulierbar. So wie du das jetzt gemacht hast, kann man sich prinzipiell jede beliebige Datei in allen deinen Verzeichnissen auslesen lassen!
Außerdem kannst du dir das fopen, fread, fclose sparen indem du readfile verwendest.
 
Die GET-Daten sind vom User manipulierbar. So wie du das jetzt gemacht hast, kann man sich prinzipiell jede beliebige Datei in allen deinen Verzeichnissen auslesen lassen!
Außerdem kannst du dir das fopen, fread, fclose sparen indem du readfile verwendest.

wie macht man den diese get variante sicherer?
aber der user sieht die "anzeigen.php?.... " url ja garncht dank mod rewrite
hab es aktuell so das

wos_(*).gif zu ==> anzeigen.php?Bild=/var/www/balbalba/html/images/smilies/$1.gif
wird
sprich den restlichen teil vom /var/ etc sieht ja keiner..
(und da keiner den "anzeigen.php...." teil sieht kann ja auch keiner wissen das eine get variante hitner liegt) oder?
 
also das
$filename = $_GET['Bild'];
kannste da du es später noch in der datenbank brauchst so machen:
$_GET['Bild']=mysql_real_escape_string($_GET['Bild']);
$filename = $_GET['Bild'];

und zum überprüfen des pfades kannst du ja mal mit substr_count() überprüfen ob in dem string nen ../ oder / oder // vorkommt. wenn ja abrechen.
 
sprich den restlichen teil vom /var/ etc sieht ja keiner..
(und da keiner den "anzeigen.php...." teil sieht kann ja auch keiner wissen das eine get variante hitner liegt) oder?
Kann durchaus sein, dass es wirklich niemand merken würde, aber auf so etwas würde ich mich nie verlassen.
Außerdem ist die Überprüfung ja wirklich nicht schwer. Wie White bereits geschrieben hat: Wenn $_GET['Bild'] nen Slash enthält, versucht da jemand, Mist zu bauen.
 
bekomm grad nen problem mit dem relativen pfad

und zwar würd ich gern emachen:

query("UPDATE smilies SET views=views+1 WHERE `url`='".$_GET['Bild']."'");

die sache is aber, in meiner DB sind die "urls" im format : musik/schlagzeug.gif (also ordner/datei.gif )

aber der wert "BILD" den ich ja auslesen lasse ist ja /var/www/blabab/html/html/images/smilies/musik/schlagzeug.gif )

also geht ein "where" ja nicht...
 
dann schneidest einfach den restlichem kram vom string weg. sodass du nur dein ordnername/smilie.gif hast dann geht where auch wieder
 
Zunächst einmal: Für deinen Query gilt das selbe wie für das Datei einlesen. $_GET['Bild'] ist eine Usereingabe, und wenn du das ungefiltert in den Query reinpackst, kann man damit eine ganze Menge Unsinn bauen. Stichwort SQL Injection.

Wegen deines Problems, da kannst du doch einfach aus
/var/www/blabab/html/html/images/smilies/musik/schlagzeug.gif
den letzten Teil extrahieren, um musik/schlagzeug.gif zu bekommen. Oder den ersten Teil löschen, der ist ja immer gleich lang, also reicht substr
 
wollte jetzt ma nen "file exists" einbaun, denn wenn man ein bild aufruft das es garnicht gibt kommt aktuell nur
"Die Grafik "https://www.world-of-smilies.com/script.php?Bild=/var/www/world-of-smilies.com/html/html/images/smilies/dessen/kaffee0.gif" kann nicht angezeigt werden, weil sie Fehler enthält."
das wollt ich mit file_exists machen..

Code:
<?php
include("smiliescript_dbconnect.php"); 
header ("Content-type: image/gif");
$filename = $_GET['Bild'];
if (file_exists($filename)) {
  $handle = fopen ($filename, "r");
$contents = fread ($handle, filesize($filename));
$kurz = substr($_GET['Bild'], 55);
fclose ($handle);
$jetzt = time();
query("UPDATE smilies SET views=views+1 WHERE `url`='$kurz'");
echo $contents;
} else {
    print "The file $filename does not exist";
}
?>

normal müsste er doch "the file blaba doest not exitst" ausgeben oder?
er gibt aber normal die error msg, s.o aus
 
und jetzt denk mal nach, wieso :)

Du gibst immernoch ein Bild aus (Content-type) und schreibst "The file $filename does not exist" rein. Da wuerd ich dir als Browser auch nen Vogel zeigen ;) Wenn du sowas in der Art ausgeben willst, musst du schon nen Not-Found Bild liefern.