Autor | Zpráva | ||
---|---|---|---|
Anony Profil * |
#1 · Zasláno: 16. 2. 2011, 19:41:49
Ahoj, mam jednoduchý skript, který by měl ukládat každý pohyb kohokoliv na stránkách, vytvořil jsem ho do funkce, která vypadá takto:
function communityAttendance() { if(isset($_SERVER)) { if (!empty($_SERVER['HTTP_CLIENT_IP'])) $visitorIP = $_SERVER['HTTP_CLIENT_IP']; elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) $visitorIP = $_SERVER['HTTP_X_FORWARDED_FOR']; else $visitorIP = $_SERVER['REMOTE_ADDR']; $visitorSection = $_SERVER['SCRIPT_NAME']; $visitorInfo = "$_SERVER[HTTP_USER_AGENT]" . "$_SERVER[HTTP_ACCEPT_LANGUAGE]" . "$_SERVER[HTTP_HOST]"; $date = Time(); mysql_query("INSERT INTO attendance (ipaddress,whois,section,date) VALUES ('".$visitorIP."','".$visitorInfo."','".$visitorSection."','".$date."')"); } } přidání do databáze proběhne, ovšem jeden zápis se provede 7x (z toho 1x správně a 6x se visitorSection uloží jako kdyby návštěvník navšítivil 404 stránku). Tuto funkci volám v headeru stránky, kde načítám pro celý projekt i databázi, která však běží v pořádku. Mám na stránce i jiný skripty, které pracují přes SQL s MySQL databází a pracují v pořádku. Nevíte někdo čím by to mohlo být? Problém: - několikanásobné přidání do databáze (přesně 7x jeden zápis) |
||
DJ Miky Profil |
#2 · Zasláno: 16. 2. 2011, 19:48:18 · Upravil/a: DJ Miky
Nejspíš někdo skutečně načetl 404ku (předpokládám, že chybová stránka taky includuje header a taky volá funkci communityAttendance()). Může jít třeba o neexistující favicon.ico, tu prohlížeče načítají (resp. pokoušejí načítat) automaticky a můžou tak generovat 404 ve statistikách.
Místo $_SERVER['SCRIPT_NAME'] je možné do $visitorSection ukládat $_SERVER['REQUEST_URI'], což je adresa, o kterou klient zažádal. Podle toho se dá zjistit, jaké adresy generují 404ky. A co se týče samotného ukládání, pak je asi nejlogičtější řešení nevolat communityAttendance() na chybové stránce, popř. si neexistující adresy ukládat někam mimo (hlídání neexistujících odkazů). |
||
Anony Profil * |
#3 · Zasláno: 16. 2. 2011, 19:56:26
Podle toho se dá zjistit, jaké adresy generují 404ky.
- tu generuje každá neexistující adresa, to nemusím nikde zjišťovat přeci Místo $_SERVER['SCRIPT_NAME'] je možné do $visitorSection ukládat $_SERVER['REQUEST_URI'], což je adresa, o kterou klient zažádal. - zkoušel jsem, než jsem napsal, bohužel stejný problém (7x odeslaný požadavek) A co se týče samotného ukládání, pak je asi nejlogičtější řešení nevolat communityAttendance() na chybové stránce, popř. si neexistující adresy ukládat někam mimo (hlídání neexistujících odkazů). - pokud by se přesměrovávalo na chybové hlášky, probíhal by skript do nekonečna, dokud by u webhostingu nevypršel max. čas provádění php skriptu přeci, nebo jsem to špatně pochopil? |
||
Anony Profil * |
#4 · Zasláno: 16. 2. 2011, 20:00:14
No jasně, špatně jsem pochopil tvůj první bod. Opraveno, díky.
|
||
Časová prodleva: 13 let
|
0