PHP会话技术跟踪和记录用户?使用cookie会话你必须掌握

简介: PHP会话技术跟踪和记录用户?使用cookie会话你必须掌握

🎬 鸽芷咕个人主页

🔥 个人专栏:《速学数据结构》《C语言进阶篇》⛺️生活的理想,就是为了理想的生活!

📋 前言

  🌈hello! 各位铁铁们大家好啊,今天给大家带来的是PHP会话技术之一cookie?

  ⛳️会话技术跟踪和记录用户作为我们维护网站和记录密码的一种技术,主要有俩种cookie和Session。那么面向浏览器端的cookie你会使用吗!

  ⛺️ 欢迎铁汁们 ✔️ 点赞 👍 收藏 ⭐留言 📝!

会话技术的概述

  • 思考:两个或多个用户同时在浏览器端通过HTTP协议如何向服务器端发送请求时,如何判断请求是否是来自同一个用户?
  • 答案:HTTP协议是无状态的协议,因此其无法告诉我们这两个请求是来自同一个用户,此时我们需要使用会话技术跟踪和记录用户在该网站所进行的活动。

会话技术:是一种维护同一个浏览器与服务器之间多次请求数据状态的技术,它可以很容易地实现对用户登录的支持,记录该用户的行为,并根据授权级别和个人喜好显示相应的内容。

  • 例如,生活中从拨通电话到挂断电话之间一连串你问我答的过程就是一个会话。Web应用中的会话过程类似于打电话,它指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应过程。

PHP中Cookie和Session是目前最常用的两种会话技术。

Cookie 指的是一种在 浏览器端 存储数据并以此来跟踪和识别用户的机制;

Session 指的是将信息存放在 服务器端 的会话技术。

一. Cookie简介

在Web应用程序中,Cookie的功能:

  • 它是网站为了辨别用户身份而 存储在用户本地终端上 的数据。
  • 当用户通过浏览器访问Web服务器时,服务器会给客户发送一些信息,这些信息都保存在Cookie中。
  • 当该浏览器再次访问服务器时,会在请求头中同时将Cookie发送给服务器,这样,服务器就可以对浏览器做出正确的响应。

Cookie的应用场景:

Cookie在浏览器和服务器之间的传输过程:

尽管Cookie实现了服务器与浏览器的信息交互,但也存在一些缺点,具体如下:

  • Cookie被附加在HTTP消息中,无形中增加了数据流量。
  • Cookie在HTTP消息中是明文传输的,所以安全性不高,容易被窃取。
  • Cookie存储于浏览器,可以被篡改,服务器接收后必须先验证数据的合法性。
  • 浏览器限制Cookie的数量和大小(通常限制为50个,每个不超过4KB),对于复杂的存储需求来说是不够用的。

二. Cookie基本使用——创建Cookie

2.1 创建Cookie

bool setcookie ( 
   string $name ,   // Cookie的名(必选)
   string $value = "" , // Cookie的值(可选)
   int $expire = 0 ,    // Cookie的有效期(可选)
   string $path = "" ,  // Cookie在服务器端的路径(可选)
   string $domain = "" ,  // Cookie的有效域名(可选)
   bool $secure = false , // 指定是否通过安全的HTTPS连接来传输(可选)
   bool $httponly = false // 指定Cookie只能通过HTTP协议访问(可选)
)

演示实例:

// ① 设置Cookie
setcookie('username', 'ada'); // 设置一个名称为username的Cookie,其值为ada
setcookie('pwd', '123456'); // 设置一个名称为pwd的Cookie,其值为123456
// ② 设置Cookie过期时间
setcookie('data', 'PHP');   // 未指定过期时间,在会话结束时过期
setcookie('data', 'PHP', time() + 1800);    // 30分钟后过期
setcookie('data', 'PHP', time() + 60 * 60 * 24);   // 一天后过期

说明:省略第3个参数时,Cookie仅在本次会话有效,用户关闭浏览器时会话就会结束。

2.2 获取Cookie

  在PHP中,任何从客户端发送的Cookie数据都会被自动存入到$_COOKIE超全局数组变量中。通过$_COOKIE数组可以获取Cookie数据。

示例:使用超全局数组 $_COOKIE[] 读取 Cookie 中的信息。

look.php代码如下:

反复刷新look.php网页,5秒钟后观察输出信息,有什么变化?

三 删除Cookie的两种方式:

  • Cookie 创建时未设置有效时间,则Cookie文件会在关闭浏览器时自动被删除。
  • 利用 setcookie() 函数设置过期时间。

示例:利用了客户端的cookies来实现记住密码自动登录的功能,

3.1 创建login.php页面,登录并使用cookie保存用户账号和密码

<form action="" method="post">
    用户名:<input type="text" name="uname"><br />
    密&nbsp;&nbsp;&nbsp;码:<input type="password" name="pwd"><br />
    <input type="submit" name="btn" value="登录">
</form>
<?php
  if(isset($_POST['btn'])){
    $uname=$_POST['uname'];
    $pwd=$_POST['pwd'];   
    setcookie('uname',$uname);
    setcookie('pwd',$pwd);
    echo "登录成功,2秒后跳转到首页…………";
    header("refresh:2;url=main.php");     
  }

3.2.创建功能页面,读取用户账号和密码,实现自动登录:

<?php    
  //登录判断
  if(!isset($_COOKIE['uname'])){
    //header写法
    echo "<script>alert('当前用户未登录!')</script>";
    header("refresh:2;url=login.php");    
    exit;
  }
  echo "您是".$_COOKIE['uname']."欢迎访问!<br />";
  echo "您的密码是:".$_COOKIE['pwd']."<br />";
?>
<a href="quit.php">退出</a>

3.3 创建quit.php页面,删除cookie:

<?php
  setcookie('uname','',time()-10);
  header("location:login.php");
?>

如何在浏览器端查看Cookie?

Chrome浏览器在老版本情况下,是可以去直接查看cookie的存放地址以及存放的密码等内容的:

  • 但是现在由于浏览器大多数安全等级比较高
  • 就查看不了 cookie 了只能清除


目录
相关文章
|
12天前
|
存储 安全
Cookie会话跟踪的原理
会话跟踪技术包括Cookie和Session。Cookie是客户端技术,首次访问时服务器通过Set-Cookie响应头发送Cookie,浏览器保存并在后续请求中通过Cookie请求头回传,实现会话跟踪。但Cookie易被用户修改或禁用,安全性较低。Session则是服务器端技术,每次会话生成唯一的Session ID,通过Cookie传递给客户端,客户端在后续请求中携带此ID,服务器据此识别会话。Session更安全,但在集群环境中需解决会话共享问题。
28 1
|
25天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
39 3
|
3月前
|
存储 缓存 数据处理
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
本文介绍了PHP会话控制及Web常用的预定义变量,包括`$_REQUEST`、`$_SERVER`、`$_COOKIE`和`$_SESSION`的用法和示例。涵盖了cookie的创建、使用、删除以及session的工作原理和使用,并通过图书上传的例子演示了session在实际应用中的使用。
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
|
3月前
|
缓存 程序员 PHP
为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
【9月更文挑战第8天】Swoole 被视为 PHP 程序员技术水平的分水岭,因为它要求程序员深入理解底层原理(如网络编程、异步和并发模型),具备性能优化能力(如高效服务器开发、数据库连接池管理),拥有架构设计能力(如微服务架构、项目复杂度管理),并具备持续学习和自我提升意识。熟练掌握 Swoole 的程序员在技术能力和综合素质方面更具优势。
|
3月前
|
缓存 NoSQL PHP
使用PHP-redis实现键空间通知监听key失效事件的技术与代码示例
通过上述方法,你可以有效地在PHP中使用Redis来监听键空间通知,特别是针对键失效事件。这可以帮助你更好地管理缓存策略,及时响应键的变化。
99 3
|
3月前
|
存储 前端开发 Java
JavaWeb基础7——会话技术Cookie&Session
会话技术、Cookie的发送和获取、存活时间、Session钝化与活化、销毁、用户登录注册“记住我”和“验证码”案例
JavaWeb基础7——会话技术Cookie&Session
|
3月前
|
缓存 网络协议 程序员
为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
【9月更文挑战第7天】Swoole 因其异步非阻塞编程模式、高性能服务器开发能力、性能优化工具及拓展技术视野等特点,被视为 PHP 程序员技术水平的分水岭。它要求程序员掌握异步编程、协程、网络协议等知识,并具备性能优化和系统管理能力,从而全面提升技术水平。
|
3月前
|
消息中间件 NoSQL Go
PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践
【9月更文挑战第7天】在从 PHP 的 ThinkPHP 框架迁移到 Go 的 Gin 框架时,涉及 Redis 延时消息队列的技术实践主要包括:理解延时消息队列概念,其能在特定时间处理消息,适用于定时任务等场景;在 ThinkPHP 中使用 Redis 实现延时队列;在 Gin 中结合 Go 的 Redis 客户端库实现类似功能;Go 具有更高性能和简洁性,适合处理大量消息。迁移过程中需考虑业务需求及系统稳定性。
|
4月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
288 0
|
4月前
|
安全 中间件 网络安全
深入浅出PHP框架之Laravel的优雅云计算与网络安全:探索云服务、网络安全和信息安全的技术领域
【8月更文挑战第29天】在编程的世界里,PHP以其灵活性和易用性广受欢迎。本文将深入探讨PHP的一个流行框架——Laravel,揭示它如何以简洁、高雅的解决方案满足复杂的开发需求。我们将一起走进Laravel的世界,探索其背后的哲学,以及它如何让代码变得更加动人和富有韵律。