登录  /  注册
博主信息
博文 100
粉丝 8
评论 2
访问量 146744
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
会话控制(cookie与session)
lilove的博客
原创
874人浏览过
  • cookie:保存在客户端的缓存信息。

  • session:保存在服务端的缓存信息。

注意:
cookie并不安全,不要保存用户敏感信息,比如:密码、手机号等;
cookie中存储的信息有限,不要用来存放大数据。

  • 使用setcookie()设置cookie

代码示例:将用户提交的表单数据设置到cookie中

  1. <?php
  2. // setcookie()设置cookie,第三个参数不存在则cookie由浏览器维护,浏览器关闭则消失
  3. $username = $_POST['username'];
  4. setcookie('username', $username, strtotime('+7 days'), '/', '127.0.0.1');
  5. ?>
  6. <!DOCTYPE html>
  7. <html lang="zh-cn">
  8. <head>
  9. <meta charset="UTF-8">
  10. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  11. <title>会话控制</title>
  12. </head>
  13. <body>
  14. <form action="1.php" method="post">
  15. <label for="username">用户名:</label>
  16. <input type="text" id="username" name="username">
  17. <label for="pwd">密码:</label>
  18. <input type="password" id="pwd" name="pwd">
  19. <button type="submit">登录</button>
  20. </form>
  21. </body>
  22. </html>

运行结果:


setcookie()与setrawcookie()的区别

  1. // 特殊符号自动编码
  2. setcookie('username', 'admin!@');
  3. // 特殊符号不会自动编码
  4. setrawcookie('username', 'admin?@');

运行结果:


session

  • session:用户打开浏览器到关闭浏览器期间的数据
  • 开始一个会话,也可以在php.ini文件中设置session.auto_start = 1,自动开启session
  • 开启session时,session_start()前不能有其他代码
  • session文件存放位置设置:session.save_path=”D:\phpstudy_pro\Extensions\tmp\tmp”

代码示例:

  1. <?php
  2. // 开始会话
  3. session_start();
  4. // 创建session数据
  5. $_SESSION['username'] = 'admin';
  6. $_SESSION['uid'] = 123;
  7. // 销毁session
  8. // 1.删除单个会话,使用unset()删除会话时,如果不指定元素unset($_SESSION)会删除整个session并且不能再创建
  9. // unset($_SESSION['username']);
  10. // 2.删除多个会话变量,并不会删除服务器session文件
  11. // $_SESSION = array();
  12. // PHP >= 5.4支持
  13. // $_SESSION = [];
  14. // 3.结束所有会话,执行成功返回true,不会删除保存在客户端 Cookie 中的 Session ID
  15. // 会删除服务器session文件
  16. // session_destroy();
  17. // 4.要删除cookie中的session ID就要用setcookie()
  18. // 先获取session的名称
  19. $sessionname = session_name();
  20. // 删除操作
  21. setcookie($sessionname, '', time() - 3600, '/');

index.php(首页)示例:

  1. <?php
  2. if (!(isset($_COOKIE['isLogin']) && $_COOKIE['isLogin'] == '1')) {
  3. exit('
  4. <script>
  5. alert(\'未登录用户\');
  6. location.href=\'login.php\';
  7. </script>
  8. ');
  9. }
  10. ?>
  11. <!DOCTYPE html>
  12. <html lang="zh-cn">
  13. <head>
  14. <meta charset="UTF-8">
  15. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  16. <title>首页</title>
  17. </head>
  18. <body>
  19. <h1>首页</h1>
  20. <?php
  21. echo "<p style=\"color:red;\">" . $_COOKIE['username'] . "已登录</p>";
  22. ?>
  23. <a href="login.php?action=logout">退出</a>
  24. </body>
  25. </html>

login.php(登录页)示例:

  1. <?php
  2. // 接收提交的数据
  3. $username = $_POST['username'];
  4. $password = $_POST['pwd'];
  5. // 清除cookie
  6. function clearCache()
  7. {
  8. setcookie('username', '', time() - 3600);
  9. setcookie('login', '', time() - 3600);
  10. }
  11. // 判断提交数据来源,将合法数据存入cookie7天,并执行跳转
  12. if ($_GET['action'] == 'login') {
  13. if ($username == 'admin' && $password == 'abc') {
  14. clearCache();
  15. setcookie('username', $username, strtotime('+7 days'), '/', '127.0.0.1');
  16. setcookie('isLogin', '1', strtotime('+7 days'), '/', '127.0.0.1');
  17. header('Location:index.php');
  18. } else {
  19. exit('未登录');
  20. }
  21. }
  22. // 退出登录清除cookie
  23. if ($_GET['action'] == 'logout') {
  24. clearCache();
  25. }
  26. ?>
  27. <!DOCTYPE html>
  28. <html lang="zh-cn">
  29. <head>
  30. <meta charset="UTF-8">
  31. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  32. <title>会话控制</title>
  33. </head>
  34. <body>
  35. <form action="login.php?action=login" method="post">
  36. <p style="color:blueviolet;">用户登录</p>
  37. <label for="username">用户名:</label>
  38. <input type="text" id="username" name="username">
  39. <label for="pwd">密码:</label>
  40. <input type="password" id="pwd" name="pwd">
  41. <button type="submit" name="login">登录</button>
  42. </form>
  43. </body>
  44. </html>

运行效果:

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


总结

  • 熟悉cookie的两种存储方式的创建方法;

  • 掌握销毁session时不同效果;

  • 用户提交的数据要做验证;

批改老师:GuanhuiGuanhui

批改状态:合格

老师批语:写的很好,要是能和前面学的前端结合起来就更好了。
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学