شرح الفكرة السابقه بالكود بعد تجربتها ..
الفكرة هي عند دخول اليوزر طبعاً سيتم تسجيل دخوله عن طريق الجلسة ، في هذا الوقت يتم تسجيل وقت الدخول بنفس جدول اليوزر .. بحقل يسمى مثلا lastlogin وحقل آخر بأسم lastonline لتسجيل وقت آخر اتصال له .. ويتم تحديث هذا الحقل عند القيام بالتصفح .. حيث عند الانتقال من صفحة إلى صفحة يتم تحديث الحقل lastonline بالوقت الحالي حين فتح الصفحة التالية ..
وقبل هذا التحديث لابد من وضع شرط ..
إذا كان الوقت الحالي - الوقت المطلوب لإنتهاء الجلسة (أكبر من ) الوقت المسجل في lastonline.
قم بإنهاء الجلسة (الذهاب إلى logout ) والانتقال لصفحة تسجيل الدخول .
إن شاء الله يكون الشرح تمام
كود PHP:
//////////////بعد تحقق شرط عملية تسجيل الدخول ؟
///يتم وضع هذا الكود
session_start();
$_SESSION['name_of_SESSION'] = $any['any'];
///تسجيل رقم العضو في الجلسة بعد الحصول عليه من خلال الاستعلام الخاص بتسجيل الدخول
$_SESSION['user_id'] = $Sql['user_id_from_user_table'];
///الوقت الحالي بالثواني
$nowtime=time();
////تحديث آخر دخول للعضو في جدول اليوزر
$Sql2=mysql_query("UPDATE users SET lastonline = '$nowtime' WHERE user_id = '$Sql[user_id_from_user_table]'");
الكود السابق يوضع في حال تحقق شرط عملية تسجيل الدخول .. وتطبق نفس الفكرة في حال كان اليوزر وحيد يعني مافيه اكثر من يوزر يتم حذف رقم اليوزر ويعوض عنه بتحديث قيمة في جدول مخصص مثلا جدول الconfig يتم وضع قيمة lastonline فيه .. وتحديثها تلقائي بعد عملية الدخول ..
الكود الثاني :
كود PHP:
///بدأ الجلسة
session_start();
///التحقق من وجود عملية تسجيل
if(isset($_SESSION['name_of_SESSION'])) {
///الوقت بالثواني
$nowtime=time();
///الوقت ناقص 600 ثانية يعني 10 دقائق
$TimeTologout=$nowtime-600;
////استعلام عن قيمة آخر دخول في جدول اليوزر حتى يتم مقارنتها مع الوقت الحالي ناقص 10 دقائق
$lastinChi=mysql_query("SELECT lastonline From user_table Where user_id='$_SESSION[user_id]''");
$la=$lastinChi['lastonline'];
///شرط إذا كان الوقت المسجل في القاعدة اقل من الوقت الحالي ناقص 10 دقائق يتم حذف الجلسة وتسجيل الخروج
if ($la < $TimeTologout){
$_SESSION = array();
session_unset();
session_destroy();
echo= "نظراً لعدم قيامك بأي عمل لمدة 10 دقائق متواصلة فقد تم قطع الإتصال، فضلا قم بإعادة تسجيل الدخول";
exit();
}
else
////إذا لم يتحقق الشرط إذا يتم تحديث آخر دخول حتى لايتم الغاء الجلسة والعمل قائم فيها ولم يمر 10 دقائق ولم يتم فعل اي شي
{
///الوقت الحالي بالثواني
$nowtime=time();
///تحديث اليوزر للوقت الحالي
$Upd3=mysql_query("update user_table SET lastonline = '$nowtime' Where user_id='$_SESSION[user_id]'");
}
}
?>
يكون مثلا ملف بأسم timeout.php ، وفي كل انتقال من صفحة لصفحة يتم استدعاء الملف السابق timeout.php حتى يتم تحديثه
والكود يشرح نفسه ... :nice:
تحياتي