Tedd,
        I really like your solution.  The idea of storing the expiration in the 
SESSION makes it easier for me and makes it more flexible.  Someone else had 
provided a solution that would actually allow me to take it down to a user 
level if I needed to.  I loved the idea for flexibility but would have required 
a major rewrite.  Your idea gives me the flexibility and doesn't require any 
major rewriting - just a little tweaking.

Thanks!
Floyd

On Sep 14, 2010, at 12:58 PM, tedd wrote:

> At 10:26 AM -0400 9/14/10, Floyd Resler wrote:
>> We just got a client whose requirement is that user sessions expire after 30 
>> minutes of inactivity.  Our other clients are happy with not having their 
>> sessions expire during the work day (i.e. life is 8 hours).  I am using a 
>> MySQL database to store the session data.  My thought is to adjust the 
>> session expiration in the table based on the client currently logged in.  Is 
>> this a good approach or would there be better ways to do it?  And just to 
>> clarify: all clients use the same Web site.
>> 
>> Thanks!
>> Floyd
> 
> Floyd:
> 
> I don't know how others solve this, but my solution is pretty straightforward 
> (see code below).
> 
> I require this code for every script that is in the secured area. Simply put, 
> if the user runs a script, then this script is also run.
> 
> As a result, if the user is not logged in they are directed to the login 
> script. If the user is logged in, but has exceeded the expiration time due to 
> inactivity, then the user is redirected to the same login script with a GET 
> value to trigger the login script to report that they timed out due to 
> inactivity.
> 
> I find it bad practice to tell a user that they are not logged in when they 
> did log in. It's better to explain why they have to log on again.
> 
> Now, with respect to your storing the expiration time in the database, that 
> could be done easily enough by this script accessing the database, getting, 
> and setting the time-limit -- OR -- at the start of any logon have the script 
> pull the time-limit from the database and store that value in a SESSION. 
> Either way would work.
> 
> In any event, this is what I do.
> 
> Cheers,
> 
> tedd
> 
> ========== code
> 
> <?php
> 
> $redirect = 'http://yourdomain.com/admin/logon.php';
> 
> // standard security
> 
> $secure = isset($_SESSION['security']) ? $_SESSION['security'] : 0;
> 
> if ($secure == 0) // if admin is not logged in -- then redirect to the admin 
> logon
>   {
>   header("location:$redirect");
>   exit();
>   }
> 
> // timed security
> 
> $_SESSION['start'] = isset($_SESSION['start']) ? $_SESSION['start'] : 0;
> 
> $timelimit = 15 * 60; // 15 minutes
> $now = time();
> 
> if($now > $_SESSION['start'] + $timelimit)
>   {
>   logOff();
>   $t = '?t=1';
>   header("location:$redirect$t");
>   exit();
>   }
> 
> $_SESSION['start'] = time();
> 
> // properly logged on pass here
> 
> ?>
> 
> 
> <?php //============  log off  function =============
> // to destroy the current session
> 
> function logOff()
>   {
>   $_SESSION = array();
> 
>   if(isset($_COOKIE[session_name()]))
>      {
>      setcookie(session_name(), '', time()-86400, '/');
>      }
>   session_destroy();
>   }
> 
> -- 
> -------
> http://sperling.com/
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to