Segédletek.hu

Segédletek weblap szerkesztéshez!
ingyen letöltés

| Mind | PHP | HTML | CSS | Java |
|Legújabbak |Legtöbbször olvasottak|

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
<!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!


Csatlakozz a GDF-hez
Játssz, és nyerj SZIN jegyet És tanulj nálunk tovább
gdf.info.hu

Mondjon Bon jourt...
és legyen Öné az 1.000.000 € nyeremény! Partouche Poker Tour a bwin-en.
www.bwin.com

Miért fizetne többet?
Akciós élelmiszer, műszaki cikk, gyümölcs, bútor. Nézzen be, megéri!
www.tesco.hu

Lakástakarék
Éljen a lehetőséggel! Állami támogatás. Kedvező fix törlesztő és futamidő.
lakastakarek.com

10.000 €-t keresni havonta
Hogyan keressünk pénzt könnyedén? Kezdjen pénzt keresni még ma!
www.penzt-keresni.net

Hirdessen itt