🎬 鸽芷咕:个人主页
🔥 个人专栏:《速学数据结构》《C语言进阶篇》⛺️生活的理想,就是为了理想的生活!
📋 前言
🌈hello! 各位铁铁们大家好啊,今天给大家带来的是PHP会话技术之一cookie?
⛳️会话技术跟踪和记录用户作为我们维护网站和记录密码的一种技术,主要有俩种cookie和Session。那么面向浏览器端的cookie你会使用吗!
⛺️ 欢迎铁汁们 ✔️ 点赞 👍 收藏 ⭐留言 📝!
会话技术的概述
- 思考:两个或多个用户同时在浏览器端通过HTTP协议如何向服务器端发送请求时,如何判断请求是否是来自同一个用户?
- 答案:HTTP协议是无状态的协议,因此其无法告诉我们这两个请求是来自同一个用户,此时我们需要使用会话技术跟踪和记录用户在该网站所进行的活动。
会话技术:是一种维护同一个浏览器与服务器之间多次请求数据状态的技术,它可以很容易地实现对用户登录的支持,记录该用户的行为,并根据授权级别和个人喜好显示相应的内容。
- 例如,生活中从拨通电话到挂断电话之间一连串你问我答的过程就是一个会话。Web应用中的会话过程类似于打电话,它指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应过程。
PHP中Cookie和Session是目前最常用的两种会话技术。
Cookie
指的是一种在 浏览器端 存储数据并以此来跟踪和识别用户的机制;
Session
指的是将信息存放在 服务器端 的会话技术。
一. Cookie简介
在Web应用程序中,Cookie
的功能:
- 它是网站为了辨别用户身份而 存储在用户本地终端上 的数据。
- 当用户通过浏览器访问Web服务器时,服务器会给客户发送一些信息,这些信息都保存在Cookie中。
- 当该浏览器再次访问服务器时,会在请求头中同时将Cookie发送给服务器,这样,服务器就可以对浏览器做出正确的响应。
Cookie
的应用场景:
Cookie在浏览器和服务器之间的传输过程:
尽管Cookie实现了服务器与浏览器的信息交互,但也存在一些缺点,具体如下:
- Cookie被附加在HTTP消息中,无形中增加了数据流量。
- Cookie在HTTP消息中是明文传输的,所以安全性不高,容易被窃取。
- Cookie存储于浏览器,可以被篡改,服务器接收后必须先验证数据的合法性。
- 浏览器限制Cookie的数量和大小(通常限制为50个,每个不超过4KB),对于复杂的存储需求来说是不够用的。
二. Cookie基本使用——创建Cookie
2.1 创建Cookie
bool setcookie ( string $name , // Cookie的名(必选) string $value = "" , // Cookie的值(可选) int $expire = 0 , // Cookie的有效期(可选) string $path = "" , // Cookie在服务器端的路径(可选) string $domain = "" , // Cookie的有效域名(可选) bool $secure = false , // 指定是否通过安全的HTTPS连接来传输(可选) bool $httponly = false // 指定Cookie只能通过HTTP协议访问(可选) )
演示实例:
// ① 设置Cookie setcookie('username', 'ada'); // 设置一个名称为username的Cookie,其值为ada setcookie('pwd', '123456'); // 设置一个名称为pwd的Cookie,其值为123456 // ② 设置Cookie过期时间 setcookie('data', 'PHP'); // 未指定过期时间,在会话结束时过期 setcookie('data', 'PHP', time() + 1800); // 30分钟后过期 setcookie('data', 'PHP', time() + 60 * 60 * 24); // 一天后过期
说明:省略第3个参数时,Cookie仅在本次会话有效,用户关闭浏览器时会话就会结束。
2.2 获取Cookie
在PHP中,任何从客户端发送的Cookie
数据都会被自动存入到$_COOKIE超全局数组变量中。通过$_COOKIE数组可以获取Cookie
数据。
示例:使用超全局数组 $_COOKIE[]
读取 Cookie
中的信息。
look.php代码如下:
反复刷新look.php网页,5秒钟后观察输出信息,有什么变化?
三 删除Cookie的两种方式:
Cookie
创建时未设置有效时间,则Cookie文件会在关闭浏览器时自动被删除。- 利用
setcookie()
函数设置过期时间。
示例:利用了客户端的cookies来实现记住密码自动登录的功能,
3.1 创建login.php页面,登录并使用cookie保存用户账号和密码
<form action="" method="post"> 用户名:<input type="text" name="uname"><br /> 密 码:<input type="password" name="pwd"><br /> <input type="submit" name="btn" value="登录"> </form> <?php if(isset($_POST['btn'])){ $uname=$_POST['uname']; $pwd=$_POST['pwd']; setcookie('uname',$uname); setcookie('pwd',$pwd); echo "登录成功,2秒后跳转到首页…………"; header("refresh:2;url=main.php"); }
3.2.创建功能页面,读取用户账号和密码,实现自动登录:
<?php //登录判断 if(!isset($_COOKIE['uname'])){ //header写法 echo "<script>alert('当前用户未登录!')</script>"; header("refresh:2;url=login.php"); exit; } echo "您是".$_COOKIE['uname']."欢迎访问!<br />"; echo "您的密码是:".$_COOKIE['pwd']."<br />"; ?> <a href="quit.php">退出</a>
3.3 创建quit.php页面,删除cookie:
<?php setcookie('uname','',time()-10); header("location:login.php"); ?>
如何在浏览器端查看Cookie?
Chrome浏览器在老版本情况下,是可以去直接查看cookie
的存放地址以及存放的密码等内容的:
- 但是现在由于浏览器大多数安全等级比较高
- 就查看不了
cookie
了只能清除