Počítadlo návštevníkov (MySQL)
-
geoge046
Star
- Príspevky: 608
- Registrovaný: 10 aug 2005, 14:15
- Bydlisko: Prievidza
- Kontaktovať používateľa:
Počítadlo návštevníkov (MySQL)
Cafte,
tak som sa zamýšlal, a chcel som vytvorit počítadlo návštevníkov cez MYSQL. Bude počítať unikátny prístup raz za 12 hodín. Ako by ste to riesili?
Dakujem
tak som sa zamýšlal, a chcel som vytvorit počítadlo návštevníkov cez MYSQL. Bude počítať unikátny prístup raz za 12 hodín. Ako by ste to riesili?
Dakujem
-
sanyika
Medium Star
- Príspevky: 364
- Registrovaný: 11 apr 2006, 15:35
- Bydlisko: Treti smetiak vpravo....d
Ja by som to riesil nasledovne....
Zapisal by som do tabulky IPcku, datum a cas.....
ak pride navstevnik na stranku vyberu sa z tabulky riadky z jeho ipckou....ak sa ridky rovnaju nule - zapise sa ipcka, datum a cas....ak je vystup jeden, alebo viac riadkov, vyberiem z vystupu iba tie ipcky, ktore sa zhoduju s navstevnikovou, podla datumu, datumu o jeden mensi ako aktualny, potom si zistim ci v dany den pristupil navstevnik na stranku, ak nie pridam ipcku ak ano skontrolujem podla casu ci aktualny cas +- tych 12 hodin sa nachcadza ta ipcka v poli...ak nie navstevnik sa zapise do db ak ano nezapise sa.
Zapisal by som do tabulky IPcku, datum a cas.....
ak pride navstevnik na stranku vyberu sa z tabulky riadky z jeho ipckou....ak sa ridky rovnaju nule - zapise sa ipcka, datum a cas....ak je vystup jeden, alebo viac riadkov, vyberiem z vystupu iba tie ipcky, ktore sa zhoduju s navstevnikovou, podla datumu, datumu o jeden mensi ako aktualny, potom si zistim ci v dany den pristupil navstevnik na stranku, ak nie pridam ipcku ak ano skontrolujem podla casu ci aktualny cas +- tych 12 hodin sa nachcadza ta ipcka v poli...ak nie navstevnik sa zapise do db ak ano nezapise sa.
-
geoge046
Star
- Príspevky: 608
- Registrovaný: 10 aug 2005, 14:15
- Bydlisko: Prievidza
- Kontaktovať používateľa:
A co tie konkretne znamenaju?chrono napísal:Ja by som tam ešte pridal jeden stĺpec (do tej tabuľky). Tam by bolo, ako sme získali tú IP. Môže byť nastavených viac vecí ako len REMOTE_ADDR. Napr. HTTP_VIA, HTTP_X_COMING_FROM, HTTP_X_FORWARDED_FOR, HTTP_X_FORWARDED, HTTP_COMING_FROM, HTTP_FORWARDED_FOR, HTTP_FORWARDEDREMOTE_ADDR
-
geoge046
Star
- Príspevky: 608
- Registrovaný: 10 aug 2005, 14:15
- Bydlisko: Prievidza
- Kontaktovať používateľa:
Praveze si chcem robit aj statistiky, a tym by som zabil dve muchy jednou ranou. Tak ak mozem vedet tak ake vselijake funkcie sa daju pouzit na ziskanie informacie odkial ludia prisli?chrono napísal:On chce počítať unikátne prístupy, takže nejako tých ľudí musí odlíšiť (nie každý má verejnú IP a niektoré s tých premenných by mohli pomôcť [ale aj nemuseli]).
no hacky najdes na www.hackujeme.sk tieto statistiky si rovno mozes nechat posielat na mail. staci sa ti regnut na toplist alebo si sosnut nieco z hotscripts.com alebo precitat nejake clanky z interval.cz 
-
geoge046
Star
- Príspevky: 608
- Registrovaný: 10 aug 2005, 14:15
- Bydlisko: Prievidza
- Kontaktovať používateľa:
No lepsiu stranku si nemohol datturtlak69 napísal:no hacky najdes na www.hackujeme.sk
A ale ja si robim taketo veci vlastne a zaujima ma co a ako funguje. Preto som sa pytal co znamenaju tie veci
HTTP_VIA, HTTP_X_COMING_FROM, HTTP_X_FORWARDED_FOR, HTTP_X_FORWARDED, HTTP_COMING_FROM, HTTP_FORWARDED_FOR, HTTP_FORWARDEDREMOTE_ADDR
skus si nahodit do googlu a on ti vypluje pekny matros. napriklad
http://www.google.sk/search?q=HTTP_FORW ... =firefox-a
alebo na php.net skus kuknut. ja odtial cerpam stale
http://www.google.sk/search?q=HTTP_FORW ... =firefox-a
alebo na php.net skus kuknut. ja odtial cerpam stale
-
geoge046
Star
- Príspevky: 608
- Registrovaný: 10 aug 2005, 14:15
- Bydlisko: Prievidza
- Kontaktovať používateľa:
no to som skusal ::D heh zase taky blby nejsom, ale vsetko je po anglicky, nemas nieco po slovensky?turtlak69 napísal:skus si nahodit do googlu a on ti vypluje pekny matros. napriklad
http://www.google.sk/search?q=HTTP_FORW ... =firefox-a
alebo na php.net skus kuknut. ja odtial cerpam stale
-
geoge046
Star
- Príspevky: 608
- Registrovaný: 10 aug 2005, 14:15
- Bydlisko: Prievidza
- Kontaktovať používateľa:
No tak teda co prosim tieto veci znamenaju? A vyvolavaju sa v premennej $_SERVER[' '], ze? Bo ked som to skusal vyvovalavat normalne, tak mi nist nevypisovalo.chrono napísal:HTTP_VIA, HTTP_X_COMING_FROM, HTTP_X_FORWARDED_FOR, HTTP_X_FORWARDED, HTTP_COMING_FROM, HTTP_FORWARDED_FOR, HTTP_FORWARDEDREMOTE_ADDR
-
vivaSlovakia
Guru wannabe
- Príspevky: 2119
- Registrovaný: 29 júl 2006, 10:30
-
geoge046
Star
- Príspevky: 608
- Registrovaný: 10 aug 2005, 14:15
- Bydlisko: Prievidza
- Kontaktovať používateľa:
A este nad cim si lamem hlavu. Mam tabulku kde jeden zo stpcov je CAS a je nastaveny nasledovne:
TYP: TIMESTAMP
ATRIBÚT: ON UPDATE CURRENT_TIMESTAMP
PREDVOLENÉ: CURRENT_TIMESTAMP
No a vsetko sa tam cas ulozi tak ako ma, ale ked v PHP na stranke nadefinujem ze sa ma nieco vykonat za urcity cas (neako takto: "WHERE cas < (NOW()-86400)" kde 86400 je v prepocte zo sekund 24 hodin). Lenze ja si vsimam ze toto sa nestane za 24 hodin ale vzdy o nieco skor a neviem cim je to sposobene. Preco? Dakujem
TYP: TIMESTAMP
ATRIBÚT: ON UPDATE CURRENT_TIMESTAMP
PREDVOLENÉ: CURRENT_TIMESTAMP
No a vsetko sa tam cas ulozi tak ako ma, ale ked v PHP na stranke nadefinujem ze sa ma nieco vykonat za urcity cas (neako takto: "WHERE cas < (NOW()-86400)" kde 86400 je v prepocte zo sekund 24 hodin). Lenze ja si vsimam ze toto sa nestane za 24 hodin ale vzdy o nieco skor a neviem cim je to sposobene. Preco? Dakujem
-
caesar1987
Addict
- Príspevky: 3001
- Registrovaný: 02 okt 2005, 0:57
- Bydlisko: Nové Zámky
- Kontaktovať používateľa:
nie je format current timestamp nejaky takzy ze
2001-09-04 19:48:21-08
rok-mesia-den hodina:minuta:sekunda-neviem co?? bo ked som ja s nim nieco chcel, tak sa mi nieco take daval
kukni toto
http://www.hojko.com/teoria-praktikce-s ... 76323.html
ja som tam tiez porovnaval cas - je tu uplne dole...
2001-09-04 19:48:21-08
rok-mesia-den hodina:minuta:sekunda-neviem co?? bo ked som ja s nim nieco chcel, tak sa mi nieco take daval
kukni toto
http://www.hojko.com/teoria-praktikce-s ... 76323.html
ja som tam tiez porovnaval cas - je tu uplne dole...
prave som dorobil jedno pocitadlo aj ja. zbiera denne navstevy, mesacne a rocne. tiez vie zistit odkial uzivatel prisiel. zapisuje podla IP a datumu. jedna IP = 1den. includnuty setup je u mna pripojenie do DB. takze ten si upravte podla seba
mozno su tam nejake chyby, nemal som nejako cas ho este testnut. zatial pocita dobre
este pridam tabulky z DB
edit: bola tam chybicka. uz je to opravene
Kód: Vybrať všetko
<?php
include ("./common/setup.php");
if (getenv('HTTP_CLIENT_IP')) {
$IP = getenv('HTTP_CLIENT_IP');
}
elseif (getenv('HTTP_X_FORWARDED_FOR')) {
$IP = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_X_FORWARDED')) {
$IP = getenv('HTTP_X_FORWARDED');
}
elseif (getenv('HTTP_FORWARDED_FOR')) {
$IP = getenv('HTTP_FORWARDED_FOR');
}
elseif (getenv('HTTP_FORWARDED')) {
$IP = getenv('HTTP_FORWARDED');
}
else {
$IP = $_SERVER['REMOTE_ADDR'];
}
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$datetime = date("Y-m-d"); // 10-kovy format
$sql = mysql_query("SELECT * FROM $tab_counter WHERE domain='$hostname' AND date10='$datetime'");
$sql_ip=Mysql_num_rows($sql);
$counter = mysql_fetch_assoc($sql);
$sql_date=$counter[date10];
//echo "$sql_ip - $sql_date - $datetime";
if ($sql_ip == "0")
{
if($_SERVER['HTTP_REFERER'] != ''){
$URL = parse_url($_SERVER['HTTP_REFERER']);
$from = $URL['host'];
}
MySQL_Query ("INSERT INTO `$DB`.`$tab_counter` VALUES (
NULL , '$IP', '$hostname', '$datetime', '$from'
)");
// day
$sql = mysql_query("SELECT * FROM $tab_visitors_day WHERE date='$datetime' ");
$visitors=@Mysql_num_rows($sql);
$x=mysql_fetch_array($sql);
$all=$x[total];
$all++;
if ($visitors > "0")
{
MySQL_Query("UPDATE $tab_visitors_day SET total='$all' WHERE date='$datetime'");
}
elseif ($visitors == "" || $visitors == "0" || $visitors == "false")
{
MySQL_Query("INSERT INTO $tab_visitors_day VALUES (NULL,'$datetime','1')");
}
// month
$month = date("Y:m:00");
$sql = @mysql_query("SELECT * FROM $tab_visitors_month WHERE date='$month' ");
$x=mysql_fetch_array($sql);
$all=$x[total];
$all++;
$visitors=@Mysql_num_rows($sql);
if ($visitors > "0")
{
MySQL_Query("UPDATE $tab_visitors_month SET total='$all' WHERE date='$month'");
}
else
{
MySQL_Query("INSERT INTO $tab_visitors_month VALUES (NULL,'$month','1')");
}
// year
$year = date("Y:00:00");
$sql = @mysql_query("SELECT * FROM $tab_visitors_year WHERE date='$year' ");
$x=mysql_fetch_array($sql);
$all=$x[total];
$all++;
$visitors=@Mysql_num_rows($sql);
if ($visitors > "0")
{
MySQL_Query("UPDATE $tab_visitors_year SET total='$all' WHERE date='$year'");
}
else
{
MySQL_Query("INSERT INTO $tab_visitors_year VALUES (NULL,'$year','1')");
}
}
?>
Kód: Vybrať všetko
-- phpMyAdmin SQL Dump
-- version 2.10.0.2
-- http://www.phpmyadmin.net
--
-- Hostiteľ: localhost
-- Vygenerované:: 03.Aug, 2007 - 09:28
-- Verzia serveru: 5.0.37
-- Verzia PHP: 5.2.3
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Databáza: `lh1629300db`
--
-- --------------------------------------------------------
--
-- Štruktúra tabuľky pre tabuľku `namieru_counter`
--
CREATE TABLE `namieru_counter` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(15) collate cp1250_bin NOT NULL,
`domain` varchar(100) collate cp1250_bin NOT NULL,
`date10` date NOT NULL,
`from` varchar(200) collate cp1250_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_bin AUTO_INCREMENT=3 ;
-- --------------------------------------------------------
--
-- Štruktúra tabuľky pre tabuľku `namieru_visitors_day`
--
CREATE TABLE `namieru_visitors_day` (
`id` int(11) NOT NULL auto_increment,
`date` date NOT NULL,
`total` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_bin AUTO_INCREMENT=2 ;
-- --------------------------------------------------------
--
-- Štruktúra tabuľky pre tabuľku `namieru_visitors_month`
--
CREATE TABLE `namieru_visitors_month` (
`id` int(11) NOT NULL auto_increment,
`date` date NOT NULL,
`total` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_bin AUTO_INCREMENT=2 ;
-- --------------------------------------------------------
--
-- Štruktúra tabuľky pre tabuľku `namieru_visitors_year`
--
CREATE TABLE `namieru_visitors_year` (
`id` int(11) NOT NULL auto_increment,
`date` date NOT NULL,
`total` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_bin AUTO_INCREMENT=2 ;