Hello,初涉web,问题请教。环境Linpus/Apache/PHP/Mysql,session存储在mysql中.我的理解是:用户每次点击页面后,都要删除过期的session,同时更新该用户对应session的过期时间和value。不知道是这样吗?问题1:用session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc')设置session处理函数后,用户点击页面时,php会自动调用_sess_write更新过期时间和value吗?问题2:如果不会自动更新,我手动更新session过期时间和value时,value是怎么计算出来的?有标准方法吧。value的值(每次更新都不一样,下面这是一个value,因为论坛限制,中间加了好多空格)形如:c2VjdXJpdHlUb2tlbnxzOjMyOiIxODE3ODkwZjdlOTRjYTd lYzRmYTM0NjYxZWQ4YmE5NSI7Y3VzdG9tZXJzX2hvc3RfYWRkcmVzc3xzOjI1O iJPRkZJQ0VfSVBfVE9fSE9TVF9BRERSRVNTIjtjYXJ0SUR 8czowOiIiO2NhcnR8TzoxMjoic2hvcHBpbmdDYXJ0Ijo3OntzOjg6ImNvbnRl bnRzIjthOjA6e31zOjU6InRvdGFsIjtpOjA7czo2OiJ3ZWl naHQiO2k6MDtzOjEyOiJjb250ZW50X3R5cGUiO2I6MDtzOjE4OiJmcmVlX3Noa XBwaW5nX2l0ZW0iO2k6MDtzOjIwOiJmcmVlX3NoaXBwaW5n X3dlaWdodCI7aTowO3M6MTk6ImZyZWVfc2hpcHBpbmdfcHJpY2UiO2k6MDt9bm F2aWdhdGlvbnxPOjE3OiJuYXZpZ2F0aW9uSGlzdG9yeSI6 Mjp7czo0OiJwYXRoIjthOjE6e2k6MDthOjQ6e3M6NDoicGFnZSI7czo1OiJpbmRl eCI7czo0OiJtb2RlIjtzOjY6Ik5PTlNTTCI7czozOiJnZ XQiO3M6MDoiIjtzOjQ6InBvc3QiO2E6MDp7fX19czo4OiJzbmFwc2hvdCI7YTow Ont9fWNoZWNrX3ZhbGlkfHM6NDoidHJ1ZSI7bGFuZ3V hZ2V8czo4OiJzY2hpbmVzZSI7bGFuZ3VhZ2VzX2lkfHM6MToiMiI7bGFuZ3VhZ2VzX 2NvZGV8czoyOiJnYiI7Y3VycmVuY3l8czozOiJDTlki O3RvZGF5X2lzfHM6MTA6IjIwMTAtMTEtMTgiO3VwZGF0ZUV4cGlyYXRpb25zfGI6M TtzZXNzaW9uX2NvdW50ZXJ8YjoxO2N1c3RvbWVyc19 pcF9hZGRyZXNzfHM6OToiMTI3LjAuMC4xIjs=谢谢。
解决方案 »
- PHP分页赋值问题....大大帮助解决一下.在线等了给分附代码
- 如何在主站中产看子网站的访问情况
- 请教个菜鸟问题 达人请帮忙!
- 急,请帮帮忙,我已经申请了顶级域名,我想在我的网站中让我的会员可以自由申请二级域名
- 删除checked
- 怎么运行不了php文件
- php连接mysql数据库出现问题 找不到指定的程序
- 新手问题!
- 如何在一段信息中把<script>和</script>去掉呢
- 朋友让写一个上传文件的页面(用php实现),可是我不懂,那位好心的朋友帮帮忙啊
- apatche,php,Linux系统都是UTF8编码,php读一个utf8的文件内容,为什么不用iconv从UTF8转换成GB2312,里面的中文就是乱码啊?
- StatusNet关于的ie6的支持问题
你看看手册吧··
问题2:如果不会自动更新,我手动更新session过期时间和value时,value是怎么计算出来的?有标准方法吧。value的值(每次更新都不一样,下面这是一个value,因为论坛限制,中间加了好多空格)形如:
// 现在你就可以象往常一样地使用session了。但我设置完了,session没动静阿。
session里应该不存时间.所以,也无更新一说.
mysql> describe sessions;
+---------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| sesskey | varchar(32) | NO | PRI | | |
| expiry | int(11) unsigned | NO | | 0 | |
| value | mediumblob | NO | | NULL | |
+---------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)sesskey,vq4a06hnt6qhnin1pv7j1tkp66
expiry是时间,类似1289455150;
value就是最开始我说的那个长串,我发现value是个base64编码过的字串,解码后发现是:
securityToken|s:32:"49fca76679b8a2fa939e4f904be113ff";customers_host_address|s:6:"bourne";cartID|s:0:"";cart|O:12:"shoppingCart":7:{s:8:"contents";a:0:{}s:5:"total";i:0;s:6:"weight";i:0;s:12:"content_type";b:0;s:18:"free_shipping_item";i:0;s:20:"free_shipping_weight";i:0;s:19:"free_shipping_price";i:0;}navigation|O:17:"navigationHistory":2:{s:4:"path";a:1:{i:0;a:4:{s:4:"page";s:12:"product_info";s:4:"mode";s:6:"NONSSL";s:3:"get";a:3:{s:5:"cPath";s:1:"1";s:11:"products_id";s:3:"751";s:5:"zenid";s:26:"rrafbleb11diqck5g61qk7s1j2";}s:4:"post";a:0:{}}}s:8:"snapshot";a:4:{s:4:"page";s:12:"product_info";s:4:"mode";s:6:"NONSSL";s:3:"get";a:3:{s:5:"cPath";s:1:"1";s:11:"products_id";s:3:"751";s:5:"zenid";s:26:"rrafbleb11diqck5g61qk7s1j2";}s:4:"post";a:0:{}}}check_valid|s:4:"true";language|s:7:"english";languages_id|s:1:"1";languages_code|s:2:"en";currency|s:3:"USD";today_is|s:10:"2010-11-23";updateExpirations|b:1;session_counter|b:1;customers_ip_address|s:13:"192.168.1.185";全是_SESSION[]里面的东西,
会将$_SESSION[]数组转为字串形式,经base64加密,作为session的value使用_sess_write写入DB。以后想要每次操作都更新value,就要给$_SESSION[]设置一个每次都不同的成员,如date/randd等。php会自动更新DB中的value和expiry。