Pseudocode
So starte ich eine Session nur dann, wenn keine Suchmaschine daherkommt und auch kein Mailsammler (oder Code-Validator, oder oder oder)
Ich habe eine Tabelle für benutzer, eine für Benutzer, die momentan online sind (nötig, da mehr als ein Gast gleichzeitig online sein kann) und eine Tabelle für die Stasitistik.
In dieser Tabelle speichere Aktionen, die durchgeführt werden inklusiver User-ID, wie z. B. An-/Abmelden, Beiträge anlegen/editieren/freischalten/löschen/..., Vergessene Passwörter zusenden lassen, ...
Das funktioniert auch alles wunderbar, allerdings will ich auch nachvollziehen können, wann ein Gast die Seite betreten hat und auf welche Seite er initial gekommen ist (Startseite, Impressum, ...)
Ich mache also prinzipiell folgendes
In der Methode log_action wird dann der Eintrag in die Tabelle vorgenommen.
Dummerweise starte ich bei Suchmaschinen aber keine Session, so dass ich beim Aufruf der zweiten Seite durch die Suchmaschine nicht auf $_SESSION['guest_access_logged'] zugreifen kann, daher bekomme ich für jeden Aufruf jeder Seite einen neuen Eintrag und die Tabelle wird zugemüllt.
Wie kann ich einerseits dafür sorgen, dass Suchmaschinen keine Links mit Session-ID bekommen, andererseits aber nicht die Tabelle zumüllen?
PHP-Code:
function start_session() {
return no_search_engine() and no_mail_picker();
}
if (start_session()) {
session_start();
$sess_id = session_id();
} else $sess_id = 'NO SESSION';
Ich habe eine Tabelle für benutzer, eine für Benutzer, die momentan online sind (nötig, da mehr als ein Gast gleichzeitig online sein kann) und eine Tabelle für die Stasitistik.
In dieser Tabelle speichere Aktionen, die durchgeführt werden inklusiver User-ID, wie z. B. An-/Abmelden, Beiträge anlegen/editieren/freischalten/löschen/..., Vergessene Passwörter zusenden lassen, ...
Das funktioniert auch alles wunderbar, allerdings will ich auch nachvollziehen können, wann ein Gast die Seite betreten hat und auf welche Seite er initial gekommen ist (Startseite, Impressum, ...)
Ich mache also prinzipiell folgendes
PHP-Code:
if (!$_SESSION['logged_in'] and !$_SESSION['guest_access_logged']) {
$_SESSION['guest_access_logged'] = true;
$this->log_action('GUEST_ACCESS');
}
Dummerweise starte ich bei Suchmaschinen aber keine Session, so dass ich beim Aufruf der zweiten Seite durch die Suchmaschine nicht auf $_SESSION['guest_access_logged'] zugreifen kann, daher bekomme ich für jeden Aufruf jeder Seite einen neuen Eintrag und die Tabelle wird zugemüllt.
Wie kann ich einerseits dafür sorgen, dass Suchmaschinen keine Links mit Session-ID bekommen, andererseits aber nicht die Tabelle zumüllen?
EDIT:
Mir fiele nur ein, dass ich den Zeitpunkt des letzten GUEST_ACCESS von $_SERVER['REMOTE_ADDR'] auslese, wenn in $sess_id NO SESSION steht.
Wenn der nicht länger als x Minuten zurückliegt, dann gibt's nen neuen Eintrag, anderenfalls nicht
Kommentar