Statistik: Login-Tracking auf pro-User-Deduplizierung umstellen

main_contact_id wird jetzt mitgespeichert + UNIQUE (login_date, main_contact_id).
Damit zählt ein User der sich mehrfach ein-/ausloggt trotzdem nur einmal pro Tag.
Im Chart bleibt nur die anonyme Tagessumme sichtbar.

ALTER TABLE stat_login_daily
  ADD COLUMN main_contact_id INT NOT NULL DEFAULT 0 AFTER login_date,
  ADD UNIQUE KEY uq_user_day (login_date, main_contact_id);

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 08:59:44 +02:00
parent 5c585caeba
commit 2e75ff7d59
2 changed files with 9 additions and 5 deletions

View File

@@ -1,6 +1,10 @@
<? <?
function track_anonymous_login() { function track_anonymous_login($contact_id) {
@mysqli_query($GLOBALS['mysql_con'], "INSERT INTO stat_login_daily (login_date) VALUES (CURDATE())"); $id = (int)$contact_id;
if ($id <= 0) return;
@mysqli_query($GLOBALS['mysql_con'],
"INSERT IGNORE INTO stat_login_daily (login_date, main_contact_id) VALUES (CURDATE(), $id)"
);
} }
support_login_listener(); support_login_listener();
@@ -45,7 +49,7 @@ function support_login_listener() {
$_SESSION["login_error"] = "Dieser Account wurde noch nicht freigeschalten."; $_SESSION["login_error"] = "Dieser Account wurde noch nicht freigeschalten.";
}else{ }else{
$_SESSION['login_id'] = $main_contact['id']; $_SESSION['login_id'] = $main_contact['id'];
track_anonymous_login(); track_anonymous_login($main_contact['id']);
header('location:/'); header('location:/');
} }
}else{ }else{

View File

@@ -10,7 +10,7 @@ require_once("intranet_functions.inc.php");
if (isset($_POST["fgztiknxbhhk"])) { if (isset($_POST["fgztiknxbhhk"])) {
$_SESSION['login_id'] = $_POST["fgztiknxbhhk"]; $_SESSION['login_id'] = $_POST["fgztiknxbhhk"];
track_anonymous_login(); track_anonymous_login($_POST["fgztiknxbhhk"]);
header('location:/'); header('location:/');
exit(); exit();
} }
@@ -74,7 +74,7 @@ if ($isAzure) {
// $sql_opt = "SELECT id FROM main_contact WHERE email='".$email_l."'"; // $sql_opt = "SELECT id FROM main_contact WHERE email='".$email_l."'";
$_SESSION['login_id'] = @mysqli_fetch_assoc($sql_opt)['id']; $_SESSION['login_id'] = @mysqli_fetch_assoc($sql_opt)['id'];
track_anonymous_login(); track_anonymous_login($_SESSION['login_id']);
header('location:/'); header('location:/');
}else { }else {
$_SESSION['login_id'] = 0; $_SESSION['login_id'] = 0;