Я хочу, чтобы показ регистрировался онлайн-пользователями на моем сайте, например, Members Online: 102
. Я не понимаю, как это сделать. Существует ли метод подсчета сеанса или любой другой метод для достижения этого результата. Я могу сделать это, используя столбец 0 и 1 в таблице базы данных во время входа в систему и выхода из системы, но это не поможет, когда пользователь напрямую закрывает браузер и выходит из сеанса. Это настоящая проблема. Пожалуйста, помогите мне, как это сделать. Для любого экземпляра я просто использую свой сценарий входа и выхода.
Сценарий выхода
<?php session_start(); if(isset($_SESSION["zoranelogin"])){ unset($_SESSION["zoranelogin"]); header("Location: login.php"); } ?>
с<?php session_start(); if(isset($_SESSION["zoranelogin"])){ unset($_SESSION["zoranelogin"]); header("Location: login.php"); } ?>
Скрипт входа
<?php session_start(); if(isset($_SESSION['zoranelogin'])){ header('Location: dashboard.php'); } include'config/db.php'; $msg = null; $date = date('Ymd H:i:s'); $uname = (!empty($_POST['uname']))?$_POST['uname']:null; $pass = (!empty($_POST['pass']))?$_POST['pass']:null; $mpass = (!empty($_POST['pass']))?md5($_POST['pass']):null; if(isset($_POST['login'])){ $chklogin = "SELECT * FROM members WHERE mem_uname = :uname AND mem_pass = :pass"; $chklogiq = $pdo->prepare($chklogin); $chklogiq->bindValue(':uname', $uname); $chklogiq->bindValue(':pass', $mpass); $chklogiq->execute(); $checklgn = $chklogiq->rowCount(); $fetch = $chklogiq->fetch(); if($checklgn > 0){ session_start(); $_SESSION['zoranelogin'] = $fetch['mem_id']; header("Location: dashboard.php"); }else{ $msg = "<div class='message-error'>Username and Password are incorrect. Please try again!</div>"; } } ?>
в<?php session_start(); if(isset($_SESSION['zoranelogin'])){ header('Location: dashboard.php'); } include'config/db.php'; $msg = null; $date = date('Ymd H:i:s'); $uname = (!empty($_POST['uname']))?$_POST['uname']:null; $pass = (!empty($_POST['pass']))?$_POST['pass']:null; $mpass = (!empty($_POST['pass']))?md5($_POST['pass']):null; if(isset($_POST['login'])){ $chklogin = "SELECT * FROM members WHERE mem_uname = :uname AND mem_pass = :pass"; $chklogiq = $pdo->prepare($chklogin); $chklogiq->bindValue(':uname', $uname); $chklogiq->bindValue(':pass', $mpass); $chklogiq->execute(); $checklgn = $chklogiq->rowCount(); $fetch = $chklogiq->fetch(); if($checklgn > 0){ session_start(); $_SESSION['zoranelogin'] = $fetch['mem_id']; header("Location: dashboard.php"); }else{ $msg = "<div class='message-error'>Username and Password are incorrect. Please try again!</div>"; } } ?>