服务器开启session
客户端通过浏览器访问服务器,服务器会判断请求头信息中是否包含session_id,如果包含则去session文件存储位置寻找对应的session文件,session文件不存在则创建;如果请求头中不包含session_id,则会自动创建session文件,同时将session_id返回到服务器中,如果本地开启cookie则session_id保存在cookie中
cookie可以设置生存周期,默认是保存在内存中,关闭浏览器销毁cookie,重新打开浏览器访问服务器此时session_id不存在,就会重新创建session文件和session_id;可以设置cookie的生命周期,如果关闭浏览器时扔在生命周期内,则会将session_id保存到指定的cookie存放位置,下次打开浏览器会扫描是否有对应的cookie,如果有对应cookie,向指向服务器发送请求就可以得到session,(即自动登录机制的实现方式)
session_id是计算机自动生成的一个不易破解没有规律的唯一值,用于做唯一标识;session文件存储于服务器端,服务器端可以配置session的生命周期,到期之后会自动删除失效;也可以程序控制删除,例如登录退出时unset(清空session文件内容)、destroy(删除session文件) (本人是PHP菜鸟,只能用PHP函数)
session文件内容类似hashMap的散列形式,里面存储写入的数据
可以在cookie中写入一些值,setcookie(key, value, time, path, domain) 具体含义百度既可
会话机制针对http协议的无状态产生(看资料都是这样说,错了勿喷 本人小白)
客户端禁用cookie,可以将session_id绑定到url传递,服务器作为url参数获取,这是一个常见问题
由于session_id返回给客户端,存储在cookie中,可以被查看到,因此比如简单的做法:复制session_id模拟请求服务器,这就是所谓的session劫持,因此,通常会说cookie是不安全的
PS: 只是本人的学习笔记,如果有童鞋看到了可以起到帮助最好,如果有错误希望勿喷,只是粗浅的理解 本人PHP小菜鸟一枚 勿怪
本文出自 “11447557” 博客,请务必保留此出处http://11457557.blog.51cto.com/11447557/1961184
原文地址:http://11457557.blog.51cto.com/11447557/1961184