Количество пользователей на сайте

Показывает количество посетителей, находящихся на сайте в данный момент.

Сейчас на сайте: 875 человек.

<?
session_start();
  
function getUsersOnline() {  
   $count = 0;  
  
   $handle = opendir(session_save_path());  
   if ($handle == false) return -1;  
  
   while (($file = readdir($handle)) != false) {  
       if (preg_match("/^sess/", $file)) $count++;  
   }  
   closedir($handle);  
  
   return $count;  
}
?>

Использование:

<?
    $usercount = getUsersOnline();
    echo  'Сейчас на сайте: <b>'.$usercount.'</b> человек.';
?>

Если Вы будуте переопределять путь, где хранятся сессии, то необходимо будет предусмотреть два момента:

  1. Защита каталога от угона сессий
  2. Удаление старых сессий

Защиту каталога можно сделать, создав файл .htaccess со следующим содержимым:

deny from all

А для удаления сессий можно использовать следующий скрипт, которым можно повесить на cron:

<?
echo "<br>удаляю старые сессии";
$path=session_save_path();
$dh = opendir( $path ) or die( "Не удалось открыть каталог ".$path );
$path.='/';
$df=date("Y-m-d", mktime(0, 0, 0, date("m")  , date("d")-1, date("Y")));    // храню сесии 1 день
while ( $f = readdir( $dh ) ) {
    if (substr($f,0,1)=='.') continue;
    if ( date("Y-m-d", filemtime($path.$f)) < $df )@unlink($path.$f);
}
closedir($dh);
?>

.