cookie与session 区别
下面是cookie与session各自的特点,其实通过它们特点的不同就能看出他们的区别,我就不总结区别了,可以将他们的特性进行比较,不同之处就是他们的区别。
cookie特性
1.cookie是存储在浏览器客户的一小片数据;
2.cookie可以同时被前台与后台操作;
3.cookie可以跨页面存取;
4.cookie是不可以跨服务器访问的;
5.cookie有限制; 每个浏览器存储的个数不能超过300个,每个服务器不能超过20个,数据量不能超过4K;
6.cookie是有生命周期的,默认与浏览器相同,如果进程退出,cookie会被销毁
session特性
- seesion数据存储在服务器端;
- 每一个会话分配一个单独的session_id;
- 该session_id通过cookie传送到前台,默认的session_id名称是PHPSESSIONID
- 前台只能看到session的ID,而不能修改session值
- 使用session之前需要先开启会话
- session存储在session数组$_SESSION
- session存储方式比较安全,但是如果session数量过多,会导致服务器性能下降
cookie与session语法
cookie
- 前端使用语法:
// 设置一个cookie
document.cookie = "user=ltt; age=18 ;like= h5";
// 读取所有的cookie
str = document.cookie;
//从所有cookie取出一个特定名的cookie值
start = str.indexOf("num=") + 4;
end = str.indexOf(";",start);
// 使用substring获得值
var val = str.substring(start,end);
由于cookie是以键值对形式存储的,用每个分号分割每个cookie,如下图,所以我们从cookie中取出一个特定名的cookie值需要使用上面代码的js字符串的一些方法。
我们经常会需要设置一个cookie和取cookie里的值,因此我们可以封装两个函数,一个设置cookie,一个取cookie的值。大家需要用的可以直接拷贝。
// 取cookie值 参数为cookie你要取得值所对应的名称
function getcookie(name){
var str = document.cookie;
start = str.indexOf(name+"=")+ name.length+1;
end = str.indexOf(";",start);
end = end == -1 ? str.length:end;
// 使用substring获得值
var val = str.substring(start,end);
return val;
}
// 设置cookie
// 参数(名称,名称对应的值,路径,过期时间)
function setCookie(name,value,path,expires){
// 设置一天之后失效
var current_date = new Date();
// 将日期设置为一天之后的日期
current_date.setDate(current_date.getDate() + 1);
// 将日期转成GMT对象
expires_str = current_date.toGMTString();
// 设置cookie的过期日期
document.cookie = name + "=" + value+"; path="+path+"; expires="+expires_str;
}
2.后台使用的方法
后台设置语法比较简单,就一句代码,如下;
// 过期时间是时间戳,比如一天后失效,那就是24*3600秒失效
setcookie("newMember","ltt",time()+24*3600);
session
注意:使用session之前都必须先开启会话,使用 session_start(); 开启会话
session_start();
$_SESSION['user'] = 'ltt';
$_SESSION['age'] = 10;
介绍一个header()函数:输出自定义http头文件
if(!empty($_SESSION['user'])){
// header函数输出自定义http头文件
// header("Location: url") 指定当前页面跳转到url页面
header("Location:index2.html");
}else{
header("Location:login.html");
}