Witam!
Przez kilka dni szukałem w necie licznika odwiedzin dla siebie. Szukałem i szukałem, ale żaden nie spełniał tych kryteriów:
-
napisany w php
-
oparty na bazie mysql
-
odporny na odświeżanie.
Postanowiłem więc zrobić coś sam. I zrobiłem :D. Napisałem (a właściwie przerobiłem i posklejałem) licznik. Tutaj opiszę, jak samemu zrobić u siebie licznik odwiedzin, może komuś się przyda i pomoże zaoszczędzić czas stracony na szukaniu…
Zabezpieczenie przed odświeżaniem opiera się na plikach cookie.
Zaczynajmy więc.
Na początku należy stworzyć odpowiednią tabelę w bazie. Oto kod zapytania:
CREATE TABLE licznik (
name varchar(128) NOT NULL,
count int(16) DEFAULT '0' NOT NULL
);
Teraz zabierzemy się za właściwy kod licznika. Można go później zapisać w pliku .inc i wywołać np. za pomocą funkcji require(); należy jednak pamiętać o dodaniu na samym początku dokumentu (naprawdę na samym początku ) z licznikiem takiej linijki:
<?php setcookie("testowy_licznik", "1", time()+36000); ?>
Tworzy ona ciasteczko, które chroni licznik przed zbędną inkrementacją. testowy licznik - nazwa ciasteczka 1 - wartość ciasteczka (radzę nie zmieniać )time()+3600 - czas ważności ciasteczka podany w sekundach. 3600 sekund to godzina. Jeśli chcielibyśmy, by licznik nie inkrementował u danego użytkownika np. przez 10 minut wpisujemy 600 zamiast 3600 :). Teraz standardowa sekcja head (zbędna, jeżeli stosujemy licznik poprzez funkcję require()):
licznik
I czas na właściwy skrypt licznika. Na początku musimy połączyć się z bazą danych:
<?php
$dbhost = "adres serwera mysql";
$dbuser = "uzytkownik bazy";
$dbpass = "hasło do bazy";
$dbname = "nazwa bazy";
mysql_connect($dbhost, $dbuser, $dbpass) or die ("Unable to connect to database");
mysql_select_db($dbname);
Oczywiście należy podać poprawną konfiguracją naszej bazy… :] Dalsza część skryptu:
if($_COOKIE["testowy_licznik"] != 1)
{
$name = "test"; // nazwa licznika, umożliwia posiadanie ich kilku :)
$result = MYSQL_QUERY("SELECT * FROM licznik WHERE (name = '$name')") or die
("Bad query: ".mysql_error());
$row = mysql_fetch_array($result);
if($row){
MYSQL_QUERY("UPDATE licznik SET count = count+1 WHERE (name = '$name')") or die
("Bad query: ".mysql_error());
$count = $row['count'];
}else{
MYSQL_QUERY("INSERT INTO licznik VALUES ('$name', '2')") or die("Bad
query: ".mysql_error());
$count = '1';
}
}
$licznik_db = mysql_query("SELECT count FROM licznik");
$licznik = mysql_fetch_row($licznik_db);
echo 'Ilość unikalnych wyświetleń: '. $licznik[0]; // odwołanie do tablicy, w kwadratowym nawiasie należy podać wiersz (lub nazwę) naszego licznika z mysqla
mysql_close();
?>
Oczywiście kod echa można dowolnie zmieniać. Działanie licznika można sprawdzić tutaj oraz w praktycznym zastosowaniu tutaj (prawa kolumna, dział statystyki).
Jeśli chcemy w każdej chwili możemy zmienić wartość licznika (bądź teź nadać mu wartość początkową) poprzez edycję tabeli licznik w PhpMyAdminie.
Koniec 8)