Segédletek.hu
Segédletek weblap szerkesztéshez!
Fórum:
Postaláda:
Szavazás:
Hány éves vagy?
Segédletek:
Linkek:
Online látogató számláló:
Sorozat - ingyen számláló scriptek:Egy olyan php script írását tűztem ki célul, amelyik számolja az éppen online látogatókat!
Mielőtt elkezdeném, el kell mondjam, hogy a HTTP protokoll sajátosságai miatt ez nem egy 100% - ig pontos számláló. Azt nem tuhatjuk pontosan, hogy az adott user még 1mp múlva is ott lesz-e, vagy már rég elment. Ezért egy ilyen számláló általában az elmúlt pár perc adatait nézi. Jelen esetben én most az elmúlt 5 perc alapján fogom eldönteni, hogy ki online, és ki nem. Az azonosítás ip alapján fog történni. Aki egy adott ip - ről 5 percnél korábban töltött le lapot, az online.
Akkor vágjunk is bele. Ehhez szükségünk lesz egy adatbázisra.
install.sql
Ezzel létrehozunk egy táblát, amibe majd a látogatásokat tároljuk.
Hozzunk létre egy konfig fájt a mysql kapcsolódáshoz:
config.php
Mint írtam, az azonosítás ip alapján fog menni. Azt le kell kérdezni, amire van egy ip lekérdező script - em.
getip.php
Egyszerű kis kód, egy függvény, ami a valós ip címmel tér vissza. Ezt fogjuk majd incudolni a főprogramunkba.
Akkor most jöjjön a hab a tortán a
counter.php
A kód elején töröljk az adatbázisból az 5 percnél régebbi sorokat. Ha ez megvan, megnézzük, hogy van - e az adott ip - vel sor. Ha van, akkor frissítjük a dátumot. Ha nincs, akkor beszúrunk egy új sort. A kód végén lekérdezzük az adatokat, és megszámoljuk a sorokat. Ez adja az online látogatókat.
Ennyi az egész. Egyszerű kis scrit. Nem túl bonyolult.
működő demó
Forrás fájlok egyben
Akkor vágjunk is bele. Ehhez szükségünk lesz egy adatbázisra.
install.sql
DROP TABLE IF EXISTS online;
CREATE TABLE online(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
ip VARCHAR(30),
datum DATETIME
);
Ezzel létrehozunk egy táblát, amibe majd a látogatásokat tároljuk.
Hozzunk létre egy konfig fájt a mysql kapcsolódáshoz:
config.php
<?php
/*Konfiguráció*/
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "online";
/*Kapcsolódás*/
$connect = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname) OR die(mysql_error());
?>
Mint írtam, az azonosítás ip alapján fog menni. Azt le kell kérdezni, amire van egy ip lekérdező script - em.
getip.php
<?php
/**
* A felhasználó ip címét kérdezi le.
*
* @return string
* @package www.segedletek.hu
*/
function getip()
{
if (isset($_SERVER))
{
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_CLIENT_IP"]))
{
$realip = $_SERVER["HTTP_CLIENT_IP"];
}
else
{
$realip = $_SERVER["REMOTE_ADDR"];
}
}
else
{
if ( getenv( 'HTTP_X_FORWARDED_FOR' ) )
{
$realip = getenv( 'HTTP_X_FORWARDED_FOR' );
}
elseif ( getenv( 'HTTP_CLIENT_IP' ) )
{
$realip = getenv( 'HTTP_CLIENT_IP' );
}
else
{
$realip = getenv( 'REMOTE_ADDR' );
}
}
return $realip;
}
?>
Egyszerű kis kód, egy függvény, ami a valós ip címmel tér vissza. Ezt fogjuk majd incudolni a főprogramunkba.
Akkor most jöjjön a hab a tortán a
counter.php
<?php
include "config.php";
include "getip.php";
/*Régi adatok törlése:*/
$sql = "DELETE FROM online WHERE( (INTERVAL 5 MINUTE + datum) < '".date("Y-m-d H:i:s")."')";
$query = mysql_query($sql);
/*Látogatás logolása:*/
$sql = "SELECT INTERVAL 5 MINUTE + datum as datum FROM online WHERE(ip='".getip()."')";
$query = mysql_query($sql);
$rs = mysql_fetch_array($query);
if(mysql_num_rows($query) > 0){
$sql = "UPDATE online SET datum=NOW() WHERE (ip='".getip()."')";
}
else{
$sql = "INSERT INTO online (ip, datum) values ('".getip()."',NOW())";
}
$query = mysql_query($sql);
$sql = "SELECT COUNT(id) AS darab ";
$sql.="FROM online";
$query = mysql_query($sql);
$rs = mysql_fetch_assoc($query);
$online = $rs['darab'];
?>
<?php
echo "jelenleng ".$online." online látogató van itt";
?>
A kód elején töröljk az adatbázisból az 5 percnél régebbi sorokat. Ha ez megvan, megnézzük, hogy van - e az adott ip - vel sor. Ha van, akkor frissítjük a dátumot. Ha nincs, akkor beszúrunk egy új sort. A kód végén lekérdezzük az adatokat, és megszámoljuk a sorokat. Ez adja az online látogatókat.
Ennyi az egész. Egyszerű kis scrit. Nem túl bonyolult.
működő demó
Forrás fájlok egyben
Írta: requiem - 2007-05-08 16:34:59
* Nem vagy bejelentkezve!* Nem töltheted le a segédlet forrását egyben!
* Nem szavazhatsz a segédletre!
* Nem írhatsz a segédlethez tartozó fórum témába!
| DyGery | 2009-03-17 15:56:18 |
| Hello! Megoldottam! Az volt a hibám hogy kétszer hívtam eg az oldlam a getip függvényt :-D Köszi a scriptet nagyon király!! |
|
| DyGery | 2009-03-17 11:53:26 |
| Hello! Egy kis segitség kéne:-D ha a counter.php tartalmát elhelyezem a saját php fájlomba akkor a következ? hibát generálja: Fatal error: Cannot redeclare getip() (previously declared in C:AppServszamlaloklatogatogetip.php:10) in C:AppServszamlalokonlinegetip.php on line 14 vajon mért? köszi a segitséget el?re is!! |
|
| Mauritusz | 2008-11-25 23:57:57 |
| Jó ez a zámláló. Én még hozzátettem azt, hogy kiíratom a nevet is, de az alap az marad. | |

