开发者

storing sessions temporarily

I know that sessions are s开发者_如何学编程erver side, so, it is possible to save a session even if the browser is closed?

For example save a session for one day.

Please do not suggest "cookies", in this case must be implemented sessions.

thanks


They are saved already (see your php.ini file for the session path)... In fact, the real issue lies in garbage collecting them.

If you want to store them longer, edit your php.ini file or, define a custom session handler:

http://www.php.net/manual/en/function.session-set-save-handler.php


session_set_cookie_params I think is what you are looking for. If you are storing the session in a cookie, this will allow you to set the lifetime of that cookie. So the user can come back anytime within that time frame and still have their original session.

Side Note

Give this a read for more about session lifetimes etc. How do I expire a PHP session after 30 minutes?


php_value session.gc_maxlifetime 86400

You can set the above in .htaccess or modify session.gc_maxlifetime in php.ini

This defines how long PHP will have a session file for the user on the server before garbage collection (the example above will allow the server to maintain the sessions for 1 day), however sessions generally do rely on a session id cookie so if the browser is reset or clears the cookie the user won't re-attach to their web session (you are actually setting a session ID cookie to use sessions in most cases even if you don't realise it.)


You can create a database and store there the sessions and on client side just store $_SESSION['id'] wich is the id of the session in the database. But this will become a headache when you will have to store more and more variables in the session.


Like Gumbo said, pass it in the URL. But how I like to solve this is, instead of passing the SESSION_ID through the Url, just make it a hash, or encoded data.

Then whenever this user comes to your page. you can check in your headers if this hash/encoded-data is still in the valid time frame, and if this 'anonymous' user has permissions for thay zone.

THE DOWNSIDE: If this user passes around this link, anyone could access the data

THE UPSIDE: Extremely portable, and easy to implement


Store the SESSION_ID in a database bound to the users IP. whenever this user logs back in, start the session via setting the SESSION_ID with session_id

THE DOWNSIDE: A lot more work, and if the users ISP changes their generated IP regularly this won't work

THE UPSIDE: Even if he erases the SESSION_ID cookie you will be able to continue the session


there are many ways to do this but beign an artisan you could:

make an script that save each session for your users inside a file

OR

go to PHP.ini and change the session life time

OR

use the session_set_save_handler function more info here

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜