14. februar 2006 - 13:23Der er
19 kommentarer og 1 løsning
bannersystem blokeres af Norton
Jeg har lavet et baner system til en side, men den tæller ikke "Indkomne" links hvis man har Norton Firewall slået til, og det er jo lidt noget skidt eftersom den er forholdsvis meget udbredt ;-)
Her er min kode, nogen der kan se hvad der skal rettes? ------------------------------------ $ref = $_SERVER['HTTP_REFERER']; $realurl = parse_url($ref); $indsaet = $realurl['host'];
$tael_ref = mysql_query("SELECT id FROM bannerlinks WHERE link = '$indsaet'") or die(mysql_error()); $antal_ref = mysql_num_rows($tael_ref); if($antal_ref==1){ $ip = $_SERVER['REMOTE_ADDR']; $vis_ref = mysql_fetch_assoc($tael_ref); $tael_ip = mysql_query("SELECT COUNT(*) FROM ipind WHERE ip = '$ip' AND id = '$vis_ref[id]' AND DATE_ADD(tid, INTERVAL 20 MINUTE) > NOW()") or die(mysql_error()); $antal_ip = mysql_result($tael_ip, 0); if($antal_ip==0){ mysql_query("UPDATE bannerlinks SET ind = ind+1 WHERE id = '$vis_ref[id]'") or die(mysql_error()); mysql_query("INSERT INTO ipind (ip, id, tid)VALUES('$ip', '$vis_ref[id]', NOW())") or die(mysql_error()); } } ---------------------------------------
Har en mistanke om at fejlen ligger her: -_-_-_-_-_-_ $ref = $_SERVER['HTTP_REFERER']; $realurl = parse_url($ref); $indsaet = $realurl['host']; _-_-_-_-_-_-_-_-_-_
//Tjekker om brugeren kommer fra en side som jeg linker til
$tael_ref = mysql_query("SELECT id FROM bannerlinks WHERE link = '$indsaet'") or die(mysql_error()); $antal_ref = mysql_num_rows($tael_ref); if($antal_ref==1){
//Hvis der findes en link magen til det brugeren kommer fra skal vi tjekke om han/hun har lavet en indkomment link inden for de sidste 20 min.
$ip = $_SERVER['REMOTE_ADDR']; $vis_ref = mysql_fetch_assoc($tael_ref); $tael_ip = mysql_query("SELECT COUNT(*) FROM ipind WHERE ip = '$ip' AND id = '$vis_ref[id]' AND DATE_ADD(tid, INTERVAL 20 MINUTE) > NOW()") or die(mysql_error()); $antal_ip = mysql_result($tael_ip, 0); if($antal_ip==0){
//Hvis han/hun ikke har lavet et indkomment link, så skal der laves et :-)
mysql_query("UPDATE bannerlinks SET ind = ind+1 WHERE id = '$vis_ref[id]'") or die(mysql_error()); mysql_query("INSERT INTO ipind (ip, id, tid)VALUES('$ip', '$vis_ref[id]', NOW())") or die(mysql_error()); } }
er det HTTP_REFERER der ikke bliver sat når der er firewall på så? det er jo ikke en variabel man kan regne med da det ikke er alle browsere der sender den med eller er problemet med remote_adr?
Tror det der sker når man har slået Norton Firewall til er at HTTP_REFERER bliver den side man kommer ind på og ikke den man kommer fra.. Nogen der har en idé om hvad man kan gøre ved det ?
Du kan ikke få en sikker reference til siden, der kalder scriptet. REMOTE_ADDR er også usikker, da et firma typisk har én IP, set udefra - og desuden kan man gå gennem en proxy, der sætter en tilfældig IP
Kan den på ingen måde lade sig gøre at få en sikker reference? Hvordan skal jeg kunne tjekke om brugeren har klikket inden for de sidste 20 minutter på en måde der er mere sikker end at tjekke ip?
Det kan du ikke uden videre checke, da der sagtens kan sidde 300 medarbejdere bag den samme IP. En cookie er nok den bedste løsning ... selvom den naturligvis også kan manipuleres.
Jeg ved godt at man kan risikere at udelukke en masse brugere ved at tjekke via IP, men samtidig kan man også få en fuldstændig upålidelig statistik hvis man bruger Cookie.. Men den side det skal bruges på bliver primært besøgt at private i løbet af eftermiddagen/aftenen :-)
Men er det ikke muligt at tjekke hvor brugeren kommer fra på en anden og mere sikker måde en HTTP_REFERER???
Okay.. Så det eneste jeg kan gøre for at forbedre det er at finde ud af hvad der vil være bedst i denne situation cookie/http_referer.. Men, man tak for hjælpen så.. Du må gerne lægge et svar :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.