Если вы хотите отслеживать сеанс пользователя, вам нужно сохранить данные в их примере браузера (cookie).
Синтаксис для PHP
setcookie(name, value, expire, path, domain, secure, httponly);
Требуется только имя параметра. Все остальные параметры являются необязательными.
вы можете использовать md5 или любую технику хеширования для маскировки ваших данных.
Но, если вы не хотите хранить данные в их браузере, вы можете создать временную базу данных для текущего сеанса пользователя. Всякий раз, когда пользователь создает какое-либо событие (например, нажав кнопку или запросить веб-страницу), вы можете искать базу данных, если он уже отсутствует.
После удаления данных вы можете удалить временные данные пользователя для экономии места.
Edit:
Попробуйте использовать это вместо
$datetime = date("Y-m-d H:i:s");
$timestamp = strtotime($datetime); //in milliseconds
mysqli_query($conn,"UPDATE users SET logout_timestamp = '$timestamp ' WHERE username = '$_SESSION[the_username]'");
Чтобы получить часы / мин / с, сначала загрузите сохраненную временную метку пользователя в базу данных, а затем также получите текущую временную метку.
//set maximum session (global variable), example 30 minutes
$_MAXIMUM_SESSION_IN_SEC = 60*30;
$timestamp_difference = $new_timestamp - $old_timestamp
if($timestamp_difference/1000 > $_MAXIMUM_SESSION_IN_SEC)
{
//logout here
}
else
{
//remaining time for display
$seconds= floor((timestamp_difference % (1000 * 60)) / 1000);
$minutes= floor((timestamp_difference % (1000 * 60 * 60)) / (1000 * 60));
$hour = floor((timestamp_difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
//echo here
}
Так как вы говорите о клиентской стороне. Добавьте JavaScript. Попробуйте это.
<script>
// fetch data from sql
var oldTimestamp = <?php echo $timestamp_from_sql; ?> ;
// Update the every 1 second
var x = setInterval(function() {
// Get current timestamp
var currentTimestamp = Date.now();
// Find timestamp difference
var timestamp_difference = currentTimestamp - oldTimestamp;
// Time calculations for hours, minutes and seconds
var hours = Math.floor((timestamp_difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((timestamp_difference % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((timestamp_difference % (1000 * 60)) / 1000);
// Display the result in the element with id="demo"
document.getElementById("demo").innerHTML = hours + "h "
+ minutes + "m " + seconds + "s ";
// If above the session limit, logout the user
if (distance > maximumSessionInSec) {
clearInterval(x);
document.getElementById("demo").innerHTML = "SESSION EXPIRED";
//add other code here to reload the page
//or add ajax code to update files in the server
}
}, 1000);
</script>