In process of learning Core php with development of simple cms im stuck with user online process. im trying to count user online. somebody tod me thats it will be very easy with ajax but for now i want do it with php only.
some how i have achieve the user online at the moment but if i Login with user-(1) and log out user-(1) and again login user-(2) from same browser, user-(1) still shown online. And main use is that when i logout, user is still shown online still the time set (i have set 5min time for in active user). how can i send user offline after user is logout so that i dont to wait 5min to see him offline.
Below is my code what i have done till now.
//page to display user online
<?php include "../includes/db.php";
php ob_start();
php session_start();
?>
<?php
$user_id = $_SESSION['user_id'];
$username = $_SESSION['syner'];
$session_id = session_id();
$date = date('d-m-y');
$time = time();
$time_out_session = 300;
$time_out = $time - $time_out_session;
$query = "SELECT * FROM online_users WHERE session_id = '$session_id' AND user_id = '$user_id'";
$send_query = mysqli_query($connection, $query);
if(!$send_query){
die("Send Query Failed. " .mysqli_error($connection));
}
$count = mysqli_num_rows($send_query);
if($count == NULL){
$session_insert =
"INSERT INTO online_users(user_id,username,session_id,time,date)
VALUES($user_id,'$username','$session_id','$time',now() )";
$my_query = mysqli_query($connection, $session_insert);
if(!$my_query){
die("Count Query Failed. " .mysqli_error($connection));
}
}
$st=mysqli_query($connection, "UPDATE online_users SET status='ON', time = '$time' WHERE session_id = '$session_id' ");
if(!$st){
die("Set ON Query Failed. " .mysqli_errormysqli_error($connection));
}
$qt=mysqli_query($connection, "SELECT user_id FROM online_users WHERE status = 'ON' AND time > '$time_out' ");
$count_user = mysqli_num_rows($qt);
$ut=mysqli_query($connection, "UPDATE online_users SET status='OFF' WHERE time < '$time_out'");
if(!$ut){
die("Set OFF Query Failed. " .mysqli_errormysqli_error($connection));
}
?>
<h1>User Online:<?php echo $count_user; ?> </h1>
Code For Log out page:
<?php
session_start();
$q = mysqli_query($connection,"UPDATE online_users SET status='OFF' WHERE session_id='$session_id' ");
session_unset();
session_destroy();
//header("Location: ../index.php");
?>
User is still shown online even after logout… how i show user offline once he is logout so that i dont have to wait 5min.