一、cookie
是存储在浏览器客户端的一小片数据,cookie
可以同时被前台和后台操作,即在前台页面可以获取,在后台php页面也可以获取,后面会介绍这两种方式的设置和获取cookie的方法。cookie
可以跨页面存储,cookie
不可以跨服务器访问,可以跨域访问。cookie
是有生命期的,默认是浏览器进程相同,如果进程退出,cookie
会被销毁,所以下面我们会说到如何给cookie
设置过期时间。
在前台获取和设置
cookie
的方法12345678910111213141516171819202122232425//首先是设置一个cookie值并设置过期时间var current_date=new Date();current_date.setDate(current_date.getDate()+1);//设置过期时间为当前时间的第二天var expires_str=current_date.toGMTString();//转换时间格式为字符串document.cookie="user=zhou;path=/;expires="+expires+str;//path=/;属性指定cookie生效的路径,包含子目录//然后是获取cookie值console.log(document.cookie);//所以封装了setCookie()和getCookie方法function getCookie(key){var str=document.cookie;var len=key.length+1;var start=str.indexOf(key)+len;var end=str.indexOf(";",start)==-1?str.length:str.indexOf(";",start);var val=str.substring(start,end);return val;}function setCookie(key,value,path,expires){var current_date=new Date();current_date.setDate(current_date.getDate()+1);var expires_str=current_date.toGMTString();document.cookie=key+"="+value+";path="+path+";expires="+expires_str;}在后台设置和获取cookie值
1234//先是设置cookie值,函数setcookie(key,value,path,expires)setcookie("user","zhou",time()+24*3600);//过期时间是时间戳,time()获得的是1970年至今的秒数//在后台获取cookie值也是通过一个数组$_COOKIE['user'],php将所有的cookie值存储在数组$_COOKIE中echo $_COOKIE['user'];//即可获得cookie值
二、获取cookie因为cookie可以跨页面访问,但是cookie有很多缺点:
- 1.数量:浏览器下的cookie数量不能超过300个,每个服务器不能超过20个,所有的cookie包含他们的属性所占的数据大小不能超过4k;
- 2.cookie是不安全的,他可以被客户端更改,因此不要用cookie来存储重要或者敏感的数据;
所以才有了
PHPSESSID
: - 1.
session
数据存储在session_id
,该session_id
通过cookie
传送到前台,默认的session_id
. - 2.前台只能看到
session_id
,而不能修改session
值。 - 3.使用session之前,需要先开启会话,即
session_start();
- 4.session存储比较安全,但是如果session数量过多,会导致服务器性能下降。
- 5.session存储在
$_SESSION
数组里123456789101112session_start();$_SESSION['user']=$_POST['username'];//设置cookie值echo $_SESSION['user'];//获取cookie值//比如一个登陆成功跳转页面if(!empty($_SESSION['user'])){//header函数输出自定义http头文件//header("Location: url"); 指定当前页面跳转到url页面header("Location: index.html");}else{header("Location: login.html");}
三、密码加密算法
- md5()
1.可以将任意长度的字符串变成一个32位定长的字符串
2.md5()只能单向加密,不能通过加密后的字符串重新解密为原字符串
3.彩虹表,记录了大量的md5()结果,然后通过一定的算法,找到一个md5()结果相符的字符串echo md5($password);
- sha1()
echo sha1($password);
它的结果是比md5()
的字符串更长、复杂的字符串。