You are not logged in.

wcf.regNote.message

Prometheus

Administrator

  • "Prometheus" started this thread

Posts: 3,278

  • Send private message

1

Thursday, July 17th 2003, 3:50pm

Counter programmieren teil 2

Counter mit hilfe von Cookies und ohne Datenbank
im ersten teil haben wir nun kennen gelernt wie ein ganz einfacher counter funktioniert. um nun das angesprochene problem zu beheben das man den counter durch ein einfaches reload der seite immer höher treiben kann bauen wir nun ein cookie mit ein welches dann verhindert das der user ein zweites mal gezählt wird innerhalb einer eingegebenen zeitspanne. es sei an der stelle angemerkt das dies nur dann funktioniert wenn der user in seinem browser die cookies akzeptiert und diese nicht löscht. der server prüft das cookie beim aufruf und wenn dieses nicht vorhanden ist tut er so als wäre es der erste aufruf für den user. schauen wir uns das ganze mal an.

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if(!file_exists("count.txt"))
    {
        fopen("count.txt","a");
    }
$counter=fopen("count.txt","r+");
$aufruf=fgets($counter,100);
if(!$countcookie OR $countcookie<time()-3600)
    {
        setcookie("countcookie",time());
        $aufruf=$aufruf+1;
        rewind($counter);
        fputs($counter,$aufruf);
    }
echo $aufruf;
?>

erklärung
so ich gehe jetzt nur auf die änderungen zum ersten teil ein.
wie wir sehen wird nun der durchlauf des hochsetzens des counters und des speicherns des neuen wertes innerhalb einer if bedingung abgehandelt. in dieser if bedingung wird nun abgefragt ob es auf dem rechner des users ein cookie mit dem nane "countcookie" gibt, wenn nein ist die if bedingung erfüllt. wenn ja, wird geprüft ob die gespeicherte zeit im cookie mindestens eine stunde her ist (zeit im cookie kleiner als aktuelle serverzeit minus 3600 sekunden). ist die bedingung erfüllt wird der im teil 1 schon gezeigte prozess gestartet um den counter im eins hoch zu setzen und zusätzlich wird mit setcookie das cookie mit der aktuellen zeit neu geschrieben. nach der bedingung wird einfach nur der aktuelle counterstand als text ausgegeben.

hier haben wir nun eine möglichkeit kennen gelernt mittels cookies zu verhindern das der counterstand in die höhe getrieben werden kann. die möglichkeit mit den cookies kann auch an beliebigen anderen stellen eingesetzt werden. wichtig ist wie schon erwähnt nur das der rechner des users die cookies auch erlauben muß sonst nützt diese möglichkeit rein garnichts. weitere möglichkeiten folgen in einem der weiteren teile.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

wcf.user.socialbookmarks.titel