Počítadlo návštevníkov (MySQL)

Programovacie jazyky, rady, poradňa...
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Počítadlo návštevníkov (MySQL)

Príspevok od používateľa geoge046 »

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
sanyika
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 364
Registrovaný: 11 apr 2006, 15:35
Bydlisko: Treti smetiak vpravo....d

Príspevok od používateľa sanyika »

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.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

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
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

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
A co tie konkretne znamenaju?
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

ked chce len pocitadlo a nie statistiky odkial sa kto dovalil, tak to asi ani nevyuzije... :)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

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]).
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

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]).
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? :P a poprosim chrono, mohol by si mi vysvetlit, alebo neaku stranku odporucit kde sa vysvetluju hentie "hacky"? dikes :roll:
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

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
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

turtlak69 napísal:no hacky najdes na www.hackujeme.sk
No lepsiu stranku si nemohol dat :lol: takto som sa uz dawno nezasmial 8)

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
:wink:
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

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
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

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
no to som skusal ::D heh zase taky blby nejsom, ale vsetko je po anglicky, nemas nieco po slovensky? :(
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

ufff tak v slovencine mam akurat tak nejake PDFka o php, ale kazde zacina slovom zaciname... s php zaciname a bla bla bla. cize nic take tam nie je. bohuzial. tu uz ja koncim. viac poradit neviem :( skus este stranky sovavsiti a jakpsatweb. mozno tam bude nejaky link na nieco podarene.
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

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
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.
:?:
vivaSlovakia
Guru wannabe
Guru wannabe
Príspevky: 2119
Registrovaný: 29 júl 2006, 10:30

Príspevok od používateľa vivaSlovakia »

geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

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 :)
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Príspevok od používateľa caesar1987 »

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...
geoge046
Star
Star
Používateľov profilový obrázok
Príspevky: 608
Registrovaný: 10 aug 2005, 14:15
Bydlisko: Prievidza
Kontaktovať používateľa:

Príspevok od používateľa geoge046 »

no tak vyriesil som to takto

NOW()-INTERVAL 1 DAY

8)
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

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 :)

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')");
}
}

?> 

este pridam tabulky z DB

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 ;
edit: bola tam chybicka. uz je to opravene
Napísať odpoveď