批改状态:合格
老师批语:写的很好,要是能和前面学的前端结合起来就更好了。
cookie:保存在客户端的缓存信息。
session:保存在服务端的缓存信息。
注意:
cookie并不安全,不要保存用户敏感信息,比如:密码、手机号等;
cookie中存储的信息有限,不要用来存放大数据。
setcookie()设置cookie代码示例:将用户提交的表单数据设置到cookie中
<?php// setcookie()设置cookie,第三个参数不存在则cookie由浏览器维护,浏览器关闭则消失$username = $_POST['username'];setcookie('username', $username, strtotime('+7 days'), '/', '127.0.0.1');?><!DOCTYPE html><html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>会话控制</title></head><body><form action="1.php" method="post"><label for="username">用户名:</label><input type="text" id="username" name="username"><label for="pwd">密码:</label><input type="password" id="pwd" name="pwd"><button type="submit">登录</button></form></body></html>
运行结果:

// 特殊符号自动编码setcookie('username', 'admin!@');// 特殊符号不会自动编码setrawcookie('username', 'admin?@');
运行结果:


代码示例:
<?php// 开始会话session_start();// 创建session数据$_SESSION['username'] = 'admin';$_SESSION['uid'] = 123;// 销毁session// 1.删除单个会话,使用unset()删除会话时,如果不指定元素unset($_SESSION)会删除整个session并且不能再创建// unset($_SESSION['username']);// 2.删除多个会话变量,并不会删除服务器session文件// $_SESSION = array();// PHP >= 5.4支持// $_SESSION = [];// 3.结束所有会话,执行成功返回true,不会删除保存在客户端 Cookie 中的 Session ID// 会删除服务器session文件// session_destroy();// 4.要删除cookie中的session ID就要用setcookie()// 先获取session的名称$sessionname = session_name();// 删除操作setcookie($sessionname, '', time() - 3600, '/');
index.php(首页)示例:
<?phpif (!(isset($_COOKIE['isLogin']) && $_COOKIE['isLogin'] == '1')) {exit('<script>alert(\'未登录用户\');location.href=\'login.php\';</script>');}?><!DOCTYPE html><html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>首页</title></head><body><h1>首页</h1><?phpecho "<p style=\"color:red;\">" . $_COOKIE['username'] . "已登录</p>";?><a href="login.php?action=logout">退出</a></body></html>
login.php(登录页)示例:
<?php// 接收提交的数据$username = $_POST['username'];$password = $_POST['pwd'];// 清除cookiefunction clearCache(){setcookie('username', '', time() - 3600);setcookie('login', '', time() - 3600);}// 判断提交数据来源,将合法数据存入cookie7天,并执行跳转if ($_GET['action'] == 'login') {if ($username == 'admin' && $password == 'abc') {clearCache();setcookie('username', $username, strtotime('+7 days'), '/', '127.0.0.1');setcookie('isLogin', '1', strtotime('+7 days'), '/', '127.0.0.1');header('Location:index.php');} else {exit('未登录');}}// 退出登录清除cookieif ($_GET['action'] == 'logout') {clearCache();}?><!DOCTYPE html><html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>会话控制</title></head><body><form action="login.php?action=login" method="post"><p style="color:blueviolet;">用户登录</p><label for="username">用户名:</label><input type="text" id="username" name="username"><label for="pwd">密码:</label><input type="password" id="pwd" name="pwd"><button type="submit" name="login">登录</button></form></body></html>
运行效果:

这时直接进入首页index.php可以看到是已登录状态:

熟悉cookie的两种存储方式的创建方法;
掌握销毁session时不同效果;
用户提交的数据要做验证;
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号