cookie AND session
当你浏览一个页面 页面发你一个cookie 浏览器会接受这个cookie 然后保存到你的磁盘上
cookie信息会以一个字符串的信息保存下来
setcookie('cookie名字',cookie内容,在客户端时间,路径,区域,安全cookie,true的话只能通过http访问) 保存cookie
setcookie('gwyy','gwyyabcd',time()+3600);
print_r($_COOKIE);
也可以用一个数组名来表示cookie名 但以后调用的话 都是数组名调用了 数组里面不要加引号
setcookie("lt[one]",'aaaa');
echo $_COOKIE['lt']['one'];
cookie在文件里会给你要弄个 url码把中文给存储起来
删除cookie
setcookie('lt','',time()-3600);
批量删除cookie 用foreach 如果把cookie删除了 cookie存放的文件自然也删除了
cookie 获取上次登陆时间 用数据库的话 就是 做2个字段 一个这次 一个上次 这次登陆 把最新登陆 写入当前时间 把以前的最新登陆的时间更新到上次登陆时间去
if($_COOKIE['last']) {
echo $_COOKIE['last'];
setcookie('last',date("Y-m-d H:i:s"),time()+3600);
} else {
setcookie('last',date("Y-m-d H:i:s"),time()+3600);
}
如果cookie没有设置 时间那么将不会被保存到cookie的文件里面!
Session =================
session 比 cookie的好处
1.安全高
2.cookie每次传输都要占带宽 session是保存在服务器的 不用占带宽
用session 首先要初始化 session
session_start();
session 保存格式 key<==>value
session 可以保存所有的基本类型 字符串 对象 数组 布尔 数字
key string类型 8个长度 value
gwyy|s:8:"mygwyy";
不光能保存对象的实体 也能保存对象的返回值
$a = new Dog('aaa','134');
$_SESSION['name'] = $a->getName();
把对象实例存到session里面类型会缺损 要重新定义一下
如果没有开启session_start session会保存在内存里面 并不会建立文件夹
每个浏览器都是一个会话
session 默认 1440秒 24分钟 就失效了 但是 session 有个发呆时间 哈哈哈
删除 session
unset($_SESSION[key]);
删除当前浏览器对于的session文件
session_destroy()
自动打开session 不推荐
php.ini 里面 可以设置 session.auto_start = 1;
每个文件 由cookie携带的session_id 来获取session
session 可以跨浏览器 访问
A浏览器 设置session 访问a页面 会用cookie携带session访问
b浏览器 访问a页面 会由A页面找到 对应会话的session 并返回给b浏览器
如果禁用了cookie session 就不能再一个会话里面共用一个session文件了
禁用了cookie 浏览器就不会接受cookie 就无法用cookie携带session_id了 所以 每次刷新 就会从新创建一个session文件
1. 如果用户禁用了cookie 那么怎么用session呢
可以这样 每个页面 get 传参一个session_id 然后判断
if(isset($_GET['SESSIONID'])) {
session_id($_GET['SESSIONID']);
}
session_start();
2 还有一种方法 php.ini启用 session.use_trans_sid
然后用SID 常量保存
SID 常量 SESSIONID=sjldifsgjisw45
php.ini里面 可以改变session的名字 默认是 SESSIONID
session.name = PHPSESSIONID
给每个url 启用 SID
session.use_trans_sid
session的路径
session.save_path
控制session文件时间
session.gc_maxlifetime = 1400
下面两个是session的垃圾回收机制 在session_start的时候有千分之一的几率调用这个垃圾回收机制 如果网站规模越大
建议概率也设置的越小
session.gc_probabillty = 1;
session.gc_divisor= 1000
是否启用cookie
session.use_cookie = 1
cookie的生命周期
session.cookie_lifetime = 0
session的各种操作 都可以通过
首先在phpini中改
session.save_handler = files 改成 user 就是 用户来接手
session_set_save_handler (打开,关闭,读取,写入,删除,gc(垃圾回收))
cookie 和 session 大致分为3中不同
1 cookie 在客户端 session在服务器
2 cookie不安全 session 安全
3 cookie 通过网络在客户端与服务器交互 session 保存在服务端 不需要传输