PHP - klasy i obiekty - obiektowy licznik odwiedzin

DZIAŁANIE: Działanie:

Tabela przez phpmyadmin :
 

Kod:

Plik 140klasa_licznika.php :

Plik 140obiektowy_licznik_mysql.php :

Ewentualne Objaśnienia:

Tutaj troszkę rozbudowałem przykład poprzedni - do bazy danych dopisujemy numer IP odwiedzającego oraz datę tego "nawiedzenia".  W tym celu tworzymy poprzez phpmyadmin nową tabelę - u mnie nazywa się ona licznikobiekt oraz dla tej tabeli dwa pola - data ( typ datetime) oraz ip ( typ text ). Dzięki przechowywaniu tych informacji możemy na przykład potem stworzyć sobie jakieś proste statystyki odwiedzin.

Tutaj nie tworzymy całej nowej klasy - ale jak widać w kodzie - w nowym pliku z klasą ( czyli 140klasa_licznika.php ) - dołączamy plik z klasą Licznik z poprzedniego ćwiczenia oraz tworzymy dzięki dziedziczeniu tworzymy klasę potomną o nazwie LicznikMysql.

Na początku naszej klasy potomnej jej konstruktor - wywołuje konstruktor klasy rodzicielskiej. Robimy to poprzez konstrukcję : parent::nazwa_metody_rodzica(); czyli w naszym przypadku jak widać : parent::__construct(); . Dalej sprawdzamy czy istnieje ciasteczko świadczące o zliczonej wartości licznika odwiedzin dla danego odwiedzającego. Jeżeli takiego ciasteczka nie ma - czyli ktoś wszedł tutaj pierwszy raz ( czy tez usunął po prostu ciasteczko, czy też ich nie akceptuje ) - łączymy się z baza MySQL. Do prywatnej składowej $db zapisywany jest identyfikator połączenia zwracany przez znaną nam funkcję mysql_connect(), dzięki temu klasa ma dostęp do bazy danych niezależnie od reszty skyptu.

Do pobrania i adresu IP odwiedzającego sprawdzamy zmienną $_SERVER['HTTP_X_FORWARDED_FOR'] - jest ona ustawiana przez serwer proxy i zawiera prawdziwy adres IP klienta jeżeli korzysta on z serwera proxy. Gdyby w sytuacji kiedy ktoś korzysta z proxy użyć zmiennej $_SERVER['REMOTE_ADDR'] - uzyskalibyśmy adres serwera pośredniczącego - bo to on łączyłby się z serwerem WWW naszej strony. Jeżeli ta wartość nie podaje nam adresu IP odczytujemy ją właśnie poprzez zmienną $_SERVER['REMOTE_ADDR'].

Po tych działaniach - wpisujemy do bazy danych obecną datę oraz numer IP odwiedzającego. Jak widać w funkcji mysql_query pojawił się nam drugi parametr - wcześniej go nie używałem. Jest to tzw. identyfikator połączenia, który dalej jest sprawdzany w destruktorze.
No i właśnie destruktor pierw wywołuje destruktor klasy rodzicielskiej ( zamyka ona dostęp do pliku tekstowego licznika ) oraz rozłącza ( nowa funkcja mysql_close ) istniejące połączenie z bazą danych po wcześniejszym sprawdzeniu czy to połączenie jest nawiązane.

No i jak widać w naszym pliku gdzie chcemy wyświetlić licznik - dołączamy plik z kodem klasy LicznikMysql oraz tworzony obiekt tej klasy. Dalej już tylko odwołujemy się do naszego obiektu - do jego metody pokazLicznik.