Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2

Thread: Session help

  1. #1
    New to the CF scene
    Join Date
    Dec 2012
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Session help

    Hello!
    I'm coding a forum, and I want users to receive a virtual coin for every minute they're online. I got the session up and working. So far there's a forum where users are able to post and reply threads.
    About the coin system, my first problem is that I want to avoid users to abuse the system, so I want a 30 minutes timeout for the session.
    Secondly, how do I determine how long the session has been active in PHP?
    Thank you!

  • #2
    Senior Coder
    Join Date
    Feb 2011
    Location
    Your Monitor
    Posts
    4,299
    Thanks
    57
    Thanked 525 Times in 512 Posts
    Blog Entries
    5
    Quote Originally Posted by KimLefevre View Post
    About the coin system, my first problem is that I want to avoid users to abuse the system, so I want a 30 minutes timeout for the session.
    There isn't really a 'good' way to achieve that. PHP handles sessions differently on different systems. On some systems it will automatically close the session after 24 minutes (might be 22 actually..I can never remember the exact details ). The only thing you could do is to have a cron run every minute and scan each session file to see when it was opened but thats rather advanced and depends on all sorts of operating system permissions etc.

    Quote Originally Posted by KimLefevre View Post
    Secondly, how do I determine how long the session has been active in PHP?
    Thank you!
    Thats the easy part. Simply record the login time in the session:
    $_SESSION['login_time'] = time();

    Then you know how long ago they logged in.

    The downside is you still don't really know when they've stopped viewing the site because PHP is reactive. The only thing you could really do is to see if there is more than 30 minutes since their last usage and if there is don't award any coins. If it's less than 30 minutes then award coins but again you're still up against the php automatic termination of sessions problem so I would suggest going for a 5 or 10 minute time instead
    See my new CodingForums Blog: http://www.codingforums.com/blogs/tangoforce/

    Many useful explanations and tips including: Cannot modify headers - already sent, The IE if (isset($_POST['submit'])) bug explained, unexpected T_CONSTANT_ENCAPSED_STRING, debugging tips and much more!


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •