fetch和fetchAll遍历,session进行会话跟踪,用户退出清除session" class="reference-link">PHP:PDO->fetch和fetchAll遍历,session进行会话跟踪,用户退出清除session

一.fetch()和fetchAll()遍历

①fetch()遍历

fetch 采用while循环进行数组遍历

代码块

  1. <?php
  2. //引入服务器连接
  3. require "/xp/phpstudy_pro/WWW/www.zwz.com/zwz/0512/config/PDO.php";
  4. //访问数据表中数据
  5. $sql = "SELECT `id` ,`uname`,`pwd` FROM `user` WHERE `id` >= ? ;";
  6. $stmt = $pdo->prepare($sql);
  7. $stmt->execute([1]);
  8. // $user = $stmt->fetch();
  9. while ($user = $stmt->fetch()) {
  10. vprintf("<li>id = %s , uname = %s , pwd = %s</li>",$user);
  11. }

②fetchAll()遍历

fetchAll 采用foreach 进行数组遍历

代码块

  1. <?php
  2. //引入服务器连接
  3. require "/xp/phpstudy_pro/WWW/www.zwz.com/zwz/0512/config/PDO.php";
  4. //访问数据表中数据
  5. $sql = "SELECT `id` ,`uname`,`pwd` FROM `user` WHERE `id` >= ? ;";
  6. $stmt = $pdo->prepare($sql);
  7. $stmt->execute([1]);
  8. $user = $stmt->fetchAll();
  9. foreach ($user as $key => $value) {
  10. vprintf("<li>id = %s ,uname = %s ,pwd = %s</li>",$value);
  11. }
  • cookie官方解释:https://www.php.net/manual/zh/function.setcookie.php
  • Cookie是Web服务器在用户访问Internet站点时传递到Web浏览器的消息。浏览器会将每条消息以名称 - 值对的形式存储在用户计算机上的一个小文件中。当用户从服务器请求另一个页面时,浏览器会将cookie发送回服务器。这些文件通常包含有关用户访问网页的信息,以及用户自愿提供的任何信息,例如:用户信息,用户首选项,密码记住选项等。

    • 使用Cookie的优点
      1、Cookie易于使用和实现
      实现cookie的使用要比任何其他Internet协议容易得多。
      2、占用更少的内存
      不需要任何服务器资源,并存储在用户的计算机上,因此不会给服务器带来额外的负担。
      3、持久性
      Cookie最强大的一个方面就是持久性。当在客户端的浏览器上设置Cookie时,它可以持续数天,数月甚至数年。这样可以轻松保存用户首选项和访问信息,并在用户每次返回站点时保持此信息可用。此外,由于Cookie存储在客户端的硬盘上,因此如果服务器崩溃,它们仍然可用。
      4、 透明性
      Cookie透明地工作,用户不知道需要存储的信息。
      5、易于管理
      大多数浏览器都可以让用户轻松清除浏览历史记录。只需转到工具,清除历史记录并选择Cookie即可。
      Cookie存储在用户硬盘驱动器上的cookie.txt下的文本文件中,因为它是一个文本文件,我们可以使用任何查看器或文本编辑器来显示,编辑和删除它们。

    • 使用Cookie的缺点
      1、隐私问题
      大多数用户主要关心的是隐私。启用Cookie的Web浏览器会跟踪您访问过的所有网站。这意味着,经许可(或不在Google的情况下),第三方可以访问这些cookie存储的信息。在某些情况下,这些第三方可以是广告商,其他用户。。。。
      2、不安全
      Cookie安全性是一个大问题,因为它们是以明文形式存储,可能会造成安全风险,因为任何人都可以打开并篡改cookie。
      Cookie容易在客户端被发现意味着它们很容易被黑客入侵和修改。
      3、难以解密
      我们可以手动加密和解密cookie,但由于加密和解密所需的时间,它需要额外的编码并影响应用程序性能。
      4、大小有限制,只能储存简单字符串信息
      cookie文本的大小(一般为4kb),cookie的数量(一般每个站点20个)存在一些限制,每个站点只能容纳20个cookie。
      Cookie仅限于简单的字符串信息,他们无法存储复杂的信息。
      5、可以被禁用
      用户可以选择从浏览器设置中禁用其计算机上的cookie。这意味着用户可以决定不在他的浏览器上使用cookie,这可能会在浏览器的运行中产生一些问题。
      6、可以被删除
      用户可以从其计算机中删除cookie,这使他们可以更好地控制cookie。

setcookie 是创建一个cookie ,$_COOKIE 是全局变量可以打印指定的cookie,创建cookie第一次是请求,第二次才能响应出结果

cookie参数,第三个参数时间目的是设置什么时候到期,后面还有许多参数,详细了解的话要看官方的解释…

三.session 会话跟踪

  • Session的机制
    • session机制采用的是在服务器端保持状态的方案,并且有自己对应的唯一标识session_id,区分不同用户之前的信息。
  • Session的工作原理

    • 当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中;
    • 首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量;
    • 当执行PHP脚本时,通过使用session_register()函数注册session变量。
    • 当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。
  • Session的优缺点

  • 优点

    • 唯一性、方便调用、不会过多占用资源,是存储在服务器的一组临时数据。一般情况下,我们在做用户登录时,会将用户数据存入session。这样,在任何页面都可以方便调用,而且每个客户端会产生唯一的session_id,不会混淆。并且在关闭浏览器后,服务器会有session回收机制,自动删除过期session。
  • 缺点

    • 在客户端是以cookie方式保存的,禁用cookie,session就失效了。
  • cookie和session的区别

    • Cookie机制采用的是在客户端(浏览器)保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

①session进行会话跟踪,用户退出清除session

  1. switch($action)
  2. {
  3. case 'login':
  4. //检测用户是否存在
  5. $sql = "SELECT `uname`,`pwd` FROM `users` WHERE `uname`= ?; ";
  6. $stmt = $pdo->prepare($sql);
  7. $stmt->execute([$username]);
  8. $res = $stmt->fetch();
  9. // var_dump($res);
  10. if($res)
  11. {
  12. //检测密码 的正确性
  13. if(password_verify($password,$res['pwd']))
  14. {
  15. //验证通过 存session
  16. $_SESSION['uname'] = $res['uname'];
  17. echo json_encode(array('status'=>1,'msg'=>'登录成功...正在跳转'),320);
  18. }else{
  19. echo json_encode(array('status'=>0,'msg'=>'用户名或密码错误'),320);
  20. }
  21. }else{
  22. echo json_encode(array('status'=>0,'msg'=>'用户名或密码错误'),320);
  23. }
  24. break;
  25. case 'captcha_check':
  26. //将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,并销毁之前的session值,不成功则重新提交 strcasecmp
  27. if(!empty($captcha) && strtolower($_SESSION["captcha"]) === strtolower($captcha)){
  28. $_SESSION["captcha"]="";
  29. echo json_encode(['status'=>1,'msg'=>'验证码正确']);
  30. }else{
  31. echo json_encode(['status'=>0,'msg'=>'验证码不正确']);
  32. }
  33. break;
  34. // 退出登录
  35. case 'logout':
  36. // 清空session变量
  37. session_unset();
  38. // 删除session文件
  39. session_destroy();
  40. header("Location: index.php");
  41. break;
  42. default:
  43. exit('非法操作');
  44. }

更多相关文章

  1. 4-30用户注册界面
  2. Python常用GUI框架有哪些?Python基础入门
  3. Java 获取 Word 中指定图片的坐标位置
  4. Fedora先发制人:谷歌旨在强迫用户都去使用Chrome
  5. CentOS停止维护的原因:Red Hat拒绝为其投资
  6. Prometheus(普罗米修斯)用户档案:动态化特性加速weaveworks云原生程
  7. 电信大宽带服务器300M谁家有?
  8. (设计模式)迭代器 > 本篇文章由一文多发平台[ArtiPub](https://gi
  9. 负载均衡概念入门

随机推荐

  1. 57.EasyRecyclerViewSidebar
  2. Android Studio生成APK自动追加版本号
  3. Android support 26升级到28特性总结
  4. 基于Android不同版本对应notification机
  5. Android 通话记录分析
  6. Android封装Toast工具类
  7. android拖动图片移动效果
  8. [置顶] Android中显示AlertDialog对话框
  9. android ftp服务器实现
  10. 监听Bluetooth