Statistik per PHP als img
Norbert
- php
Ich habe PHP zur Verfügung und möchte ein Logfile wegschreiben. Nachdem alle Seiten in htm geschrieben sind, kommen keine vollen .php - Files infrage.
www.onestat.com u. a. bieten Statistiken an. Die zu loggenden Daten werden in einem Javascript erzeugt und einem img übergeben. Im Falle von www.onestat.com wird eine .aspx-Datei aufgerufen. Wie kann eine externe php-Datei ein Image (auch wenn es blank ist) zurückliefern?
<script type="text/javascript">
<!--
function OneStat_Pageview()
{
var d=document;
var sid="312914";
var CONTENTSECTION="";
var osp_URL=d.URL;
var osp_Title=d.title;
var t=new Date();
var p="http"+(d.URL.indexOf('https:')==0?'s':'')+"://stat.onestat.com/stat.aspx?tagver=2&sid="+sid;
d.write(p);
p+="&url="+escape(osp_URL);
p+="&ti="+escape(osp_Title);
p+="§ion="+escape(CONTENTSECTION);
p+="&rf="+escape(parent==self?document.referrer:top.document.referrer);
p+="&tz="+escape(t.getTimezoneOffset());
p+="&ch="+escape(t.getHours());
p+="&js=1";
p+="&ul="+escape(navigator.appName=="Netscape"?navigator.language:navigator.userLanguage);
if(typeof(screen)=="object"){
p+="&sr="+screen.width+"x"+screen.height;p+="&cd="+screen.colorDepth;
p+="&jo="+(navigator.javaEnabled()?"Yes":"No");
}
d.write('<a href="http://www.onestat.com/aspx/login.aspx?sid='+sid+'" target=_blank>
<img id="ONESTAT_TAG" border="0" src="'+p+'" alt="This site tracked by OneStat.com. Get your own free site counter."></'+'a>');
}
OneStat_Pageview();
//-->
</script>
Hallo,
In dem du mit dem PHP einen IMG-Header erzeugst und dann binäre Daten ausgibst (die du z.b. vorher aus einer Bilddatei einliest):
Beispiel:
$img = "/home/bilder/test.gif";
$size = filesize($img);
header("Content-Length: $size");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: image/gif");
header("Content-Transfer-Encoding: binary");
$fd = fopen($img, "r");
if (!$fd) {logg ("Cannot open Image $img");}
else {
while ($data = fread($fd, 1024)) {
echo $data;
}
fclose($fd);
flush();
}
(ohne Gewähr, evtl. muss man noch was tun, damit die Daten wirklich binär gelesen werden)