首先要将客户端和服务器端建立一一联系,每个客户端都得有一个唯一标识,这样服务器才能识别出来。建议唯一标识的方法有两种:cookie或者通过GET方式指定。默认配置的PHP使用session的时会建立一个名叫”PHPSESSID”的cookie(可以通过php.ini修改session.name值指定),如果客户端禁用cookie,你也可以指定通过GET方式把session id传到服务器(修改php.ini中session.use_trans_sid等参数)。
我们查看服务器端session.save_path目录会发现很多类似sess_vv9lpgf0nmkurgvkba1vbvj915这样的文件,这个其实就是session id “vv9lpgf0nmkurgvkba1vbvj915″对应的数据。真相就在这里,客户端将session id传递到服务器,服务器根据session id找到对应的文件,读取的时候对文件内容进行反序列化就得到session的值,保存的时候先序列化再写入。
事实就是这样,所以如果服务器不支持session或者你想自定义session,完全可以DIY,通过PHP的uniqid生成永不重复的session id,然后找个地方存储session的内容即可,你也可以学flickr把session存储在MySQL数据库中。
php中session和cookie的区别
本文较为详细的比较了php中session与cookie区别。分享给大家供大家参考。具体分析如下:
1、存放的位置
cookie保存在客户端,session保存在服务器端的文件系统/数据库/memcache等。
2、安全性
session因为保存有服务器端,安全性无疑更高一些。
3、网络传输量
cookie通过网络在客户端与服务器端传输,会占用一些带宽;而session保存在服务器端,不需要传输。
4、保存时间(生命周期),以20分钟为例
cookie的生命周期是累计的,从创建时就开始计算,20分钟后生命周期就结束,即cookie无效;
session的生命周期是间隔的。从创建时开始计时,如果20分钟内,没有访问过session,那么session会在20分钟时失效。而如果在20分钟内的任一时间访问过session,那么,session的.生命周期将重新开始计算。
5、session和cookie的生效路径
cookie在默认情况下,cookie只在当前文件的目录下生效,一般需要设置setcookie的第四个参数为根目录,使得整个网站所在页面都生效;session默认情况下是根目录下生效(可以通过查看cookie的PHPSESSID信息知道,或者通过php.ini文件里的session.cookie_path来设置)。
希望本文所述对大家的php程序设计有所帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)