[ GMarco24 @ 22.05.2011. 16:47 ] @
Pozdrav svima,

Trazeci najbolje resenje za hit counter pokusao sam da samostalno iskreiram cookie+session counter, koji bi setovao cookie na 60min, a ako je cookie zabranjen, bar tokom sesije eliminisao povecanje hitova. Ili sam negde nesto pogresio ili je problem sto ne mogu da ga testiram na 'localhost' svoje masine, jer od browser-a koje imam jedino na google chrome sam nasao kako da zabranim cookies, ali je zabrana tipa ('prevent storing any data'), pa mi nije jasno da li pod 'any data' on zabranjuje i upis $_SESSION varijabli. Evo koda, a potrudio sam se da komentarima olaksam citanje:
Code:
<?php
    //Provera da li je cookie setovan
    if (!isset($_COOKIE['user']))
    {
        //Ukoliko cookie nije setovan, provera da li je session var setovana
        if (empty($_SESSION['user1']))
        {
            
            //Setovanje cookie i session varijable
            setcookie('user','1',time()+3600);
            session_start();
            $_SESSION['user1'] = '1';
            
            //Inkrementacija counter-a i upis u bazu
            $dbc = mysqli_connect('db_host', 'db_user', 'db_pass', 'db_base');
            $counter = getcount();
            $counter++;
            $query2 = "UPDATE countertable SET count = '$counter'";
            mysqli_query($dbc, $query2);
        }
    }

    //Ispisivanje na ekranu
    $counter = getcount();
    echo $counter;

    //Funkcija koja vraca count iz baze
    function getcount ()
    {
        $dbc = mysqli_connect('db_host', 'db_user', 'db_pass', 'db_base');
        $query1 = "SELECT * FROM countertable";
        $data = mysqli_query($dbc, $query1);
        $row = mysqli_fetch_array ($data);
        return $row['count'];
    }
?>


Hoce li ovo da radi na serveru?
[ GMarco24 @ 24.05.2011. 15:12 ] @
Ljudi? Niko nece da mi kaze dobro li je ovo?
[ dakipro @ 24.05.2011. 15:26 ] @
za pocetak instaliraj web developer toolbar za firefox pa kreni da testiras. Ne razumem zasto koristi cookie i sesiju zajedno, kad ti se sesija vec smesta u cookie ionako (uglavnom), ako je jedno zabranjeno u browseru vrlo vervoatno je i drugo.
A koja je poenta cele price?
mozda ima alternativnih resenja za ovo
[ GMarco24 @ 24.05.2011. 16:22 ] @
Pa 'vako: Hocu da se poseta ne broji ponovo 60min. To je ideja. Ali ako je cookie zabranjen, to ne mogu, pa ne mogu da izvedem. E, u slucaju zabranjenih kolacica hocu da mi bar ne broji jednog istog posetioca 6 puta dok covek seta po sajtu. Zbog toga session. A sto se tice SID, vozicu ga kroz URL svakako, jer mi session treba jedino ako cookies jesu zabranjeni. Eto, to mi je bila ideja, valjda sam malo razjasnio sta sam hteo.
[ GMarco24 @ 25.05.2011. 12:11 ] @
Da pitam ja nesto:
Ako ovaj kod koji sam poslao stoji na home stranici recimo. I cookies su zabranjeni, a postoji jos jedna stranica na sajtu. I ja sad posetim home page, pa tu drugu stranicu ( i lepo se prenese SID i var $_SESSION['user1'], proverio sam ), a zatim se vratim ponovo na home page. SID je jos uvek isti, ali $_SESSION['user1'] je prazna. Zasto to?
[ VladaSu @ 25.05.2011. 12:12 ] @
Ne postoji 100% siguran nacin da budes siguran da je to jedan te isti korisnik.
Svaki browser moze da blokira cookie.

SID se obicno cuva u cookie i sta onda ako je blokiran cookie? Nema nacin da sacuva SID i uvek kada ga trazis on ti kaze da ne postoji i ti mislis da je novi korisnik.
Ako je blokiran cookie onda vuces SID kroz URL ali URL parametar se onda lako menja od strane korisnika pa onda opet mozes da dobijes vise counter-a nego sto zaista imas.

Da bi bio sigurniji mozes da korisis Flash cookie koji se teze blokira (mislim isto tesko ali mnogo manje ljudi zna za to) ali onda mora da ti radi Flash.
[ GMarco24 @ 25.05.2011. 12:43 ] @
A da stavim ja to na cookie kao sav normalan svet onda i zavrsim pos'o. Pa ako blokiran - blokiran, sta da radim, neka ga broji koliko mu volja :)
[ VladaSu @ 25.05.2011. 13:19 ] @
Bolje ti je da ne broji ako je blokiran. Imaces realnije podatke.
[ dakipro @ 25.05.2011. 13:21 ] @
mozes dodati i dodaj IP proveru uz cookie
[ bantu @ 27.05.2011. 07:36 ] @
Ako se ne varam trebao bi da pozoves session_start(); prije nego provjeravas empty($_SESSION['user1']). Server bi onda trebao da aktivira postojecu ili otori novu sesiju i tek onda imas pristupa session variablama, barem tako kazu ovi ovde: http://php.net/manual/en/function.session-start.php
[ GMarco24 @ 27.05.2011. 11:41 ] @
Skroz si u pravu. Totalno sam prevideo to da mora session_start() pre if petlje