Ubuntu és PHP megoldások

Érdekességek, trükkök, tudni valók Ubunturól és PHP-ról

Mutast az ip-d, megmondom, hogy ki vagy

2010.03.21. 20:11 gH0StArthour

Szóval, ismert a tény, amikor meglátogatsz egy oldalt külső proxy nélkül, akkor a "saját" ip-d is felhasználhatóvá válik az oldal számára.

Itt jön a képbe: "Mutasd az ipd-d, megmondom, hogy ki vagy" -dolog.

Ez a GeoIp. A GeoIp olyan adathalmaz, ami tárolja az adott ip tartományba tartozó Régió nevet, kódot.

SqlLite2 adatbázissal mutatom be a használatát...

Kell egy Sql kezelő program, ami legyen most windows alá az SQLIte admin nevü program, amely innen érhető el: sqliteadmin.orbmu2k.de

A programban, hozzunk létre egy új adatbázist, Adatbázis -> Új, majd tallózzunk be neki egy helyet, és mielőtt mentjük, alul SqLite2 DB típust válasszuk.

Hozzunk létre egy új táblát. Bal oldalt Táblák -> Tábla létrehozása. Itt megjelenik egy ablak, ahol a mezőket és a táblanevet tudjuk szerkeszteni. A tábla neve legyen geoip.

Ezeket a mezőket adjuk a táblához:

begin_ip VARCHAR(15)
end_ip VARCHAR(15)
begin_num NUMERIC
end_num NUMERIC
country TEXT
name TEXT

Az adatbázis szerkezet meg is van, most jöhet a cvs fájl lekezelése.

Töltsük le a cvs-t innen: GeoIP.dat.gz, csomagoljuk ki, és nyissuk meg egy szövegszerkesztővel, ami ha lehet ne a windowsos text-editor, vagy Wordpad legyen, hanem amivel php-kat szerkesztjük. Azok általában kezelik a cvs-t is rendesen.

A cvs elejére szúrjuk be ezt a sort:

"begin_ip","end_ip","begin_num","end_num","country","name"

Majd mentsük el.

Az SQLite adminban felül a menüben Adat ->Importál

Állomány megnyitása, és keressük meg a cvs fájlunkat. Felugrik majd egy ablak, megkérdezi Mi az elválasztó karakter. Ott alapból a ";" (pontos vessző) jelenik meg, de nekünk a "," (sima vessző) kell most. Okézzuk le.

Megint egy kérdés: "Az első sor tartalmazza a mezőnevet?", amire a válasz: igen. (Ezt szúrtuk be a cvs elejére)

A mezőtérkép résznél "Forrás mezők" és "Cél mezők" -nél alúl megjelennek lenyíló nezőben a táblamező nevei. Vagyis, alapból üres tartalmat mutatnak. Alúl válasszuk ki a Céltáblát, ami a fentebb megadott geoip nevet kapta.

A "Forrás mezők" és "Cél mezők" mellett egy ikon található, amelyre kattintva a mezőneveket automatikusan egyezteti és kitölti. Hogyha mind két oldalt "Forrás mezők" és a "Cél mezők" is ugyan azokat a mezőneveket jelenítik meg, akkor minden jól ment.

Adat importálása gomb, és szívjunk el egy cigit, igyunk egy kv-t, nézzünk meg egy filmet stb. Sokáig fog tartani, mert nem kicsi adatbázisól van szó.

Hogyha készen van, akkor teszteljünk:

Előszőris, ha nem tudjuk a saját IP-nket, akkor itt megnézhetjük. Majd, konvertáljuk is át 'long ip'-re itt.

Majd a kapott számértéket SQLite adminban felhasználjuk a következő módon:

Az adminban felül az SQL lekérdezés fül legyen aktív, és oda másoljuk be ezt a sort:

SELECT country FROM geoip WHERE kapott_longid BETWEEN begin_num AND end_num LIMIT 1

Ahol értelemszerüen a kapott_longid az átváltott ip-nket takarja.
Majd, nyumjunk egy F9 -et, és voálá, kiböki nekünk a Régiónk kódját.
Ehhez, ínyencség képpen egy ikonszet is jár:
flags.zip
flags.tgz
melyeket felhasználhatunk alkalmazásainkban, ugyanis az ikonok illeszkednek a country mezőnévre egy strtolower() függvénnyel. És hogyha mégsem lenne találat, akkor arra ott a '-.gif' vagy az 'unknown.gif' nevü gifecske.

Megjegyzem, hogyha tényleg csak annyit akarunk megtudni, hogy milyen nyelven böngészi valaki az oldalt, akkor:

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
 

Szólj hozzá!

Címkék: sql nyelv ip flags geoip geo ip longip long ip sqlite sqlite 2 mutasd az ip d

A bejegyzés trackback címe:

https://phpubuntu.blog.hu/api/trackback/id/tr731857531

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása