PHP:PDO->fetch()和fetchAll()遍历,session进行会话跟踪,用户退出清除session

PHP:PDO->fetch和fetchAll遍历,session进行会话跟踪,用户退出清除session
一.fetch()和fetchAll()遍历
①fetch()遍历

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

代码块

<?php
//引入服务器连接
require "/xp/phpstudy_pro/WWW/www.zwz.com/zwz/0512/config/PDO.php";

//访问数据表中数据
$sql = "SELECT `id` ,`uname`,`pwd` FROM `user` WHERE `id` >= ? ;";

$stmt = $pdo->prepare($sql);
$stmt->execute([1]);

// $user = $stmt->fetch();

while ($user = $stmt->fetch()) {
    vprintf("<li>id = %s , uname = %s , pwd = %s</li>",$user);
    
}

②fetchAll()遍历

fetchAll 采用foreach 进行数组遍历

代码块

<?php
//引入服务器连接
require "/xp/phpstudy_pro/WWW/www.zwz.com/zwz/0512/config/PDO.php";

//访问数据表中数据
$sql = "SELECT `id` ,`uname`,`pwd` FROM `user` WHERE `id` >= ? ;";

$stmt = $pdo->prepare($sql);
$stmt->execute([1]);

 $user = $stmt->fetchAll();


foreach ($user as $key => $value) {
    vprintf("<li>id = %s ,uname = %s ,pwd = %s</li>",$value);
}

二.cookie 会话控制

  • 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。

①创建cookie

setcookie 是创建一个cookie ,$_COOKIE 是全局变量可以打印指定的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

switch($action)
{
    case 'login':
        //检测用户是否存在
        $sql = "SELECT `uname`,`pwd` FROM `users` WHERE `uname`= ?; ";
        
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$username]);
        $res  = $stmt->fetch();
        // var_dump($res);
        if($res)
        {
            //检测密码 的正确性
            if(password_verify($password,$res['pwd']))
            {
                //验证通过  存session
                $_SESSION['uname'] = $res['uname'];

                echo json_encode(array('status'=>1,'msg'=>'登录成功...正在跳转'),320);

            }else{
                echo json_encode(array('status'=>0,'msg'=>'用户名或密码错误'),320);
            }
        }else{
            echo json_encode(array('status'=>0,'msg'=>'用户名或密码错误'),320);
        }

    break;
    case 'captcha_check':
        //将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,并销毁之前的session值,不成功则重新提交 strcasecmp 
        if(!empty($captcha) && strtolower($_SESSION["captcha"]) === strtolower($captcha)){
            $_SESSION["captcha"]="";
            echo json_encode(['status'=>1,'msg'=>'验证码正确']);
        }else{
            echo json_encode(['status'=>0,'msg'=>'验证码不正确']);
            
        }
    break;  
    // 退出登录
    case 'logout':
        // 清空session变量
        session_unset();
        // 删除session文件
        session_destroy();
         
        header("Location: index.php"); 
        break;
    default:
        exit('非法操作'); 

}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值