背景
在HTTP(超文本传输协议)定义通过万维网(WWW)传输文本、图形、视频和所有其他数据的所有规 则。HTTP是一种无 状 态的协议,说明每次请求的处理都与之前或之后的请求无关。虽说对HTTP的普及做 出了相应的贡献,但是对web开发人员而言,产生了困扰。为此,出现了一种在客户端机器上存储少量信息的cookie,同时由于cookie大小限制、数量及其他原 因,又提出了解决方案:session会话处理。
内容要点
1、cookie的应用2、session会话处理
1、cookie的应用
(1)设置cookie:setcookie()函数a、函数作用:送出信息到浏览器
b、该函数会在客户端生成一个cookie文件,可保存到期时间、名称、值
案例1:新建一个demo1.php表示cookie名称及名称的值
<?php
//创建一个cookie
//cookie是在客户机上存一个小文件,这个文件包含了登陆的信息
setcookie('name','Zhao');
?>
上述函数中,setcookie()有两个参数,
参数1:cookie的名称
参数2:cookie名称的值
案例2:创建一个demo2.php包含过期时间的cookie,过期时间=当前时间戳+秒
<?php
setcookie('name','Zhao',time()+7*24*60*60);
?>
(2)setcookie():读取本地主机的cookie的值
a、需要采用一个超级变量$_COOKIE
setcookie()函数中,里边放cookie名即可,需要注意的是该函数总会慢半拍
(获取之前的,必须二次刷新,才能真正获利)
b、变量检测函数:isset()
<?php
setcookie('name','ZXY');
//echo $_COOKIE['name'];
//用isset()方法验证cookie是否存在
if(isset($_COOKIE['name'])){
echo $_COOKIE['name'];
}
else{
echo '不存在此用户';
}
?>
(3)删除cookie
方法1:将setcookie(参数1[名称],参数2[名称值])中的参数2设置为null
方法2:采用过期时间,即需要借助time()函数,如“time()-1”
<?php
setcookie('name','ZXY'); //创建
//方法1:设置cookie值为null
//setcookie('name','');
//方法2:设置过期时间
setcookie('name','ZXY',time()-1);
?>
步骤1:先创建cookie——setcookie('name','ZXY');
步骤2:输出cookie——echo $_COOKIE['name'];
(4)使用cookie限制
a、必须在HTML文件的内容输出之前设置
b、不同的浏览器对cookie的处理不一致,有时会出现错误的结果
c、限制是在客户端的,一个浏览器能创建的cookie数量最多为30个,且每个不能超过4kb,
每个web站点能设置的cookie总数不能超过20个。
小案例——登录界面
demo4-1.php:form登录表单
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
<form method="post" action="demo4.php">
姓名:<input type="text" name="username">
<input type="submit" value="提交" />
</form>
demo4-2.php:判断姓名是否与指定相同,生成cookie,完成登录。
<?php
//如果姓名和指定的姓名相同,就生成一个cookie
//完成登录
if(isset($_POST['username'])&& $_POST['username']=='ZXY'){
//如果正确,生成一个cookie,在跳转;
setcookie('name','zhaoxiaohua');
header('Location:demo5.php');
}
else {
header('Location:demo3.php');
}
?>
demo4-3.php:判断是否有name值,判断是否登陆成功
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
<?php
//先判断是否有name值;
if (isset($_COOKIE['name'])){
echo '欢迎光临'.$_COOKIE['name'];
}
else {
echo '非法登录';
}
?>
2、session会话处理
(1)session_start():开始会话处理只要用到session,就必须开启该函数,放在文件开头
a、若要创建session,即直接采用超级全局变量
b、session存在于服务器端,一般存放1440s
c、若网页没有进行任何操作,即会自动销毁,也可以通过php.ini修改保存时间
若关闭浏览器,即也会自动销毁
(2)与cookie比较的session
特点:及时性的,不会像session慢半拍
(3)unset():删除cookie
<?php
session_start();
$_SESSION['name']='Zhao';
//用isset()函数判断变量session是否存在;
//if(isset($_SESSION['name'])){
// echo $_SESSION['name'];
//}
//else{
// echo '不存在此人';
//}
//删除session:unset()函数
unset($_SESSION['name']);
echo isset($_SESSION['name']);
?>
(4)destroy():销毁所有session
<?php
//步骤1:先开启session
session_start();
//步骤2:销毁所有的session,销毁也是慢半拍;
session_destroy();
//步骤3:输出session;
echo $_session['name1'];
echo $_session['name2'];
?>
(5)session与cookie
a、cookie:应用于会员登录,购物车
(由于其不占用服务器资源,所以会员特别多,就用cookie)
b、session:一般用于后台管理登录,人少
(安全性,一段时间不操作会自动过期)