المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [درس] عمل المتواجدون الان بطريقة سهلة وعملية


galbdz.com
07-16-2010, 05:38 PM
السلام عليكم ورحمة الله وبركاته
اعزائي رواد قسم لغات البرمجة .. اسأل الله ان يكون الجميع بخير وصحة وسلامة
درسنا لليوم هو عن المتواجدون الان في الموقع
الدرس من ترجمتي فقط وهو من موقع phpeasystep بتصرف


متطلبات الدرس:

جدول في قاعدة البيانات وظيفته هو تخزين بيانات المتواجدون الان لكي يتسنى لنا حساب عددهم.
ملف واحد php ولنسميه online.php

الجانب النظري:
فكرة عمل المتواجدون الان قد تبدو للوهلة الاولى معقدة نوعا ما.. او انها بحاجة لبرمجة كثيرة وخبرة عالية للحصول عليها. ولكن الحقيقة انها اسهل من ذلك بكثير. الفكرة انه يتم فحص جلسة او ip الزائر ويتم مقارنته مع السجلات في القاعدة. اذا وجدناه نحدث الزمن فقط.. واذا لم نجده نقوم بتخزين بياناته في الجدول لنقوم لاحقا بحساب عدد السجلات التي هي بدورها تعني عدد المتواجدين الان في صفحة الموقع.
بنية الجدول:
CREATE TABLE `user_online` (
`session` char(100) NOT NULL default '',
`time` int(11) NOT NULL default '0'
) TYPE=MyISAM;
<?
session_start();
$session=session_id();
$time=time();
$time_check=$time-600; //SET TIME 10 Minute
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="user_online"; // Table name
// Connect to server and select databse
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name WHERE session='$session'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count=="0"){
$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
$result1=mysql_query($sql1);
}
else {
"$sql2=UPDATE $tbl_name SET time='$time' WHERE session = '$session'";
$result2=mysql_query($sql2);
}
$sql3="SELECT * FROM $tbl_name";
$result3=mysql_query($sql3);
$count_user_online=mysql_num_rows($result3);
echo "User online : $count_user_online ";
// if over 10 minute, delete session
$sql4="DELETE FROM $tbl_name WHERE time<$time_check";
$result4=mysql_query($sql4);
mysql_close();
// Open multiple browser page for result
?>
<div align="right">http://www.phpeasystep.com/imgs/db_user_online.gif

<div align="right"><font color="blue"><u>الكود:</u></font></div>
</div>
شرح الكود:
session_start();

[RIGHT]$session=session_id();
$time=time();
$time_check=$time-600; //SET TIME 10 Minute
الكود سهل قام ببداية الجلسة وتسجيلها ... ووضع الوقت الحالي في متغير سماه time وحدد متغير اخر وهو المدة التي يبقي الزائر فيها اونلاين .. وبعد انقضاءها يلغى الزائر
يعني لو الزائر اخر حركة تحركها كانت في الساعة العاشرة والنصف .. عند العاشرة والاربعين يتم الغاءه سجله
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="user_online"; // Table name
// Connect to server and select databse
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");

هنا ايضا سهلة.. اتصال عادي بقاعدة البيانات . يجب عليك تغييرها كما يناسبك او تعمل بدلا منها انكلود للكونفيج اللي عندك.
$sql="SELECT * FROM $tbl_name WHERE session='$session'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count=="0"){
$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
$result1=mysql_query($sql1);
}
else {
"$sql2=UPDATE $tbl_name SET time='$time' WHERE session = '$session'";
$result2=mysql_query($sql2);
}
هنا قام بعمل استعلام يبحث في الجدول عن الاعضاء الذين لهم نفس الجلسة يعني يبحث هل الزائر متواجد من قبل ام لا.. في حال كان متواجد يقوم بتحديث الوقت للوقت الحالي. اما في حال لم يكن متواجد فانه ينشئ له سجل في القاعدة كزائر جديد
$sql3="SELECT * FROM $tbl_name";
$result3=mysql_query($sql3);
$count_user_online=mysql_num_rows($result3);
echo "User online : $count_user_online ";
// if over 10 minute, delete session
$sql4="DELETE FROM $tbl_name WHERE time<$time_check";
$result4=mysql_query($sql4);
mysql_close();
هنا قام بحساب عدد السجلات في الجدول والتي تمثل عدد المتواجدين الان في الموقع وقام بطباعتها وهو المطلوب
وثم قام بحذف جميع السجلات التي مضى على اخر نشاط لها 10 دقائق وبالتالي الزوار القديمين تحذف سجلاتهم

وثم قام بانهاء الاتصال بقاعدة البيانات

ودمتم سالمين

ahmed
08-03-2010, 09:36 AM
يسلمو على الشرح الوافي

galbdz.com
08-03-2010, 04:09 PM
يسلمو على الشرح الوافي
الله يسلمك أخي

ملكة الخيال
09-19-2010, 09:51 AM
يسلموووووو ع الشرح المميز