Avatar billede blueeye97 Nybegynder
05. maj 2005 - 23:15 Der er 13 kommentarer og
1 løsning

Tæller der ikke påvirkes af refresh

Jeg har en simpel lille tæller der skriver til en log fil. Men den er jo nem at spolere hvis en bruger hamrer løs på F5. Hvordan får jeg den til f.eks. kun at registrere samme IP 1 gang hvert 10 minut ? De 2 ip'ere er mine egne sådan at jeg ikke tælles med...

<?
$ips = array("80.111.22.333","80.444.555.666");
if (!in_array($_SERVER['REMOTE_ADDR'],$ips)){
$fil=fopen("counter/counter.txt","r");
$antal=fgets($fil,1096);
echo "<font size='0' face='verdana'>Antal besøg: ";
echo "<font size='0' face='verdana'>".$antal++;
fclose($fil);
$fil=fopen("counter/counter.txt","w");
fwrite($fil,$antal);
fclose($fil);
}
?>
Avatar billede plazm Nybegynder
05. maj 2005 - 23:38 #1
<?
session_start();
$ips = array("80.111.22.333","80.444.555.666");
if (!in_array($_SERVER['REMOTE_ADDR'],$ips) || !$_SESSION['Counter']){
$fil=fopen("counter/counter.txt","r");
$antal=fgets($fil,1096);
echo "<font size='0' face='verdana'>Antal besøg: ";
echo "<font size='0' face='verdana'>".$antal++;
fclose($fil);
$fil=fopen("counter/counter.txt","w");
fwrite($fil,$antal);
fclose($fil);
$_SESSION['Counter'] = "Talt";
}
?>

Med dette opdaterer den hver gang siden åbnes fra ny.
Avatar billede blueeye97 Nybegynder
06. maj 2005 - 10:50 #2
Hov... virker ikke...

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /hsphere/local/home/x/x.dk/index.php:7)
Avatar billede plazm Nybegynder
06. maj 2005 - 10:52 #3
sæt

<?php
session_start();
?>

ind øverst i dine dokumenter i stedet for sammen med den anden kode så.
Avatar billede blueeye97 Nybegynder
06. maj 2005 - 11:07 #4
Tælleren tikker stadigvæk ved F5
Avatar billede plazm Nybegynder
06. maj 2005 - 11:39 #5
det var min fejl
if (!in_array($_SERVER['REMOTE_ADDR'],$ips) || !$_SESSION['Counter']){

skal være
if (!in_array($_SERVER['REMOTE_ADDR'],$ips) && !isset($_SESSION['Counter'])){
Avatar billede blueeye97 Nybegynder
06. maj 2005 - 18:14 #6
Jep virker :o)

svar udbedes...
Avatar billede plazm Nybegynder
06. maj 2005 - 19:00 #7
efter nogle fejl fik vi det fixet ;)
Avatar billede xyborx Nybegynder
06. maj 2005 - 19:03 #8
Det skal måske lige noteres at der stadig kan snydes, hvis man slår cookies fra. Bare så du ikke bliver overrasket :)
Avatar billede plazm Nybegynder
06. maj 2005 - 19:32 #9
Cookie har da ikke noget med sessions at gøre, eller tager jeg helt fejl der ?
Avatar billede xyborx Nybegynder
06. maj 2005 - 19:34 #10
Med sessions vil der blive gemt en cookie med et id. Det id refererer til en session der er gemt på serveren. Hvis man ikke accepterer cookies, så vil man få tildelt en ny session for hver reload.
Avatar billede plazm Nybegynder
06. maj 2005 - 19:40 #11
Du har ret. Min fejl :)
Avatar billede blueeye97 Nybegynder
06. maj 2005 - 21:27 #12
Skal det forståe sådan at der ikke er mulighed for at forhindre det ?

Kan man ikke tjekke om et IP nr har været på inden for en given tid og så på den måde forhindre det ?
Avatar billede plazm Nybegynder
07. maj 2005 - 18:59 #13
jo det kan du godt, hvis du har adgang til en database ?
Avatar billede blueeye97 Nybegynder
08. maj 2005 - 20:38 #14
Det har jeg da... MySql
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester