صفحه اصلیدرباره ماخدماتفن آوري هانمونه كارهامشتریانمقالاتتماس با ما
 
 
گروه نرم افزاري وبيليكس > مقالات > نمايش تعداد كاربران online بوسيله PHP و MySQL
نمايش تعداد كاربران online بوسيله PHP و MySQL
پي.اچ.پي (PHP)

امروزه در بسياري از سايتهاي اينترنت مي توان مشخصات كاربراني كه در حال مشاهده صفحات سايت مي باشند (و يا حداقل تعدا كاربران (online) را مشاهده نمود). در اين مقاله سعي داريم در ارتباط با نحوه انجام اين كار بوسيله زبان PHP و با استفاده از بانك اطلاعاتي MySQL بپردازيم و در ابتدا در ارتباط با الگوريتم چگونگي انجام اين كار بحث خواهيم كرد.

همانطور كه مي دانيد هر يك از كاربران اينترنت داراي يك آدرس منحصر به فرد (به نام IP) مي باشند. ما نيز براي فهميدن تعداد كاربران online از همين آدرس به عنوان مشخصه هر كاربر استفاده مي كنيم. از طرفي از آنجايي كه بعد از ارسال كامل هر صفحه براي كاربر ارتباط بين كاربر و سرويس دهنده از بين مي رود نمي توان از اينكه آيا كاربر هنوز در حال مشاهده آخرين صفحه اي كه از سايت دريافت كرده مي باشد و يا نه، اطمينان حاصل كرد. به همين دليل براي انجام اين كار از يك پيش فرض زماني استفاده مي كنيم. به اين صورت كه فرض مي كنيم هر يك از كاربران سايت هر صفحه اي را كه در يافت مي كند، آنرا به مدت چند دقيقه (در اين مثال ۵ دقيقه) مشاهده مي كند. حال اگر قبل از سپري شدن اين زمان كاربر درخواست صفحه ديگري را ارسال نمايد به اين معنا است كه اين زمان بايد مجددا براي مدت ۵ دقيقه تمديد گردد و در غير اين صورت مي توان اين طور تصور نمود كه كاربر از سايت خارج شده است. و در پايان نيز به اين نكته اشاره مي كنم كه براي نگهداري و بازيابي اطلاعات مربوط به كاربران از بانك اطلاعاتي MySQL استفاده مي كنيم. حال بعد از اطلاع از نحوه انجام اين كار مراحل عملي براي انجام اين كار را بترتيب مرور خواهيم نمود.

در ابتدا بايد با استفاده از نرم افزارهاي موجود براي مديريت بانكهاي اطلاعاتي MySQL مانند phpMyAdmin در بانك اطلاعاتي، table مورد نياز را ايجاد نمود. اين table (كه در اين مثال با نام visitors ايجاد شده و مورد استفاده قرار مي گيرد) داراي سه فيلد (براي نگهداري ادرس IP، صفحه در حال مشاهده و زمان ارسال در خواست) مي باشد. بوسيله دستورات SQL زير مي توانيد اين table را ايجاد نماييد.

CREATE TABLE `visitors` (
`time` varchar(10) default NULL,
`page` varchar(255) default NULL,
`ip` varchar(255) default NULL
) TYPE=MyISAM;


در مرحله بعد گفتيم كه از آدرس IP به عنوان مشخصه مورد استفاده در شناسايي كاربران استفاده خواهيم نمود. براي اين كار بايد ابتدا بوسيله PHP، آدرس IP بازديد كننده را شناسايي نمود. در كد زير تابعي به زبان PHP قرار دارد كه با استفاده از آن مي توانيد آدرس IP كاربري را كه در خواست مشاهده صفحات سايت را داده است بدست آوريد.

<?php
function GetIP() {
  return $_SERVER["REMOTE_ADDR"];
}
?>


و در مرحله نهايي بايد با استفاده از بانك اطلاعاتي مشخص كنيم كه آيا اين كاربر براي اولين بار مراجعه نموده است و يا قبل از زمان در نظر گرفته شده (۵ دقيقه در اين مثال) درخواست ديگري داده است؟ و همچنين اطلاعات مربوط به اين درخواست را در بانك اطلاعاتي ذخيره كنيم. كد زير كه به زبان PHP نوشته شده است اين كار را انجام خواهد داد.

<?php
function WriteVisitor($PAGE) {
  $ip = GetIP(); $time = time() - 300;
  DB_Execute("DELETE FROM `visitors` WHERE ((`ip` = . $ip . ) OR (`time` < . $time . ))");

  $time = time();
  DB_Execute("INSERT INTO `visitors` VALUES ('" . $time . "', '" . $PAGE . "', '". $ip . "')");
}
?>

در اين تابع براي انجام queryهاي بانك اطلاعاتي از تابعي با نام DB_Execute استفاده شده است كه كد آن را به زبان PHP در زير مشاهده مي نماييد.

<?php
$DATABASE = array (
  "server" => "localhost",
  "port" => "3306",
  "username" => "root",
  "password" => "",
  "database" => "WEBILIX"
);

function DB_Execute($query) {
  global $DATABASE;

  $DBLINK = mysql_connect($DATABASE["server"] . ":" . $DATABASE["port"], $DATABASE["username"], $DATABASE["password"]);
  mysql_select_db($DATABASE["database"], $DBLINK); $result = mysql_query($query);
  return $result;
}
?>


به اين نكته توجه داشته باشيد كه براي استفاده از اين تابع بايد حتما مشخصات مربوط به بانك اطلاعاتي خود را در اين كد تغيير دهيد.

حال به فرض آنكه در سايت صفحه اي با نام page.php داريد و همچنين كدهاي PHP نوشته شده در مطالب قبل را در يك فايل به نام visitors.php ذخيره نموده ايد با استفاده از كد زير خواهيد توانست مشخصات مربوط به درخواست كاربران براي مشاهده اين صفحه را ثبت نماييد.

<?php
  include "./visitors.php";
  WriteVisitor("page.php");
?>


و براي نوشتن تعداد كاربراي online نيز مي توانيد كد زير را در صفحات سايت قرار دهيد.

<?php
$DBLINK = mysql_connect($DATABASE["server"] . ":" . $DATABASE["port"], $DATABASE["username"], $DATABASE["password"]);
mysql_select_db($DATABASE["database"], $DBLINK);
$result = mysql_query("SELECT * FROM `visitors`");
$visitors_number = mysql_num_rows($result);

if($visitors_number == 1) print($visitors_number . "user online");
else print($visitors_number . " users online");
?>
 



 
 
© 2012 - WEBILIX websolutions