Кой е онлайн в сайтa
Автор: Smirnoff
Здравейте, сега ще ви покажа как да виждате кой е онлайн във вашият сайт.
Урочето се състои от 2 части.
1-во: Проверка за не съжествуващо IP и внасянето му.
2-ро: Изтриване на IP-тата по стари от 1 час, и визуализирането на останалите.
Ето структурата на базата данни :
CREATE TABLE `online` (
`ip` varchar(100) collate cp1251_bulgarian_ci NOT NULL,
`session` varchar(100) collate cp1251_bulgarian_ci NOT NULL,
`data` varchar(100) collate cp1251_bulgarian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bulgarian_ci;
Ето скриптовете :
Това се поставя в началото на страницата !
<?
$host = "localhost"; //задаваме хост
$user = "username"; //задаваме потребителско име
$password = "password"; //задаваме парола
$db = "database"; //задаваме база данни
$ip = $_SERVER['REMOTE_ADDR']; // Взимаме IP адреса на посетителя
$session = time(); // Присвояваме фунцкията time()
$now = time()-3600; // Изкарваме 3600 от функцията
$data = date("H:i:s"); // Присвояваме часът пр.: чч:мм:сс
mysql_connect("$host","$user","$password") or die("error connect"); // Свързваме се с базата данни
mysql_select_db("$db") or die("error database"); // Избираме база данни
$select = mysql_query("SELECT * FROM `online` WHERE `ip`='$ip'"); // проверяваме дали има вече такова записано IP
$num = mysql_num_rows($select); // присвояваме резултата 0 или 1
if ($num==0) { // ако е нула :
$select = mysql_query("DELETE FROM `online` WHERE `session`<'$now'"); // изтриваме всички записани адреси които в полето си session имат по малка стойност от 1 час
$select = mysql_query("INSERT INTO `online` VALUES('$ip', '$session', '$data')") or die("error insert your IP"); // избираме всички нови записи, вече опреснени.
header ("Location:index.php"); // пренасочваме браузъра към същата страница
exit(); // спираме по нататъшното изпълнение на страницата
}
?>А Това се поставя там където искате да изкарате резултатите:
<?
mysql_connect("$host","$user","$password") or die("error connect"); // свързваме се с базата данни
mysql_select_db("$db") or die("error database"); // избираме базата данни
$select = mysql_query("DELETE FROM `online` WHERE `session`<'$now'"); // изтриваме всички записани адреси които в полето си session имат по малка стойност от 1 час
$select = mysql_query("SELECT * FROM `online` WHERE `session`>'$now' ORDER BY `session` DESC"); // избираме цялата инфомация от таблицата където полето session е по голямо от $now
$num = mysql_num_rows($select); // присвояваме броя на редовете на избраната информация
if ($num==0) { header ("Location:index.php"); exit(); } // ако е нула презареждаме страницата
elseif ($num==1) { $broi = "Общо <strong>$num</strong> online потребител<br>"; } // ако е едно показваме краен резултат в единствено число
else { $broi = "Общо <strong>$num</strong> online потребитела<br>"; } // иначе показваме резултатите в множествено число
$i=0; // присвояваме 0
echo "
<br>
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td align=center>$broi</td>
</tr>
"; // изкарваме информацията колко потребителя имаме онлайн
while ($row = mysql_fetch_array($select)) { //резултатът влиза в цикъл
$i++; //овеличаваме с 1
$ex = explode(".","$row[ip]"); //разделяме IP-то на части така че да можем да маскираме със звездички последните цифри
$last2 = strlen($ex[3]); // присвояваме последната част
if($last2==1) { $point2='*'; } // ако е една цифра ще покаже 1 звезда
if($last2==2) { $point2='**'; } // ако са две цифри ще покаже 2 звезди
if($last2==3) { $point2='***'; } // ако са 3 цифри ще покаже 3 звезди
echo " <tr>
<td>$i - ".$ex[0].".".$ex[1].".".$ex[2].".".$point2."</td>
<td>$row[data]</td>
</tr>"; // извеждаме краен резултат - маскираното IP и кога е влезнало
} // затваряме цикъла
echo "</table>"; //извеждаме краен резултат за таблицата в която е цялото инфо
?>Урока е авторски и правата над него са единствено мой!
Забранявам преписването му в други сайтове!




