纯粹技术探讨。
近来在研究自定义文本Session,根据我自己对Session的理解和体会,实现办法可以是:
1。用户登陆,密码校对后,以一种算法随机生成一随机数字Session_id,具体实现就是服务器生成一纯文本文件,就以Session_id命名,用户id,密码等敏感信息写入这个文本,本地cookie写入用户id和Session_id。。由于登陆时候可以选择Session/cookie保持实效。这个数字比如[-1(不保存)+30(保存30天)等。。],同时写入Session文本和cookie。。
2。这样,如果选择保持登陆信息(比如+30),则在30天内用户再次访问时候,从cookie中获取Session_id。通过读取服务器上的Session_id文本,来检验用户id和密码。。如果通过。则自动认为登陆。
现在我的问题就是远程服务器上的Session文本文件的处理。大家知道,Session_id是随机产生的,那么相同的用户在不同的地方,不同的登陆时间得到的Session_id都是不同的,那么如果不对这些文本处理。久而久之,肯定有很多废弃了。。。那么应该对这些进行删除处理的。。那么机制呢?
文本的特殊性质,为了节省资源,一般只有在用户重新访问的时候才进行Session文本的时效验证。那么那些可能永远也访问不到的Session文本就验证遥遥无期了。
如果采用一种机制对Session文本进行删除,比如把时效写入Session文本,按照时效自动删除。。。但是时效选择比较长的呢?他可能是有效的Session,也可能是废弃的Session。如果删除,造成该用户下次不能自动登陆。。那就失去保持的含义了。如果不处理。则浪费空间。影响效率。 困惑ing。。。
希望各位高人指点。还有我对Session理解不对的地方也请不吝指教:)
曾研究過的一個項目...汗.....
你產生一個 無設刪除時間的Session 及 產生一個 設了時間的Session
並使用 notpad打開看看吧.....
恩。。反正我现在不想让他们永久登陆了。。所以。。删除。哈哈:)
我的意见,如果选择永久登陆,那么生成的Session文件名以前加一个特殊的标记 比如 leo 之类的,这样每隔一段时间清理文件的时候可以保留这些。。
不过,如果永久登陆的人的cookie丢失了。。那。。。
恩。。。和我想的一样。。。就是我不知道这个文本是否是废弃的。。
所以。。可以选择7天=永久?就是不允许永久登陆。最长也只能选择7天登陆。。
或者? 这个文件保留。当一定时间比如10天没有人来访问它?认为它已经废弃?这样如果他第11天来了,对不起,请登陆吧?呵呵:)
那就用
用户名 + timemark + Session id
作文件名字。。。timemark表示保存的时间长短
这样登陆的时候就能直接检查是否过期了。。
似乎太长了吧?
我觉得直接修改属性,把他的创建时间修改成要过期的日子?也许一个stat函数就解决了?
我已经决定分目录了:)
万一服务器时间错误呢?咔咔
时间不是读取的,是自己算出来写进去的,和实际的访问时间没有关系拉:)
让用户重新登陆一下没关系的嘛,几秒的事情
不如 SESSION 每月定期删除一次...
恩,目前我就是准备取消 “永久登陆” 这个选项
恩,一年都不重登陆一次的利率是很小的
一般系统都要重装一次呢。。
现在me很懒。。不装系统了。。。
严重跑题中。。。
世界尽头失落在海里的城市,狮子流泪的地方。让我们跑题……
。。。。
移步: http://bbs.chinaunix.net/forum/viewtopic.php?t=436242
既然有cookies 还要进程号干嘛呢?
没有cookies用进程号还可以理解的说~~~~~~~~~~~~~~~