Необходимо разработать систему блокирования доступа к странице в режиме онлайн, для этого я использую следующую функцию:
function ONLine($mixed,$userID)
{
if ($mixed==-1)
{
$ret=array();
$r=mysqlq("SELECT object,user_id FROM online WHERE user_id!=$userID",0,1);
while($c=mysql_fetch_array($r,MYSQL_NUM))
{
$ret[$c[1]]=$c[0];
}
return $ret;
}
else
{
mysqlq("DELETE FROM online WHERE last_access<".(time()-125)." or session_id=\'".session_id()."\'");
mysqlq("INSERT INTO online (session_id,last_access,user_id,object) VALUES(\'".session_id()."\',".time().",".$userID.",\'".addslashes(serialize($mixed))."\');");
}
}
Она используется как для записи так и для чтения,
где
$userID – это индификатор залогиненого пользователя
$mixed – это ассоциативный массив.
Использую ее следующим образом в index.php:
В начале
$O=ONLine(-1,$user->DATA[\'Id\']);
foreach ($O as $k=>$v) $ONLINE[$k]=@unserialize($v);
В конце :
ONLine($ONLINECURENT,$user->DATA[\'Id\']);
В коде проверяю следующей схемой:
$GLOBALS[\'ONLINECURENT\'][\'QUOTA\']=$m5;
//$m5-особый параметр , который уникальный для каждой странице
if (sizeof(@$ONLINE))
foreach ($ONLINE as $k=>$v)
{
if (@array_key_exists(\'QUOTA\',$v))
if ($v[\'QUOTA\']==$m5)
{
Die(‘Доступ закрыт!’);
// BLA-BLA-BLA-BLA
}
}
Но это схема работает криво.
Буду благодарен за помощь в решении проблемы!