كيف يمكن التحقق من عدد المستخدمين النشطين حاليًا على الموقع باستخدام PHP؟
السؤال:
رقم السؤال: 577
الإجابة:
بسم الله والصلاة والسلام على رسول الله،
يمكنك التحقق من عدد المستخدمين النشطين حاليًا في جلسة معينة باستخدام PHP مع تخزين الجلسات (Sessions) في قاعدة بيانات. سأوضح لك الطريقة الأساسية لتنفيذ ذلك:
الخطوات:
- تخزين معلومات الجلسات في قاعدة بيانات.
- تحديث حالة المستخدم عند تسجيل الدخول والخروج.
- حساب عدد المستخدمين النشطين.
1. إعداد قاعدة البيانات
CREATE DATABASE user_sessions;
USE user_sessions;
CREATE TABLE sessions (
session_id VARCHAR(128) PRIMARY KEY,
user_id INT NOT NULL,
last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
2. كود التحقق وإدارة الجلسات (session_manager.php)
<?php
// إعداد اتصال قاعدة البيانات
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_sessions";$conn = new mysqli($servername, $username, $password, $dbname);
// التحقق من الاتصال
if ($conn->connect_error) {
die("فشل الاتصال: " . $conn->connect_error);
}// بدء الجلسة
session_start();// تحديد معرف المستخدم (مثال: 1)
$user_id = 1; // هذا يجب تغييره بناءً على المستخدم الفعلي// تحديث أو إدخال الجلسة في قاعدة البيانات
$session_id = session_id();
$sql = "REPLACE INTO sessions (session_id, user_id, last_activity) VALUES ('$session_id', '$user_id', NOW())";
$conn->query($sql);// حذف الجلسات القديمة (مثلاً، الجلسات غير النشطة لمدة 5 دقائق)
$conn->query("DELETE FROM sessions WHERE last_activity < NOW() - INTERVAL 5 MINUTE");// حساب عدد المستخدمين النشطين
$result = $conn->query("SELECT COUNT(*) AS active_users FROM sessions");
$row = $result->fetch_assoc();
$active_users = $row['active_users'];echo "عدد المستخدمين النشطين حاليًا: " . $active_users;
$conn->close();
?>
شرح الكود
- تحديث الجلسة: يتم تحديث أو إدخال الجلسة في جدول قاعدة البيانات باستخدام REPLACE INTO.
- تنظيف الجلسات القديمة: يتم حذف الجلسات غير النشطة لأكثر من 5 دقائق.
- حساب المستخدمين النشطين: يتم استخدام استعلام COUNT لحساب الجلسات النشطة حاليًا.
ملاحظة:
- يمكنك تعديل الفترة الزمنية لحذف الجلسات غير النشطة وفقًا لاحتياجات موقعك.
- تأكد من أن كل مستخدم يحصل على user_id فريد عند تسجيل الدخول.