Тема уже поднималась в других ветках, немного повторюсь: не все возвращают HTTP_USER_AGENT. В результате показ ошибки как "искалке-пауку" об отсутствии переменной, так и получение мусора в виде файла error_log. Поэтому я бы немного оптимизировал. В оригинальном include/fm.class.php в коде:
CODE:/*
_OnlineLog функция ведет учет on-line пользователей
*/
function _OnlineLog($where,$privateID,$show = false) {
global $statvisit, $today;
$this->_IsSpider();
$output = array();
$expire = $this->_Nowtime - ($this->exbb['membergone'] * 60);
$agent = $_SERVER['HTTP_USER_AGENT'];
$sessid = md5($this->_IP.$agent);//ID в массиве онлайн
$status = (!defined('IS_ADMIN') && $this->user['status'] != 'sm' && in_array($this->user['id'],$this->_Moderators) ) ? 'mo' : $this->user['status'];
подправил строку:
CODE:$agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : '';
А уже в коде мода вместо:
CODE:$browser = 0;
$useragent = $_SERVER['HTTP_USER_AGENT'];
if(strpos($useragent,"MSIE") != false) $browser = 1;
if(substr_count($useragent,"Opera" ) != false) $browser = 2;
if(strpos($useragent,"Firefox") != false) $browser = 3;
if(strpos($useragent,"Netscape") != false) $browser = 4;
if(strpos($useragent,"Safari" ) != false) $browser = 5;
if(strpos($useragent,"Chrome" ) != false) $browser = 6;
$return['BROWSER'] = $browser;
записал:
CODE:$browser = 0;
if ($agent) {
// $useragent = $_SERVER['HTTP_USER_AGENT']; - уже "сидит" в $agent
if(strpos($agent,"MSIE") != false) $browser = 1;
if(substr_count($agent,"Opera" ) != false) $browser = 2;
if(strpos($agent,"Firefox") != false) $browser = 3;
if(strpos($agent,"Netscape") != false) $browser = 4;
if(strpos($agent,"Safari" ) != false) $browser = 5;
if(strpos($agent,"Chrome" ) != false) $browser = 6;
$return['BROWSER'] = $browser;
}
(Отредактировано автором: 20 октября 2010 — 08:19) |