Autor | Zpráva | ||
---|---|---|---|
Ronny Profil * |
Zdravím, chtěl bych se zeptat na věc ohledně refreshování. Mám počítadlo přístupů, které mám na index.php. Kdykoliv dám F5, přičte se mi další hlas do návštěvnosti... a proto by mě zajímalo, jaks e dá tohle ošetřit... u formulářů tomuhle zamezuji Headerem, ale tady si myslím že to moc nepomůže... předem děkuji za cenné rady
|
||
Mastodont Profil |
#2 · Zasláno: 20. 3. 2008, 10:32:36
Sledovat pomocí cookie, IP adresy ...
|
||
Ronny Profil * |
#3 · Zasláno: 20. 3. 2008, 10:38:53
Mastodont
co jsem se tak doectl na googlu, tak by pomohlo uzivatelovu IP adresu nezapisovat do DB( cili nepripocitavat jeho navstevu), kdyz na web pujde vicekrat nez jednou za 30 min.... ale nevim prave moc jak to realizovat... mam v DB sloupec date - cili bych ho asi musel prepsat na DATETIME, pak si do promenne ulozit ten casovy interval (30min treba) a pak podminka WHERE sloupec_datum_cas = NOW()-interval??? |
||
DoubleThink Profil * |
#4 · Zasláno: 20. 3. 2008, 11:14:12
u formulářů tomuhle zamezuji Headerem
To je jiný problém - přesměrování (303) se používá aby prohlížeč zahodil uložený POST požadavek. a pak podminka V ní bych doporučil pracovat s unix timestampem - je to lineární číslo (počet sekund), takže můžeš bez problémů odečítat intervaly. |
||
Ronny Profil * |
#5 · Zasláno: 20. 3. 2008, 11:37:23
DoubleThink
no vyzkouším to i s timestapeem... ale měl bych otázku... když chci teoreticky zjistovat, zda uzivatel se behem poslednich rekneme 10 minut podruhe necte nase stranky, tak podminka bude jak vypadat? if(($posledni_navsteva - ($aktualni_datum_cas - $interval)) > $interval) { ... nepripocitat jeho hlas k navstevnosti do DB... } else { . .... pripocitat... } $interval = 600; // tech 10min - zadava se to takhle? a jeste by me zajimalo - je nejaka fce, ktera by z cisla udelal jeho absolutni hodnotu? Protoze tenhle zapisse muze dostat i do zapornych hodnot: 14:30 - (15:15 - 10) > 10 ... a co s tim prave potom... |
||
nightfish Profil |
#6 · Zasláno: 20. 3. 2008, 11:45:21
if(($posledni_navsteva - ($aktualni_datum_cas - $interval)) > $interval) {
if ($aktualni_datum_cas - $posledni_navsteva > $interval) je nejaka fce, ktera by z cisla udelal jeho absolutni hodnotu? abs() $interval = 600; // tech 10min - zadava se to takhle? ano, akorát je vhodné do proměnné přiřadit hodnotu dříve, než ji chceš použít (v podmínce o pár řádků výše) |
||
Ronny Profil * |
#7 · Zasláno: 20. 3. 2008, 13:04:33
tak na to porad koukam a nevim kde delam chybu... v tabulce navstevnici mam sloupec datum typu DATETIME, a kdyz se uzivatel podiva na stranky drive nez po skonceni intervalu, nezmeni se jeho cas posledni navstevy v DB...:(
$ipadresa = $REMOTE_ADDR; // proměnná obsahující IP adresu návštěvníka $dnesni_datum_cas = Date("Y-m-d h:m:s"); $dnesnidatum = Date("Y-m-d"); // proměnná obsahující dnešní datum v potřebném formátu $interval = 60; $result[0] = MySQL_Query("SELECT * FROM navstevnici WHERE ip='".$ipadresa."'"); $host = MySQL_Fetch_Object($result[0]); $poslednipristup = $host->Datum; // zjistíme, zda již IP adresa v tabulce je: if ($poslednipristup==""): $pocitat=true; MySQL_Query("INSERT INTO navstevnici VALUES('".$ipadresa."', '".$dnesni_datum_cas."',1)"); // pokud ne, vložíme ji else: // zjistíme, zdali návštěvník ten samý den nebyl na stránce if ($dnesni_datum_cas - $poslednipristup > $interval): $pocitat = true; MySQL_Query("UPDATE navstevnici SET datum = '".$dnesni_datum_cas."', pocet = pocet+1 WHERE ip = '".$ipadresa."'"); // pokud ne, připočteme návštěvu IP adrese a uložíme aktuální datum else: $pocitat=false; MySQL_Query("UPDATE navstevnici SET pocet = pocet+1 WHERE ip = '".$ipadresa."'"); // jinak připočteme návštěvu IP adrese a nepočítáme jiné přístupy endif; endif; if ($pocitat): // zjistíme, zdali máme počítat $result[1] = MySQL_Query("SELECT * FROM statistiky_celkove"); if (MySQL_Num_Rows($result[1])!=0): $counter[0] = MySQL_Result($result[1],0)+1; MySQL_Query("UPDATE statistiky_celkove SET pocet = pocet+1"); else: $counter[0] = 1; MySQL_Query("INSERT INTO statistiky_celkove VALUES(1)"); endif; $result[2] = MySQL_Query("SELECT * FROM statistiky_mesicni WHERE mesic = '$month'"); $aktmesic = MySQL_Fetch_Object($result[2]); $counter[1] = $aktmesic->Pocet+1; if ($counter[1]==1): MySQL_Query("INSERT INTO statistiky_mesicni VALUES('$month',1)"); else: MySQL_Query("UPDATE statistiky_mesicni SET pocet = pocet+1 WHERE mesic = '$month'"); endif; $result[3] = MYSQL_Query("SELECT * FROM statistiky_denni WHERE datum='$dnesnidatum'"); $zaznam = MySQL_Fetch_Object($result[3]); $counter[2] = $zaznam->Pocet+1; if ($counter[2] == 1): MySQL_Query("INSERT INTO statistiky_denni VALUES ('$dnesnidatum', 1)"); else: MySQL_Query("UPDATE statistiky_denni SET pocet = pocet+1 WHERE datum = '$dnesnidatum'"); endif; // pokud ano, připočteme všem hodnotám jednu a vrátíme výsledky v poli $counter else: $result[4] = MySQL_Query("SELECT * FROM statistiky_celkove"); $counter[0] = MySQL_Result($result[4],0); $result[5] = MySQL_Query("SELECT * FROM statistiky_mesicni WHERE mesic = '$month'"); $tentom = MySQL_Fetch_Object($result[5]); $counter[1] = $tentom->Pocet; $result[6] = MYSQL_Query("SELECT * FROM statistiky_denni WHERE datum='$dnesnidatum'"); $dnes = MySQL_Fetch_Object($result[6]); $counter[2] = $dnes->Pocet; // jinak jen načteme všechny hodnoty do pole $counter endif; ten skript je z www.pcsvet.cz a chtel jsem si ho poupravit k obrazu sve, ale potrebuju nastavit zamezeni pripisovani hlasu do DB, kdyz se uzivatel prihlasi treba 2x za 10 min.... Omlouvamse za ten dlouhy kod, ale hledim do toho od rana a uz mi z toho hrabe.... dekuji moc z aochotu pomoci |
||
Časová prodleva: 16 let
|
0