Hallo,
ich möchte den benutzern meiner website nach einer bestimmten zeit (sagen wir mal 2 stunden) eine neue session_id() geben, allerdings nur wenn sie 2 stunden inacktiv waren... das ganze ist an einem counter für webstats gekoppelt um zu sehen auf welche seiten der benutzer wie lange zeit verbringt usw...
mein bisherriger lösungsweg sieht etwa so aus:
function counter(){
$user_ip = $_SERVER['REMOTE_ADDR'];
$sid = session_id();
odb(); //verbindung zur mysql datenbank
$qry = 'SELECT
*
FROM
counter
WHERE
ip="'.$user_ip.'"
AND
sid="'.$sid.'"
LIMIT
1';
$res = mysql_query($qry)or die(mysql_error());
$check_user = mysql_num_rows($res);
$data = mysql_fetch_array($res);
cdb(); //verbindung zur mysql datenbank trennen
if ($check_user == 0){
counter_create($data);
}
if ($check_user == 1){
counter_update($data);
}
}
[/PHP]
die function counter_create() funktioniert soweit einwandfrei und trägt unteranderem ein:
-eine ID für den benutzer
-session_id()
-acktueller timestamp
-timestamp + 60*60*2 (timestamp 2 stunden in der zuckunft)
und einige für hier belanglose dinge
bei der funktion counter_update() hab ich allerdings ein kleines problem in den ersten zeilen:
[PHP]
function counter_update($data) {
$ts = time();
if($data['timestamp_kill'] < $ts){
$sid = session_id();
echo $sid;
session_regenerate_id(true);
$sid = session_id();
echo " " .$sid;
echo " kill";
}
.
.
.
.
.
.
also in die schleife geht er rein, ich hab natürlich den timestamp nur auf 10 sekunden begrenzt um das zu kontrolieren, aber wie man sieht weis ich hier einfach nicht weiter... ich möchte halt nach 2 stunden inaktivität eine neue session_id() vergeben, nur funktioniert das weder mit:
session_destroy();
session_regenerate_id(true);
bei der 2. version schmeisst er mir zusätzlich noch diese fehlermeldung an den kopf:
währe um nen codesnippet nicht böse oder anregungen wie ich das problem lösen könnte!
die session_id() übergebe ich überrigens nicht in der adresszeile, und möchte ich möglichst auch nicht!
danke schonmal im vorraus!