Webmaster общности: Predpriemach.com | SearchEngines.bg

    Кой е онлайн в сайт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>"; //извеждаме краен резултат за таблицата в която е цялото инфо
    
    ?>

    Урока е авторски и правата над него са единствено мой!
    Забранявам преписването му в други сайтове!

    Оставете коментар