Segédletek.hu
Segédletek weblap szerkesztéshez!
Fórum:
Postaláda:
Szavazás:
Hány éves vagy?
Segédletek:
Linkek:
Grafikus txt alapú látogató számláló:
Sorozat - ingyen számláló scriptek:Ebben a segédletben egy grafikus látogató számlálót mutatok be. Nem szükséges hozzá mysql. A látogatókat IP alapján azonosítja, és állítható időn belül nem számolja újra.
Ez a segédlet a Grafikus látogató számláló átültesése txt alapra.
Forrás fájlok egyben
Vágunk a közepébe, nyissuk meg a kedvenc szerkesztőnkkel az index.php - t
Ebben a kódban két külső php fájlra is hivatkoztunk. Ezek:
getip.php
Ez a script a felasználó ip címét kérdezi le.
A másik fájl a counter.php - ez a program lelke. Ebben a fájlban történik maga a számlálás.
counter.php
A kód 4 fő részből áll. Az első a deklarálás. Itt adhatjuk meg a tároló fájl elérési útvonalát, a file() fgv - vel egy tömbbe kiolvassuk a tartalmát. a $h változó egy logikai érték. Ha az értéke true, akkor növeljök a számlálót egyel.
A második rész a beírás. Itt eldöntjük, hogy számoljuk - e a látogatót, és ha igen, akkor beírjuk a szövegfájlba. A szövegfájl (jelen esetben a store.txt) így néz ki:
1184327406;127.0.0.1;\n
1184327407;127.0.0.2;\n
Az első érték egy időbélyeg (1970 00:00:00 GMT óta eltelt másodpercek száma), a második a felhasználó IP címe. Az elválasztó a ";" karakter.
A szövegfájban időrendi sorban lesznek a látogatások rögzítve. Ahhoz, hogy eldöntsük, hogy számoljuk-e az illetőt, vizsgálnunk kell, hogy az elmúlt egy órában az ő ip - je lett-e rögzítve. Ha nem, akkor rögzítjük, ha igen, akkor nem csinálunk semmit. Ahhoz, hogy az utolsó egy óra sorait tudjuk nézni, meg kell fordítani a tömböt(mert ugye időrendi sorrendben van.) Ha ez megvan, két if - el vizsgáljuk a feltételeket.
A harmadik rész a kiolvasás. Ehhez nincs más dolgunk, mint egy count() -al megszámolni a tömbünk elemeit. Mivel a file() - vel történő kiolvasás még az esetleges új sor beszúrása előtt történt, ezért ha szúrtuk be új sort, akkor növelni kell egyel az $ossz változó értékét.
Az utolsó részben kiegészítjük az $ossz változót 6 számjegyre, majd kiíratjuk. (akinek nem világos ez a lépés, az nézze meg a Grafikus látogató számláló c. cikket is.)
Ami még fontos, hogy a store.txt - nek adjunk 777 jogokat. Total Commanderrel Fájl=>Attribútumok módosítása. (php - vel: chmod() - fgv)
Hát ennyi lenne. Ha valami nem lenne világos, bátran kérdezzetek!
Forrás fájlok egyben
Vágunk a közepébe, nyissuk meg a kedvenc szerkesztőnkkel az index.php - t
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Grafikus látogató számláló</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<?php
include "getip.php";
include("counter.php");
?>
</html>
Ebben a kódban két külső php fájlra is hivatkoztunk. Ezek:
getip.php
<?php
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;
}
?>
Ez a script a felasználó ip címét kérdezi le.
A másik fájl a counter.php - ez a program lelke. Ebben a fájlban történik maga a számlálás.
counter.php
<?php
//deklarálás
$f = "store.txt";
$t = file($f);
$h = true;
//Beírás
$t2 = array_reverse($t);
foreach ($t2 as $key => $value)
{
$explode = explode(";",$value);
$time = $explode[0];
$ip = $explode[1];
if(($time+(60*60)) < time() )
{
break;
}
if($ip == getip())
{
$h = false;
break;
}
}
if($h)
{
$handle = fopen($f,"a");
fwrite($handle,time().";".getip().";\n");
fclose($handle);
}
//Kiolvasás
$ossz = count($t);
if($h){$ossz++;}
$ossz = sprintf("%06s", $ossz);
//kiírás
echo "Összes látogató:";
for ($i = 0; $i<strlen($ossz);$i++)
{
print "<img src='kepek/".$ossz[$i].".gif' />";
}
?>
A kód 4 fő részből áll. Az első a deklarálás. Itt adhatjuk meg a tároló fájl elérési útvonalát, a file() fgv - vel egy tömbbe kiolvassuk a tartalmát. a $h változó egy logikai érték. Ha az értéke true, akkor növeljök a számlálót egyel.
A második rész a beírás. Itt eldöntjük, hogy számoljuk - e a látogatót, és ha igen, akkor beírjuk a szövegfájlba. A szövegfájl (jelen esetben a store.txt) így néz ki:
1184327406;127.0.0.1;\n
1184327407;127.0.0.2;\n
Az első érték egy időbélyeg (1970 00:00:00 GMT óta eltelt másodpercek száma), a második a felhasználó IP címe. Az elválasztó a ";" karakter.
A szövegfájban időrendi sorban lesznek a látogatások rögzítve. Ahhoz, hogy eldöntsük, hogy számoljuk-e az illetőt, vizsgálnunk kell, hogy az elmúlt egy órában az ő ip - je lett-e rögzítve. Ha nem, akkor rögzítjük, ha igen, akkor nem csinálunk semmit. Ahhoz, hogy az utolsó egy óra sorait tudjuk nézni, meg kell fordítani a tömböt(mert ugye időrendi sorrendben van.) Ha ez megvan, két if - el vizsgáljuk a feltételeket.
A harmadik rész a kiolvasás. Ehhez nincs más dolgunk, mint egy count() -al megszámolni a tömbünk elemeit. Mivel a file() - vel történő kiolvasás még az esetleges új sor beszúrása előtt történt, ezért ha szúrtuk be új sort, akkor növelni kell egyel az $ossz változó értékét.
Az utolsó részben kiegészítjük az $ossz változót 6 számjegyre, majd kiíratjuk. (akinek nem világos ez a lépés, az nézze meg a Grafikus látogató számláló c. cikket is.)
Ami még fontos, hogy a store.txt - nek adjunk 777 jogokat. Total Commanderrel Fájl=>Attribútumok módosítása. (php - vel: chmod() - fgv)
Hát ennyi lenne. Ha valami nem lenne világos, bátran kérdezzetek!
Írta: requiem - 2007-07-13 14:36:16
* 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!

