Jak wyglada skrypt php logowania ip i hostu?


(Spawn) #1

Witam

Posiadam taki skrypt do logowania min. ip przy wejściu na stronę www. Co trzeba dopisać aby zaraz po ip był jeszcze host?

Oto skrypt:

<?php

$fp=fopen("ip.html", "a");

flock($fp, 2);

fwrite($fp, $_SERVER['REMOTE_ADDR']." ");

$data = date("H:i:s d-m-Y"); 

fwrite($fp, $_SERVER['HTTP_USER_AGENT'].". ".$data."
");

flock($fp, 3);

fclose($fp);

?>

(Pablo_Wawa) #2

Ale jaki host? Ten który odwiedzasz, czy adres URL, z którego ktoś do Ciebie wszedł?

Zajrzyj tutaj: Prosty moduł do zbierania danych o wejściach na serwis internetowy (PHP) i wszystko będzie jasne.


(Spawn) #3

Nic tam o hoście nie pisze a poza tym za dużo tego tam. Chodzi mi o host osoby która weszła na moją www. Jej IP i za tym IP jej Host. ip mi loguje normalnie.


(Pablo_Wawa) #4

Jeśli masz na myśli nazwę hosta odpowiadającego adresowi IP komputera, z którego ktoś wszedł na Twoją stronę, to nie dostajesz takich informacji, choćby dlatego, że często do danego adresu IP nie jest przypisany żadna nazwa domenowa albo jest ich przypisanych kilka. Możesz skorzystać z funkcji gethostbyaddr, ale jest ona czasochłonna (tzn. daje spore opóźnienia) - nawet do kilku sekund - i jak masz dużo wejść na swoją stronę to skrypt może się nie wyrabiać i się posypać (inne wejście na stronę wypadnie w trakcie wcześniejszego i może w pliku logowania powstać błędny zapis - pierwszy zacznie i nie skończy, a drugi też zacznie i coś zapisze, a potem ten pierwszy dokończy zapis, a potem drugi - i format danych się rozjedzie).

Jak bardzo Ci zależy na takiej nazwie hosta to lepiej jest logować wejścia na stronę do bazy danych i w osobnej tabeli trzymać adres IP i odpowiadającą mu nazwę hosta, bo wtedy odpytujesz o dany IP tylko raz a także możesz uzupełniać nazwy hostów w oddzielnym skrypcie, który nie obciąży głównego (od logowania wejść).


(Spawn) #5

Rozumiem.

Czyli zostaje mi skopiowanie ip z pliku i wklepanie go na jakieś stronie, która zidentyfikuje mi host tego ip...


(Pablo_Wawa) #6

Nie - możesz to zrobić w skrypcie PHP przy pomocy funkcji gethostbyaddr() - przeczytaj jej opis z linka, który podałem wcześniej.