toscho.design
Redaktion und schwer geprüftes Webdesign aus Halle (Saale)

Per Cookie aus der Statistik

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.

Was sagst du dazu?

Hinweise zum Datenschutz
Nur das ist Pflicht, der Rest … nicht. Kommentare mit 4 oder mehr Links prüfe ich erst.
Bitte maskiere < und > mit und , sonst werden sie gefressen.