Hi i wonder how i can check if user is online or not, when i login user i put time() in database.
This stores ip in other table, but what if user browser crash ? He will still be online. ( BTW i found this tutorial on some page its not mine code. )
So what i need to show me if user is online or not. So if user dont do nothing on any page on website or crash after lets say 5 min show him like offline.
Thanks in advance.
<?php
//server info here
$server = "localhost";
$db_user = "root";
$db_pass = "";
$database = "test";
$timeoutseconds = 300;
//this is where PHP gets the time
$timestamp = time();
$timeout = $timestamp - $timeoutseconds;
$mysqli = new mysqli($server, $db_user, $db_pass, $database);
//insert the values
$insert = "INSERT INTO useronline VALUES (?, ?, ?)";
$stmt = $mysqli->prepare( $insert );
$stmt->bind_param( 'iss', $timestamp, $_SERVER['REMOTE_ADDR'],$_SERVER['PHP_SELF'] );
if(!$stmt->execute()) {
print "Useronline Insert Failed > ";
}
//delete values when they leave
$delete = "DELETE FROM useronline WHERE timestamp < ?";
$stmt = $mysqli->prepare( $delete );
$stmt->bind_param( 'i', $timeout );
if(!$stmt->execute()) {
print "Useronline Delete Failed > ";
}
//grab the results
$result = "SELECT DISTINCT ip FROM useronline WHERE file = ?";
$stmt = $mysqli->prepare( $result );
$stmt->bind_param( 's', $_SERVER['PHP_SELF'] );
if(!$stmt->execute()) {
print "Useronline Select Error > ";
}
//number of rows = the number of people online
$user = $stmt->num_rows;
//spit out the results
$mysqli->close();
if($user == 1) {
print("$user user online\n");
} else {
print("$user users online\n");
}
?>