文章目录
一.什么是cookie和session
Set-cookie:
- setcookie是一种用于在客户端浏览器上设置HTTP cookie的方法
- 通过设置cookie,服务器可以将数据存储在客户端浏览器中,以便在客户端请求相同网站时使用这些数据。
- setcookie函数用于设置cookie的名称、值、过期时间、路径等参数。
Cookie:
- Cookie最开始设计出来是用于弥补HTTP协议是无状态协议的缺点,HTTP协议的这种特性最直观的现象是:当我们每次登录同一个网站时都需要输入账号密码进行登录;然而,cookie的出现解决了这一缺点。
- Cookie是在用户访问网站时,由网站服务器发送到用户浏览器并存储在用户计算机上的小文本文件。它用于在用户的浏览器中存储和识别用户的身份信息、偏好设置等。
- 当用户再次访问同一个网站时,浏览器会将该网站发送的cookie带回服务器,以便服务器根据存储的信息来提供个性化的服务。Cookie可以用于跟踪用户的浏览行为、实现购物车功能、保持用户登录状态等。
Session:
- Session是一种在HTTP协议无状态的基础上为了保持用户状态而引入的机制。
- 当用户首次访问网站时,服务器会为其创建一个Session ID,并将该ID发送给客户端保存。
- 客户端在接下来的请求中的Cookie字段会带上这个Session ID,服务器通过这个ID来识别用户,并在服务器端存储与该Session ID相关的数据
cookie是明文传输,因此可以在浏览器的控制面板查看cookie
Cookie数据流转
- 首次访问时服务器会将浏览器的账号密码等信息保存在本地
- 服务器发送响应报文,该报文中携带set-cookie
- 客户端再次访问该服务器时会在请求报文中携带cookie
- 服务器收到请求报文后根据cookie中携带的信息,从而实现无密码登录
代码解析:
<?php
#调用session_start()生成session-ID
session_start();
if(isset($_POST['login']))
{
$username = trim($_POST['username']);
$postword = trim($_POST['password']);
if(($username=='')||($password==''))
{
header('refresh:3;url=login.html');
echo "用户名或密码不能为空,3秒后跳转登录页面"
eit;
}
else if (($username!='username')||($password!='password'))
{
header('refresh:3url=login.html');
echo "用户名或密码错误,3秒后跳转到登录页面"
exit;
}
#登录成功将信息保存到session中
else if(($username=='username')&&($password=='password'))
{
$_SESSION['username']=$username;
$_SESSION['islogin']=1;
if($_POST['remember']=="yes")
{
setcookie("username",$username,time()+7*24*60*60);
setcookie("code",md5($username.md5($password)),time()+7*24*60*60);
}
}
}
>
利用cooki免登录代码
<?php
session_start();
if(isset($_SESSION['username']))
{
echo $_SESSION['username']."你好,欢迎进入个人中心!<br/>";
echo "<a href='logout.php'>注销</a>";
}
else
{
echo "你还未登录,请<a href='login.html'>登录</a>;"
}
?>