Per Cookie aus der Statistik
10.01.2010 in: Browser, Interna, PHP und Webdesign
Letzte Änderung: 17.01.2010, 15:05 Uhr.
Dies sei als Ergänzung des Artikels »Wie man sich selbst aus der eigenen Statistik heraushält« verstanden. Dort habe ich einen angepaßten User-Agent vorgeschlagen.
Bernhard Häussner hat ein sehr gute Alternative genannt: Einen besonderen HTTP-Header. Nun, genau dafür eignen sich Cookies gut.
Das könnte so aussehen: Man legt sich irgendwo eine Datei hin, die das spezielle Cookie erzeugt und fragt dieses später ab, wenn man den Tracking-Code einbaut.
<?php /** * Setzt ein Cookie, das den Benutzer identifiziert. */ header('Content-Type: text/html;charset=utf-8
'); // Wenn man auch Subdomains erfassen will, schreibe man ».example.com« $domain = $_SERVER['HTTP_HOST
']; // Passwort-Hash (md5). Bitte ändern! $password = '5319bef941e8a2099c98011b799c56c1
'; // krafutzel // Höchstmöglicher Wert des UNIX timestamps = 19. 01. 2038, 03:14:07 $expires = 2147483647; // Wie soll das Cookie heißen? $cookiename = 'excludeme
'; $buttontext = array('Cookie setzen
', 'Cookie löschen
'); $now_button = $buttontext[(isset ($_COOKIE[$cookiename]) ? 1 : 0)]; $info = FALSE; if ( 'POST
' == $_SERVER['REQUEST_METHOD
'] ) { if ( !isset ( $_POST['pass
'] ) or ( md5($_POST['pass
']) != $password ) ) { $info = '<p>Gib das richtige Passwort an.
'; } if ( !isset ( $_POST['action
'] ) ) { $info = '<p>Drück den Button!
'; } // Cookie löschen if ( $buttontext[1] == $_POST['action
'] ) { $expires = time() - 3600; $info = '<p>Cookie wurde gelöscht.
'; } // Cookie anlegen elseif ( $buttontext[0] == $_POST['action
'] ) { $info = '<p>Cookie wurde angelegt.
'; $now_button = $buttontext[1]; } setcookie($cookiename, 1, $expires, '/
', $domain, FALSE, TRUE); } ?> <!Doctype html> <title>Keksdose</title> <?php // Feedback $info and print $info; ?> <form method="POST
" action="<?php print $_SERVER['REQUEST_URI
']; ?>"> <label for="pass
">Passwort:</label> <input required name="pass" id="pass
" type="password
" size="20
" autofocus> <input type="submit
" name="action
" value="<?php echo $now_button; ?>"> </form> <?php if ( isset ( $_COOKIE[$cookiename] ) ) { print '<h2>All deine Cookies für diese Seite:</h2><pre>
' . var_export($_COOKIE, TRUE) . '</pre>
'; }
Jetzt bindet man den Tracking-Code nur dann ein, wenn das Cookie fehlt – deshalb empfehle ich, den Cookienamen anzupassen.