(10 апр 2013, 19:41) (
0/
0)
[
0]
Создаёшь файл online.php
Содержимое
[code]<?php
$config = array(
\'online_time\' => \'1\', //В минутах -- зачем весь масив? не пойму.
);
$connect_config = array(
\'host\' => \'localhost\',
\'user\' => \'root\',
\'pass\' => \'mangos\',
\'db\' => \'guest_online\'
);
//передаём или читаем uniq_id с кукисов
if(!$_COOKIE[\'uniq_id\'])
{
$uniq_id = uniqid();
setcookie(\'uniq_id\',$uniq_id,(time()+3600*24*30));
}
else $uniq_id = $_COOKIE[\'uniq_id\'];
//соеденяемся с базой и проверяем
$con = mysql_connect($connect_config[\'host\'],$connect_config[\'user\'],$connect_config[\'pass\'],true);
if($con == false) die(\'<p style=\"color:red; font-weight:bold; font-size:14px\">Failed to connect with DB \'.$connect_config[\'db\'].\'!</p>\');
mysql_select_db($connect_config[\'db\'],$con) or die(\'<p style=\"color:red; font-weight:bold; font-size:14px\">Failed to connect with \'.$connect_config[\'user\'].\'Удалён
//удаляем устарелые сесии (60 минут? О_о)
mysql_query(\"delete from online_list where last_time<\".(time()-$config[\'online_time\']*60),$con);
// зачем эта проверка? там всегда ip. (читать суперглобальные массивы)
if(preg_match(\"/[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}/isU\",$_SERVER[\'REMOTE_ADDR\'])
// isU - зачем? тут ip 999.999.999 будет считаться правильным
and !preg_match(\"/[^a-zA-Z0-9\\_\\[\\]\\.\\(\\)\\-]/isU\",$uniq_id)) // умора...
// записав по другому, получаем:
// and preg_match(\"/[a-zA-Z0-9\\_\\[\\]\\.\\(\\)\\-]/isU\",$uniq_id)) // что по своей сути бред (читать регулярные выражения)
{
$last_time = mysql_result(mysql_query(\"select last_time from online_list where uniq_id = \'\".$uniq_id.\"\' and ip = \'\".$_SERVER[\'REMOTE_ADDR\'].\"\'\",$con),0,0);
if(!$last_time) mysql_query(\"insert into online_list (uniq_id, ip, last_time) values (\'\".$uniq_id.\"\', \'\".$_SERVER[\'REMOTE_ADDR\'].\"\', \'\".time().\"\')\",$con);
else mysql_query(\"update online_list set last_time = \'\".time().\"\' where uniq_id = \'\".$uniq_id.\"\' and ip = \'\".$_SERVER[\'REMOTE_ADDR\'].\"\'\",$con);
}
$online = intval(mysql_result(mysql_query(\"select count(*) from online_list where last_time>\".(time()-$config[\'online_time\']*60),$con),0,0));
//$online - кол-во гостей на сайте
mysql_close($con);
unset($con);
echo $online;
?>[/code]
И к базе подлючаешь
Файл выносишь так: <? include \'online.php\';?>