Avatar billede schunck Juniormester
25. maj 2005 - 01:22 Der er 12 kommentarer og
1 løsning

reload sikre counter

hej jeg har følgende counter på min side lige nu.

<?php
include("include/db.php");
$res = mysql_query("SELECT hits FROM hits");
$row = mysql_fetch_array($res);
$hits_foer = $row["hits"];
$hits_efter = $hits_foer++;
mysql_query("UPDATE hits SET hits=hits+1");
print $hits_efter;
?>

hvordan reload sikrer jeg den til 30 min?
Avatar billede c_k Nybegynder
25. maj 2005 - 01:55 #1
læg en cookie med 30 minutters levetid hos brugeren og tjek om den eksisterer før du tæller et hit
Avatar billede schunck Juniormester
25. maj 2005 - 02:01 #2
Jeg er ikke særlig stærk til programmering.

Kunne jeg måske lokke dig til at lave koden for mig? ;o)
Avatar billede schunck Juniormester
25. maj 2005 - 02:03 #3
kan det her gøre det hvis det er?

if ($HTTP_COOKIE_VARS['countercookie'] != "yes") {

<?php
include("include/db.php");
$res = mysql_query("SELECT hits FROM hits");
$row = mysql_fetch_array($res);
$hits_foer = $row["hits"];
$hits_efter = $hits_foer++;
mysql_query("UPDATE hits SET hits=hits+1");
print $hits_efter;
?>

setcookie("countercookie", "yes");
Avatar billede schunck Juniormester
25. maj 2005 - 02:14 #4
Bør måske lige nævne at den melder fejl når jeg sætter cookies ind på den måde, jeg selv foreslår.
Avatar billede c_k Nybegynder
25. maj 2005 - 02:53 #5
jeg kender desværre ikke noget til php så jeg kan ikke skrive noget kode til dig :(
Avatar billede c_k Nybegynder
25. maj 2005 - 02:56 #6
Avatar billede filip_b_l Nybegynder
25. maj 2005 - 06:40 #7
det er fordi setcookie er en header funktion - dvs at den skal sendes før nogen som helst indhold sendes til browseren... Altså tjek om der er sat en cookie... hvis ikke skriv i database, hvis der er - skriv ikke i db... derefter sætter du cookien og til sidste henter du det nye resultat fra databasen og printer det...
Model:

if ($cookie != "yes") {
//SKRIV I DB funktion
}
setcookie ();
//hent count fra db
print "hits: $hits";

Det skulle virke hvis du gør som det... vær opmærksom på at du skal sætte en udløbstid på din cookie... læs om setcookie på php.net
Avatar billede jakobdo Ekspert
25. maj 2005 - 07:59 #8
Du kan også lave en reload sikker side via en session...

F.eks.:

session_start();
if($_SESSION['counted'] != TRUE)
{
//Vi skal øge tælleren med 1.
$_SESSION['counted'] = true;
}
echo "Besøgende i dag... $count"; //Skal indeholde noget udtræk fra din DB
Avatar billede schunck Juniormester
25. maj 2005 - 08:19 #9
Og så virkede det pludselig
Avatar billede Bjarne Novice
25. maj 2005 - 22:35 #10
jakobdo> Cookien er bedre til dette formål. En sesssion-cookie "expires at end of session", hvilket jo betyder hvis brugeren lukker browservinduet og derefter loader igen, bliver vedkommene talt med i counteren.
Avatar billede schunck Juniormester
26. maj 2005 - 16:59 #11
Det var også Cookien jeg endte med at bruge
Avatar billede jakobdo Ekspert
26. maj 2005 - 18:09 #12
Enig om at en cookie er bedre!
Men problemet var reload!
Du kan også slette en cookie, og så er det lige fedt.
Avatar billede Bjarne Novice
27. maj 2005 - 14:16 #13
lige fedt, ej. Du kan self slette en cookie, men det kræver jo arbejde. hvorimod sessions-cookien sletter sig automatisk.
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