Man kann die Unterscheidung für die Darstellung "Mobile" oder "Desktop" auf 2 Arten bewerkstelligen:
1) Eine eigene Seite für mobile Geräte mit Name mobile.php oder mobile.html
2) Unterschiedliche CSS im Sourcecode einbinden
Aber in beiden Fälle muss in der Desktop-Version die Steuerung eingebaut werden.
In der Mobile-Version ist das nicht umbedingt notwendig.
Steuerung mit PHP
<?php// Globale Variablen einlesen. Hier werden alle im Code verwendeten Variablen eingerichtetrequire('datensammlung.php');
// Wenn es Mobile ist weiterleiten. Das ist der Fall wenn im Useragent das Wort "Mobile" stehtif (strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile'))
{
echo'<script type="text/javascript"> window.location = "' . $verzeichnis . 'mobile.php"; </script>';
}
?>
Da der Zwischenstand gespeichert werden muss, geht das nur über PHP (JS lässt "schreiben" nicht zu)
<?php// um Fehlermeldungen zu vermeiden wird das Conterfile "counter.txt" initialisiert, ist aber nicht nötigif ( ! file_exists("counter.txt")) file_put_contents("counter.txt","0");
$counterstand = intval(file_get_contents("counter.txt"));
$counterstand++; // hochzählenfile_put_contents("counter.txt",$counterstand);
?>
Mehrfachklicks vermeiden
Um mehrfach klicks zu vermeiden, kann mit PHP die Sender-IP-Adresse abgefragt werden und mit der zuletzt benutzten verglichen werden.
Da am selben Router mehrere User hängen könnten, sollte auch der Useragent benutzt werden.
Mit der Fehlerquote, dass mehrere User am selben Router auch den gleichen Useragent haben könnten, kann man gut leben.
Besser wäre diese Steuerung mit dem SessionsCookie zu prüfen, dies ist aber ziemlich aufwändig, schon nur weil in PHP Cookies nur beim Seitenstart geschrieben werden können.
<?php// um Fehlermeldungen zu vermeiden wird das Speicherfile "ip.txt" initialisiert, ist aber nicht nötigif ( ! file_exists("ip.txt")) file_put_contents("ip.txt","Neu");
$client_ip = $_SERVER['REMOTE_ADDR'];
$client_ua = $_SERVER['HTTP_USER_AGENT'];
$userAlt = file_get_contents("ip.txt");
if($userAlt != $client_ip . $client_ua )
{
// Neuer Besuch. Somit darf gezält werden und der Besuch geloggt werden// *** Counter einrichten - Klickzähler ***// *** Besuch loggen ***file_put_contents("ip.txt", $client_ip . $client_ua);
}
?>
Logeinträge schreiben (Beispiel)
Man kann es halten wie man will, ich finde, dass die Informationen, die ich kennen will, genug sind.
Klicknummer, Datum, SenderIP, Useragent, evtl. aufrufende Seite, evtl. User, Gerät
<?php// Globale Variablen einlesen. Hier werden alle im Code verwendeten Variablen eingerichtetrequire('datensammlung.php');
// Wenn es Mobile ist weiterleiten. Das ist der Fall wenn im Useragent das Wort "Mobile" stehtif (strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile'))
{
echo'<script type="text/javascript"> window.location = "' . $verzeichnis . 'mobile.php"; </script>';
}
// Da mit dem Aufruf von mobile.php der Ablauf nicht mehr zurückgegeben wird, kann hier auf else verzichtet werden$client_ip = $_SERVER['REMOTE_ADDR'];
$client_ua = $_SERVER['HTTP_USER_AGENT'];
$userAlt = file_get_contents("ip.txt");
if($userAlt != $client_ip . $client_ua)
{
// Neuer Besuch. Somit darf gezählt werden und der Besuch geloggt werden// *** Klickzähler ***$counterstand = intval(file_get_contents("counter.txt"));
$counterstand++; // hochzählenfile_put_contents("counter.txt",$counterstand);
// *** Besuch loggen ***file_put_contents($logFile, $counterstand . " * " . date("Y-m-d H:i:s") . " * " . $client_ip . " * " . $_SERVER['HTTP_USER_AGENT'] . " * " . $_SERVER['HTTP_REFERER'] . " * " . $_SERVER['REMOTE_USER'] . " * Desk\n", FILE_APPEND) ;
file_put_contents("ip.txt", $client_ip . $client_ua);
}
?>
Logeinträge formatiert dargestellt
Letzter Eintrag wird als erster angezeigt.
Unformatiert dargestellt
Tabelle der Logeinträge-Darstellung erstellen
<table width=95% border=3><tr><th width=6%>POS</th><th width=10%>Datum<br>Zeit</th><th width=10% bgcolor='#55ff55'> User IP</th><th width=40%>User Agent</th><th width=20%>Herkunft Page</th><th width=8%>User</th><th width=6%>Typ</th></tr><?php$file = file_get_contents(log.txt);
$zeilen = explode("\n" ,$file);
for ($i=count($zeilen);$i>=0; $i--)
{
$azeile = explode(" * " ,$zeilen[$i]);
if (trim($azeile[0])<>"")
{
echo"<tr valign=top>";
for( $o = 0;$o <= 6; $o++)
{
if($o==2)
{
// Spezielle Zelle für einfaches auffinden des URL-Ursprungs. Braucht einer JS-Funktion aufruf(string url)// Gefordert ist eigentlich nur der 'else' Abschnitt um die Zellen mit Werte zu füllenecho" <td bgcolor='#99ff99' onclick='aufruf(\"$azeile[$o]\");'> $azeile[$o] </td>";
}
else
{
echo" <td>".$azeile[$o]." </td>";
}
}
echo"</tr>\n";
}
}
?></table>