COOKIE + SESSION

cookie

HTTP协议:客户端发出请求,服务器给出响应

cookie 概述

 1.cookie:由 服务器生成 发送给客户端 的储存在用户本地终端(客户端/浏览器)上的数据,类型为“小型文本文件”。当每次客户端浏览器在发送请求的时候,都会携带该 cookie 信息。
 是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存
 的信息。
 2.注:这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次
 访问这个 Web文档时这些信息可供该文档使用。 
 3.举例:一个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie文件的形式保存在每个用户
 的机器上。每次客户端浏览器在发送请求的时候,都会携带cookie信息。在这个文件夹里每一个文件都是一个
 由“名/值”对(K-V)组成的文本文件,另外还有一个文件保存有所有对应的Web 站点的信息。

cookie 的性质

name      名称
value     值
expire    cookie生存期
path      有效路径
domain    指定可以访问该 Cookie 的 Web站点 或域
secure    设置为true时,只有安全连接存在时(https)才会设置cookie
httponly  只能通过 http协议 访问,不能通过js 访问

设置cookie的语句

setcookie();
共有7个属性,NULL为默认,只有全部默认时可以省略不写。
例如:
setcookie('名称','值',null,null,null,null,null); 正确
setcookie('名称','值'); 正确
不可设置某个参数为空,如:
setcookie('','',,,,,true); 错误
服务器接收cookie信息:$_COOKIE
查看cookie信息:控制台

接收 cookie 信息

通过 预定义超全局数组 $_COOKIE 接收

COOKIE示例:简单登录界面

welcome.php

<meta charset = "utf-8">
<h2>心之所向论坛</h2>
<?php
if(isset($_COOKIE['name'])){
	echo "欢迎您!{$_COOKIE['name']}<br /><a href='./logout.php'>注销</a>";
}else{
	echo "<a href='./login.php'>请登录</a>";
}
?>
login.php

<meta charset = "utf-8">
<?php
if(isset($_POST['usersubmit'])){
	if(isset($_POST['username']) &&
	$_POST['username'] == 'zzyy' &&
	isset($_POST['userpasswd']) &&
	$_POST['userpasswd'] == '123456'){
		if(setcookie('name','zzyy')){
		echo "登陆成功!<a href='./welcome.php'>回到主界面</a>";
		}else{
			echo "cookie设置错误";
		}
	}else echo "用户名或密码错误,<a href='./login.php'>请重新登录</a>";
}else{
$html=<<<HTML
<form action="" method="post">
用户名:<input type="text" name="username" ><br />
密码:<input type="password" name="userpasswd" ><br />
<input type="submit" name="usersubmit" value="登录">
</form>
HTML;
	echo $html;
}
?>
cookie的注销:更改cookie的生存期为过去
logout.php

<?php
setcookie('name',$_COOKIE['name'],time()-3600);
?>
存在的问题:cookie的窃取,欺骗--由于cookie信息是 服务端发送给浏览器 而存储在 客户端 的
解决:
session机制:session信息是储存在服务端(tmp缓存文件当中)的,相较于cookie而言,较安全
session属性:SESSIONID
注:
session_start();之前不能有任何输出,将其放于php代码开头即可

SESSION

开启session机制:session_start()
释放:session_destroy()

SESSION示例:简单登录界面

welcome.php

<meta charset="utf-8">
<h2>欢迎来到主界面</h2>
<?php
session_start();
if(isset($_SESSION['name']) && $_SESSION['name'] == 'zzyy'){
	echo "欢迎您!{$_SESSION['name']}";
}else{
	echo "<a href='./login.php'>请登录</a>";
}
echo "<br /><a href='./logout.php'>注销</a>";
?>
login.php

 <meta charset="utf-8">
<?php
session_start();//开启session机制
if(isset($_POST['usersubmit'])){
     if(isset($_POST['username'])&& isset($_POST['userpasswd'])
		 && $_POST['username']=='zzyy' && $_POST['userpasswd']==123456 ){		 $_SESSION['name']=$_POST['username'];
			 echo "登录成功!<a href='./welcome.php'>返回首页</a>";
		 }else{
			 echo "用户名或密码错误!<a href='./login.php'>请重新登录</a>";
		 }			 
}else{
$a=<<<HTML
<form action="" method="post">
<h2>用户登录</h2>
用户名<input type="text" name="username"><br />
密码<input type="password" name="userpasswd"><br />
<input type="submit" name="usersubmit" value="登录" >
</form>
HTML;
echo $a;
}
?>
session 的注销:
方法一:session_destroy()函数(运行该函数,服务器会将session缓存清空,但缓存文件依然存在)
方法二:关闭浏览器
logout.php

<?php
session_start();
session_destroy();
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值