16. januar 2005 - 21:07
Der er
29 kommentarer og 1 løsning
Simpel tæller
Hej, jeg vil gerne vide hvordan jeg kan sætte en cookie til en tæller så den ikke lægger en til hver gang man opdatere siden. Her er den kode jeg bruger til min tæller nu : <? $fil = fopen("counter.txt", "r"); $antal = fgets($fil, 4096); fclose($fil); echo $antal++; $fil = fopen("counter.txt", "w"); fwrite($fil, $antal); fclose($fil); ?> På forhånd tak :) - XuZeM
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Slettet bruger
16. januar 2005 - 21:19
#1
Hvis du har mod på lidt engelsk er det grundigt forklaret her:
http://dk2.php.net/manual/en/function.setcookie.php Du skal bruge setcookie() til at sætte cookien med, og if(isset($_COOKIE["CookieNavn"])) til at tjekke den med
16. januar 2005 - 21:23
#2
Har ikke testet koden, men: <? if(isset($_COOKIE['CounterCookie'])) { $fil = fopen("counter.txt", "r"); $antal = fgets($fil, 4096); fclose($fil); } else { $fil = fopen("counter.txt", "r+"); $antal = fgets($fil, 4096); echo $antal++; fwrite($fil, $antal); fclose($fil); $today = getdate(); setcookie("CounterCookie", "visited", mktime(0, 0, 0, $today['mday']+1, $today['mon'], $today['year'])); } ?>
16. januar 2005 - 21:35
#3
hmm... Hvad skal man så indesætte før html´en??? - XuZeM
17. januar 2005 - 08:01
#4
setcookie() skal kaldes inden output til klienten/skærmen, så før HTML'en ja!
17. januar 2005 - 08:02
#5
Dermed skal min kode også rettes til: setcookie("CounterCookie", "visited", mktime(0, 0, 0, $today['mday']+1, $today['mon'], $today['year'])); $fil = fopen("counter.txt", "r+"); $antal = fgets($fil, 4096); echo $antal++; fwrite($fil, $antal); fclose($fil); $today = getdate();
17. januar 2005 - 15:23
#6
Hej... Hvad så hvis at min cookie kun skal gælde 15 min... hvad skal jeg så skrive??? - XuZeM
17. januar 2005 - 15:26
#7
Så bruger du blot denne: setcookie("CounterCookie", "visited", time()+900);
17. januar 2005 - 15:26
#8
Den jeg lavede før skulle gerne virke til midnat, så den kun tæller en om dagen!
17. januar 2005 - 15:41
#9
Altså så skal koden der skal indsættes før html´en være : <? setcookie("CounterCookie", "visited", time()+900); $fil = fopen("counter.txt", "r+"); $antal = fgets($fil, 4096); echo $antal++; fwrite($fil, $antal); fclose($fil); $today = getdate(); ?> eller hva???
17. januar 2005 - 15:44
#10
<? $antal = 0; if(isset($_COOKIE['CounterCookie'])) { $fil = fopen("counter.txt", "r"); $antal = fgets($fil, 4096); fclose($fil); } else { setcookie("CounterCookie", "visited", time()+900); $fil = fopen("counter.txt", "r+"); $antal = fgets($fil, 4096); $antal++; fwrite($fil, $antal); fclose($fil); $today = getdate(); } ?> <html> osv... <body> Hits på siden: <? echo $antal; ?> </body> </html>
17. januar 2005 - 16:00
#11
Det vil ikke virke :S Den vil ikke opdatere... Har rettet så den skulle gøre det efter 10 sek for at se om det virkede.. men det gør det ikke. Her er min kode : <? $antal = 0; if(isset($_COOKIE['CounterCookie'])) { $fil = fopen("counter.txt", "r"); $antal = fgets($fil, 4096); fclose($fil); } else { setcookie("CounterCookie", "visited", time()+10); $fil = fopen("counter.txt", "r+"); $antal = fgets($fil, 4096); $antal++; fwrite($fil, $antal); fclose($fil); $today = getdate(); } ?> <html> <head> <title>Forside</title> </head> <body bgcolor="#6A6A6A"> <div align="center"> <table border="0" cellpadding="0" cellspacing="0" bordercolor="#111111" width="800" height="680"> <tr> <td bgcolor="#5A5A5A" width="800" height="120" colspan="5"></td> </tr> <tr> <td width="800" height="15" colspan="5"></td> </tr> <tr> <td bgcolor="#5A5A5A" width="120" height="439"></td> <td width="15" height="410"> </td> <td bgcolor="#5A5A5A" width="665" height="410" colspan="3"> <p align="center"> <iframe name="textbox" scrolling="auto" FRAMEBORDER="0" border="0" width="665" height="410" src="indexbox.php"> </iframe></p></td> </tr> <tr> <td width="800" height="15" colspan="5"></td> </tr> <tr> <td bgcolor="#5A5A5A" width="120" height="120"> </td> <td width="15" height="120"></td> <td bgcolor="#5A5A5A" width="530" height="110"></td> <td width="15" height="120"></td> <td bgcolor="#5A5A5A" width="120" height="120"> <p align="center">Denne side er blevet set<br><b><? echo $antal; ?></b><br> gange.</p> </td> </tr> </table> </div> </body> </html> Kan du se hvad der er galt??? - XuZeM
17. januar 2005 - 16:15
#12
Jeg var for hurtig da jeg smårettede dit script... Prøv denne: <? $antal = 0; $filename = "counter.txt"; if(isset($_COOKIE['CounterCookie'])) { $fil = fopen($filename, "r"); $antal = fread($fil, filesize($filename)); fclose($fil); } else { setcookie("CounterCookie", "visited", time()+10); $fil = fopen($filename, "r"); $antal = fread($fil, filesize($filename)); fclose($fil); $antal++; $fil = fopen($filename, "w"); fwrite($fil, $antal); fclose($fil); } ?> <html> <head> <title>Forside</title> </head> <body bgcolor="#6A6A6A"> <div align="center"> <table border="0" cellpadding="0" cellspacing="0" bordercolor="#111111" width="800" height="680"> <tr> <td bgcolor="#5A5A5A" width="800" height="120" colspan="5"></td> </tr> <tr> <td width="800" height="15" colspan="5"></td> </tr> <tr> <td bgcolor="#5A5A5A" width="120" height="439"></td> <td width="15" height="410"> </td> <td bgcolor="#5A5A5A" width="665" height="410" colspan="3"> <p align="center"> <iframe name="textbox" scrolling="auto" FRAMEBORDER="0" border="0" width="665" height="410" src="indexbox.php"> </iframe></p></td> </tr> <tr> <td width="800" height="15" colspan="5"></td> </tr> <tr> <td bgcolor="#5A5A5A" width="120" height="120"> </td> <td width="15" height="120"></td> <td bgcolor="#5A5A5A" width="530" height="110"></td> <td width="15" height="120"></td> <td bgcolor="#5A5A5A" width="120" height="120"> <p align="center">Denne side er blevet set<br><b><? echo $antal; ?></b><br> gange.</p> </td> </tr> </table> </div> </body> </html>
17. januar 2005 - 16:57
#13
Den vil stadig ikke??? selvom jeg venter lang tid og trykker på F5 så vil den ikke tælle igen... :( - XuZeM
17. januar 2005 - 17:00
#14
Siger den nogle fejl? Jeg har lige testet scriptet, og her virker det fint nok!
17. januar 2005 - 17:04
#15
efter 10 sek???? kan bare ikke få det til at virke... og har kopieret den kode du sendte og lagt ind i stedet for min gamle php kode.... Prøver lige igen. - XuZeM
17. januar 2005 - 17:08
#16
Hej...
den vil stadig ikke virke hos mig :S
Her er et link til den side jeg uploader det på :
http://cpm.1go.dk/test.php Har ikke lige fået taget mig sammen til at købe et rigtigt domæne så det bliver lige en lille free et i første omgang :P
- XuZeM
17. januar 2005 - 17:59
#17
De må være noget med cookies på din browser... Åben siden, den skulle gerne vise 7 nu! (hvis ikke andre har kigget på siden siden mig) Er cookies disabled?
17. januar 2005 - 19:55
#18
Ja den viser 7 men skulle den ikke vise 8 når jeg nu er en ny besøgende??? Og nej cookies er ikke disabled fordi jeg har sat den til automatisk login på nogle forskellige sider bla. her inde på eksperten.dk og det er ikke windows der husker det... - XuZeM
17. januar 2005 - 21:31
#19
Ok! Jeg besøgte til nummer 6, så derfor blev du besøgende nummer 7! Har lige besøgt 8... Så du skulle blive nummer 9!
Slettet bruger
17. januar 2005 - 22:00
#20
"Denne side er blevet set 9 gange. " får jeg :)
18. januar 2005 - 08:09
#21
Hvad hvis du trykker Opdater/F5 efter 10 sekunder EL_BARTO? Øges tallet så ikke?
18. januar 2005 - 18:08
#22
Denne side er blevet set 13 gange. Den viser det sammen ved opdatering... ;-)
18. januar 2005 - 19:30
#23
hmm... Jeg synes godt nok det er lidt underligt. :S Kan man entelig også gøre så den bruger en ip ??? altså så den tjekker om den samme ip har været inde p siden inden for 10 sek? - XuZeM
18. januar 2005 - 20:19
#24
Ja, men hvis ikke en cookie kan bruges, så vil jeg evt anbefale dig at bruge MYSQL og så gemme ip! Dog vil du så løbe ind i andre problemer. 1 IP er ikke = 1 bruger! F.eks. er nogle virksomheder, der bruger alle en og samme ip! Så de vil alle tælle som et besøg!
19. januar 2005 - 18:49
#25
Kan man så ikke lave sån at det tæller i et døgn så den tæller for et nyt besøg næste dag? - XuZeM
19. januar 2005 - 20:02
#26
cookie eller mysql/ip?
20. januar 2005 - 20:28
#27
mysql/ip
21. januar 2005 - 00:02
#28
Jo, det kan man godt! Så laver du en funktion, som tester om brugeren har været online i dag, hvis ja, så opdatere vi blot tiden, hvis nej, så indsætter vi hans ip i databasen. Og voila, så har du din counter.
24. januar 2005 - 16:33
#29
øøøhm... hvordan gør man så det??? Jeg ved meget lidt om php men endnu mindre om mysql :P - XuZeM
Vi tilbyder markedets bedste kurser inden for webudvikling