bsp04.php

<html><body>
 <h1>Counter</h1>
 <?php
  $fp=fopen("counter.txt","r+");
  $i=fgets($fp,9);
  settype($i,integer); //$i ist wahrscheinlich vorher ein String
  if(empty($i))$i=0;
  $i++;
  echo "Hits: <font color=lime>$i</font>";
  rewind($fp);
  fputs($fp,$i);
  fclose($fp);
 ?>
 <hr><a href="index.html">home</a>
</body></html>
Angenommen, man speichert alle Zugriffe in einem Logfile namens "mein.log" mit 7 Spalten in folgender Form
Time|IP|Ref|User_Agent|Aufl|Request_URI|Hochgezählt?
dann kann man daraus eine Menge Daten zusammenfassen. Ein Ansatz für die Zusammenfassung der Bildschirmauflösungen könnte so aussehen:
// Variablen initialiseren
 $w640=0;$w800=0;$w1024=0;$w1152=0;$w1280=0;$w1280_8=0;$w1280_9=0;$w1280x976=0;$w1400=0;$w1440=0;	// Auflösung
 $w1600=0;$w1680=0;$w1920x1200=0;$w2304=0;$w2560x1024=0;$wna=0;$wother;

 $arr_h=@file("mein.log");
 $arrsize=sizeof($arr_h);
 $arr_z=explode("|",$arr_h[0],2);
 for($i=0;$i<$arrsize;$i++){
  $arr_z=explode("|",trim($arr_h[$i]),7);
  if($arr_z[6]=="1"){			// nur Hits, die von extern kommen
   $cnt++;				// Gesamthits
   switch($arr_z[4]){
    case "1024x768" : $w1024++;break;
    case "1280x1024": $w1280++;break;
    case "1400x1050": $w1400++;break;
    case "1600x1200": $w1600++;break;
    case "1152x864" : $w1152++;break;
    case "640x480"  : $w640++;break;
    case "800x600"  : $w800++;break;
    case "1280x800" : $w1280_8++;break;
    case "1440x900" : $w1440++;break;
    case "1680x1050": $w1680++;break;
    case "1280x960" : $w1280_9++;break;
    case "1280x976" : $w1280x976++;break;
    case "1920x1200": $w1920x1200++;break;
    case "2304x1024": $w2304++;break;
    case "2560x1024": $w2560x1024++;break;
    case "n.a."     : $wna++;break;
    default         : $wother++;//echo $arr_z[4];
   }
  }
 }
 echo"<pre>";
 echo"Pageimpressions:\t$arrsize\n";
 echo"Unterschiedliche User:\t$cnt\n";
 echo"\n<b>Bildschirmauflösungen</b>\n";
 if($w640>0)		echo"  640x480         $w640\n";
 if($w800>0)		echo"  800x600         $w800\n";
 if($w1024>0)		echo"  1024x768        $w1024\n";
 if($w1152>0)		echo"  1152x864        $w1152\n";
 if($w1280_8>0)		echo"  1280x800        $w1280_8\n";
 if($w1280_9>0)		echo"  1280x960        $w1280_9\n";
 if($w1280x976>0)	echo"  1280x976        $w1280x976\n";
 if($w1280>0)		echo"  1280x1024       $w1280\n";
 if($w1440>0)		echo"  1440x900        $w1440\n";
 if($w1400>0)		echo"  1400x1050       $w1400\n";
 if($w1680>0)		echo"  1680x1050       $w1680\n";
 if($w1600>0)		echo"  1600x1200       $w1600\n";
 if($w1920x1200>0)	echo"  1920x1200       $w1920x1200\n";
 if($w2304>0)		echo"  2304x1024       $w2304\n";
 if($w2560x1024>0)	echo"  2560x1024       $w2560x1024\n";
 if($wother>0)		echo"  andere          $wother\n";
 if($wna>0)		echo"  n.a. (kein JS?) $wna\n";
 echo'</pre>';
Das ist zweifelsfrei keine ideale Lösung, denn bei jeder anderen Bildschirmauflösung müßte man erneut das Statistikscript anfassen und mit der Zeit wird das alles doch recht unübersichtlich. Besser geht es mit einem Arrays für die Bildschirmauflösungen oder alternativ einer Datenbank-Tabelle. Aber zur Veranschaulichung und Übung, wie man auch umfangreiche Fallunterscheidungen machen kann, ist dieses Beispiel doch ganz brauchbar ;)
Seite ist Bestandteil von proteino.de
Programmierung php