شما با استفاده از ip و ساعت و تاریخ می بایستی لیست آخرین بازدیدکنندگان سایت خود را در یک جدول ذخیره نمایید.
البته دقت نماید که به هنگام فراخوانی روتین مربوط به انجام این کار ip های تکراری را با ساعت جدید ذخیره نموده و همچنین مواردی )ip) هایی که ساعت ورود آن مثلا از یک دوره زمانی خاص (مثلا 5 دقیقه) بیشتر بود را حذف نمایید.
بدین صورت کاربر تکراری که از سایت شما بازدید می کند به علت داشتن آی پی تکراری دارای رکورد جدید نمی باشد وهمچنین کاربرانی که قبلا از سایت شما بازدیدکرده اند (به علت انجام عملیات حذف رکوردهایی که دارای ساعتی قبل از بازه (همان 5 دقیقه) شما هستند ) را از لیست حذف نمایید.
و نهایتا باید دقت نمایید که این لیست در حقیقت اعلام بازکنندگان آنلاین سایت شما در آن بازه زمانی است
نمونه کد برای انجام این کار:
-- ابتدا جدول ذیل را در دیتابیس خود ایجاد نمایید: (مثلا به نام users_online)
$query=mysql_query("CREATE TABLE `users_online`
(`visitor` VARCHAR( 15 ) NOT NULL ,`lastvisit` INT( 14 ) NOT NULL)");
و بعد در یک فایل جداگانه مثلا به نام onlinesql.php کد ذیل را ذخیره نمایید (که در این فایل عملیات مربوطه (توضیح اول تایپک) انجام گرفته و لیست کاربران آنلاین نمایش داده می شود)
$uo_sessionTime = 5; //length in **minutes** to keep the user online before deleting
//error_reporting(E_ERROR | E_PARSE);
$host_name= "localhost";
$user_db= "root";
$pass_db= "";
$db_name= "database_name";
$connect=mysql_connect($host_name,$user_db,$pass_d b) ;
$sel = mysql_select_db($db_name) ;
$uo_ip = $_SERVER['REMOTE_ADDR'];
//cleanup part
$uo_query = "DELETE FROM users_online WHERE unix_timestamp() - lastvisit >= $uo_sessionTime * 60";
mysql_query($uo_query);
//check/insert part
$uo_query = "SELECT lastvisit FROM users_online WHERE visitor = '$uo_ip'";
$uo_result = mysql_query($uo_query);
if(mysql_num_rows($uo_result) == 0) { //no match
$uo_query = "INSERT INTO users_online VALUES('$uo_ip', unix_timestamp())";
mysql_query($uo_query);
} else { //matched, update them
$uo_query = "UPDATE users_online SET lastvisit = unix_timestamp() WHERE visitor = '$uo_ip'";
mysql_query($uo_query);
}
//count part
if($uo_keepquiet == FALSE) {
$uo_query = "SELECT count(*) FROM users_online";
$uo_result = mysql_query($uo_query);
$uo_count = mysql_fetch_row($uo_result);
echo $uo_count[0];
}
//mysql_close();
البته پیشنهاد می کنم عملیات مربوطه به کانکت به دیتابیس را در یک فایل جداگانه (مثلا connect.php) قرار دهید و در تمام فایلهای که نیاز به انجام عملیات با دیتابیس دارد آن فایل را در ابتدا روتین موردنظر include نمایید.