PHPology.co.uk Collective of freelance web developers and designers

  • Handling cookies and arrays with PHP

    Working on my latest baby www.twitterknitter.co.uk one of the features was to add in a "like" tweet button. Catch - to prevent the user from liking if they had already liked.

    Normally I would have used a db and sessions and closing down the browser and reopening would allow the user to like again.

    This time I went for a cookie option so everytime a tweet was liked I would append that to the cookie so that the user was not able to vote unless they deleted that cookie.

    The code segment is below (not the cleanest code):

    <?php
    $twitter_likes_ = array();
    if(isset($_COOKIE['twitter_likes']))
    {
        //get the content from it
        $already_voted_str = $_COOKIE['twitter_likes'];
        //echo $already_voted_str . "<br />";
       
        //get the string and convert into an array so that I can check to see if this entry_id is in there already
        $already_voted_array = explode(",", $already_voted_str);
        //print_r($already_voted_array);

        //check that entry_id is not already in array
        if(!in_array($entry_id, $already_voted_array))
        {
            //increment like count
            $et->Update_likes();
           
            //send back the total likes
            $total_likes = ($et->Likes+1);
            echo $total_likes;

            //append the new entry_id to $already_voted_str
            $already_voted_str = $already_voted_str . ",".$entry_id;
        }
        else
        {
            echo $et->Likes;
        }
        setcookie("twitter_likes", $already_voted_str, time()+(2592000));  /* expires in 1 month */
        //echo "<br />Already votes string: ".$already_voted_str;
    }
    else
    {
        //increment like
        $et->Update_likes();
       
        //send back the total likes
        $total_likes = ($et->Likes+1);
        echo $total_likes;
       
        setcookie("twitter_likes", $entry_id, time()+(2592000));  /* expires in 1 month */
    }
    ?>

  • Comments

    1 comment(s)
    On Wed 19th January 2011 at 05:45am, Ashish Kumar wrote:
    Really great code,,,,Very helpful.Thanks for sharing it!!!!!!!
    Add your comment
    Name*:
    Email*:
    Website URL (including full path e.g. http://www.yourwebsite.com/):
    Comment* (html/script tags will be removed):
    What do you see below?: