博客列表 >PHP Cookie与Session

PHP Cookie与Session

Lon
Lon原创
2021年10月26日 17:16:53882浏览

一、Cookie

1、Cookie是什么?

cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。

2、如何创建 Cookie?

setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 <html> 标签之前。

语法

  1. setcookie(name, value [, expire, path, domain]);

参数

  1. //name,cookie的名称;
  2. //value,cookie的值,会自动进行 URL 编码。接收时会进行 URL 解码。COOKIE值的类型只能是标量数据类型,不可是数组、对象、资源。
  3. //expire,cookie的有效期;
  4. //path,cookie的服务器路径;
  5. //domain,cookie的域名;

实例

  1. <?php
  2. // 设置过期时间,过期时间:时间戳 + 要存放的时间秒
  3. setcookie('name','张三', time() + 3600);
  4. // 添加COOKIE数据,存字符串
  5. setcookie("username","admin",time() + 7*24*3600);
  6. setcookie("password","123456",time() + 7*24*3600);
  7. // 添加COOKIE数据,存数组
  8. setcookie('user[id]',10 );
  9. setcookie('user[name]','李四' );
  10. setcookie('user[email]','lisi@163.com' );

3、如何取回 Cookie 的值?

PHP 的 $_COOKIE 变量用于取回 cookie 的值。

  1. <?php
  2. // 输出 cookie 值
  3. echo $_COOKIE["user"];
  4. // 查看所有 cookie
  5. print_r($_COOKIE);

4、如何删除 Cookie?

当删除 cookie 时,您应当使过期日期变更为过去的时间点。

  1. <?php
  2. //unset($_COOKIE['user']);
  3. // 删除COOKIE数据:设置有效期为过去的某一个时间
  4. // setcookie("username","admin",time()-1);
  5. // setcookie("password","123456",time()-10);
  6. // 或者
  7. // 删除COOKIE:设置COOKIE的值为false或空字符
  8. setcookie("username",false);
  9. setcookie("password","");

二、Session

PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

1、开始 PHP Session

在把用户信息存储到 PHP session 中之前,首先必须启动会话。

注释:session_start() 函数必须位于 <html> 标签之前:

实例

  1. <?php session_start(); ?>
  2. <html>
  3. <body>
  4. </body>
  5. </html>

2、存储 Session 变量

存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量

  1. <?php
  2. //开启SESSION会话
  3. session_start();
  4. // 存储 session 数据
  5. $_SESSION['userid']=10;
  6. $_SESSION['username']='admin';
  7. // 读取SESSION数据
  8. echo "用户ID:".$_SESSION['userid']."<br>";
  9. echo "用户名:".$_SESSION['username']."<br>";
  10. //打印$_SESSION数组
  11. print_r($_SESSION);

3、销毁 Session

如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。

unset() 函数用于释放指定的 session 变量:

  1. <?php
  2. //开启SESSION会话
  3. session_start();
  4. // 存储 session 数据
  5. $_SESSION['userid']=10;
  6. $_SESSION['username']='admin';
  7. // 读取SESSION数据
  8. echo "用户ID:".$_SESSION['userid']."<br>";
  9. echo "用户名:".$_SESSION['username']."<br>";
  10. unset($_SESSION['userid']);
  11. //session_unset(); // 文件会留下来,服务器会保存之前的session生成的文件
  12. //session_destroy(); // 服务器上的文件也删除
  13. //打印$_SESSION数组
  14. print_r($_SESSION);

4、登录实例

  1. <?php
  2. // 表单提交后,接收前台表单传过来的数据
  3. $data = $_POST;
  4. // 清除一些空白符号
  5. foreach ($data as $key => $value) {
  6. $data[$key] = trim($value);
  7. }
  8. //变量赋值
  9. $username = $data["username"];
  10. //密码MD5()加密
  11. $password = md5($data["password"]);
  12. //PDO连接mysql
  13. try{
  14. $pdo = new PDO('mysql:host=localhost;dbname=lianxi','root','1qazxsw2');
  15. }catch(PDOException $e){
  16. //抛出错误
  17. echo '数据库连接失败' . $e->getMessage();
  18. }
  19. //拼接sql语句
  20. $sql = "SELECT * FROM `tp_user` WHERE `password` = :password AND `username` = :username";
  21. //预处理sql语句
  22. $pre = $pdo -> prepare($sql);
  23. //参数绑定
  24. $pre -> bindParam('username',$username,PDO::PARAM_STR);
  25. $pre -> bindParam('password',$password,PDO::PARAM_STR);
  26. //执行sql语句
  27. $exe = $pre -> execute();
  28. //返回结果集
  29. $userInfo = $pre -> fetch();
  30. //判断用户信息是否存在
  31. if (!empty($userInfo)) {
  32. // 当验证通过后,启动 Session
  33. session_start();
  34. // 注册登陆成功的 admin 变量,并赋值
  35. $_SESSION["admin"]['userid'] = $userInfo['id'];
  36. $_SESSION["admin"]['username'] = $userInfo['username'];
  37. } else {
  38. die("用户名或密码错误~");
  39. }

三、COOKIE和SESSION的区别

(1)存储位置:Cookie存储在客户端浏览器中,相对不安全;Session内容所在文件存储在服务器中,一般在根目录下的tmp文件夹中,相对更安全。

(2)数量和大小限制:Cookie存储的数据在不同的浏览器会有不同的限制,一般在同一个域名下,Cookie变量数量控制在20个以内,每个cookie值的大小控制在4kb以内。session值没有大小和数量限制,但如果数量过多,会增大服务器的压力。

(3)内容区别:cookie保存的内容是字符串,而服务器中的session保存的数据是对象。

(4)路径区别:session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议