Loading:

Książka Zend Framework 3. Poradnik Programisty.

Ilość użytkowników online na stronie (Licznik osób on-line) - PHP i MySQL

Skrypt pobiera od użytkownika adres IP biorąc pod uwagę 6 parametrów, po czym dodaje go do bazy na tej podstawie wyliczane są osoby obecnie przebywające na stronie, po upływie 5 min uzytkownik jest usuwany z bazy.

 

SQL dla tego skryptu:

CREATE TABLE `useronline` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `ip` varchar(15) NOT NULL DEFAULT '',
  `timestamp` varchar(15) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id`(`id`)
) TYPE=MyISAM COMMENT='' AUTO_INCREMENT=1 ;



Napisz Artykuł

Listing


<?php
require('functions/baza.php');

function lacz_bd()
{  
  $db = new mysqli('localhost', 'uzytkownik', 'haslo', 'nazwa_bazy');  
    if (! $db)
      return false;
   $db->autocommit(TRUE);
   return $db;
}


$db = lacz_bd();

function userOnline(){
        $timestamp = time();
        $timeout = 500;
        $count = 0;
        $error;
        $i = 0;
        global $db;
               
                if (getenv('HTTP_CLIENT_IP')) {
                        $ip = getenv('HTTP_CLIENT_IP');
                }
                elseif (getenv('HTTP_X_FORWARDED_FOR')) {
                        $ip = getenv('HTTP_X_FORWARDED_FOR');
                }
                elseif (getenv('HTTP_X_FORWARDED')) {
                        $ip = getenv('HTTP_X_FORWARDED');
                }
                elseif (getenv('HTTP_FORWARDED_FOR')) {
                        $ip = getenv('HTTP_FORWARDED_FOR');
                }
                elseif (getenv('HTTP_FORWARDED')) {
                        $ip = getenv('HTTP_FORWARDED');
                }
                else {
                        $ip = $_SERVER['REMOTE_ADDR'];
                }
               
       
        $insert = $db->query("INSERT INTO useronline(timestamp, ip) VALUES ('$timestamp', '$ip')");
               
        $delete = $db->query("DELETE FROM useronline WHERE timestamp < ($timestamp - $timeout)");
       
        $wynik = $db->query("SELECT DISTINCT ip FROM useronline");
        $count = $wynik->num_rows;
        return $count;

}

echo "Użytkowników online: ".userOnline();

?>


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=3&t=4812

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors