PHP快速入门07-Cookie与Session的说明与使用

news/2024/10/18 2:34:01/

文章目录

  • 前言
  • 一、关于Cookie和Session
    • 1.1 Cookie
    • 1.2 Session
  • 二、Cookie和Session的使用
    • 2.1 Cookie的使用例子
    • 2.2 Session的使用例子
  • 总结


前言

本文已收录于PHP全栈系列专栏:PHP快速入门与实战

Cookie和Session是一个Web开发几乎不可避免的东西,是网站开发的核心内容,HTTP是无状态的协议,正是Cookie和Session的存在,才保证了网站等应用场景的身份认证和前后数据联系。今天本小节讲解他们在PHP中的使用方式。

在这里插入图片描述

一、关于Cookie和Session

1.1 Cookie

PHP的Cookie: Cookie是一种在Web浏览器和Web服务器之间传输数据的方式。PHP可以使用setcookie()函数创建Cookie,并使用$_COOKIE数组读取Cookie的值。

下面是一些常用的setcookie()函数的参数:

  • name:Cookie的名称
  • value:Cookie的值
  • expire:Cookie的过期时间,以秒为单位
  • path:Cookie的可用路径
  • domain:Cookie的域名
  • secure:一个布尔值,指示Cookie是否只能通过安全链接传输(即HTTPS)
  • httponly:一个布尔值,指示Cookie是否仅可通过HTTP协议访问

1.2 Session

PHP的Session: Session是从访问者打开网站开始到最后关闭网站时的一段时间内,存储在服务器上的用户信息。 PHP可以使用session_start()函数启动会话,并使用$_SESSION数组来存储和访问会话变量。

下面是一些常用的session_start()函数的参数:

  • name:会话名称
  • save_path:会话数据存储路径
  • cookie_lifetime:Cookie的生命周期
  • cookie_path:Cookie的路径
  • cookie_domain:Cookie的域名
  • cookie_secure:一个布尔值,指示Cookie是否只能通过安全链接传输(即HTTPS)
  • cookie_httponly:一个布尔值,指示Cookie是否仅可通过HTTP协议访问

二、Cookie和Session的使用

PHP的Cookie与Session都是用来存储用户数据的工具,但它们的使用场景有所不同。下面分别介绍它们的使用例子。

2.1 Cookie的使用例子

Cookie是一种在客户端存储临时数据的方式。通常情况下,它被用于缓存用户的登录状态、用户选择的语言、记录用户浏览过的商品、购物车等。

以下是一个示例代码,演示如何使用Cookie来存储用户的登录状态:

<?php
// 判断用户是否已经登录
if (isset($_COOKIE['username'])) {echo "Welcome " . $_COOKIE['username'] . "!";
} else {// 登录表单echo '<form method="post" action="login.php">';echo 'Username: <input type="text" name="username"><br>';echo 'Password: <input type="password" name="password"><br>';echo '<input type="submit" value="Login">';echo '</form>';
}// 处理登录请求
if ($_SERVER['REQUEST_METHOD'] == 'POST') {$username = $_POST['username'];$password = $_POST['password'];// 验证用户名和密码if ($username == 'admin' && $password == '123456') {// 登录成功,设置Cookiesetcookie('username', $username, time() + 3600); // 过期时间为一小时echo "Login successful!";} else {// 登录失败echo "Invalid username or password.";}
}
?>

2.2 Session的使用例子

Session是一种在服务端存储用户数据的方式。通常情况下,它被用于跟踪用户的会话状态、记录用户的访问页面等。

以下是一个示例代码,演示如何使用Session来存储用户的登录状态:

<?php
// 开启Session
session_start();// 判断用户是否已经登录
if (isset($_SESSION['username'])) {echo "Welcome " . $_SESSION['username'] . "!";
} else {// 登录表单echo '<form method="post" action="login.php">';echo 'Username: <input type="text" name="username"><br>';echo 'Password: <input type="password" name="password"><br>';echo '<input type="submit" value="Login">';echo '</form>';
}// 处理登录请求
if ($_SERVER['REQUEST_METHOD'] == 'POST') {$username = $_POST['username'];$password = $_POST['password'];// 验证用户名和密码if ($username == 'admin' && $password == '123456') {// 登录成功,设置Session$_SESSION['username'] = $username;echo "Login successful!";} else {// 登录失败echo "Invalid username or password.";}
}
?>

需要注意的是,在使用Session之前必须调用session_start()函数来开启Session。此外,Session数据默认情况下会在用户关闭浏览器时失效,但也可以通过设置Session的过期时间来控制其生命周期。

总结

以上就是关于本篇文章介绍的内容,Cookie与Session,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。


http://www.ppmy.cn/news/47223.html

相关文章

【Linux网络设置】

目录 一、查看网络接口信息1.1、查看所有活动的网络接口信息1.2、查看指定网络接口信息 二、查看主机名称2.1、hostname命令2.2、永久设置主机名 三、查看路由表条目route命令 四、查看网络连接情况4.1、netstat命令4.2、ss命令 五、测试网络连接ping命令 6、跟踪数据包tracerr…

UniLM模型简单介绍

目录 一、概要 二、深入扩展 2.1 预训练任务 2.2 模型精调 一、概要 如果将基于Transformer的双向语言模型&#xff08;如BERT模型中的掩码语言模型&#xff09;与单向的自回归语言模型&#xff08;如BART模型的解码器&#xff09;进行对比&#xff0c;可以发现&#xff0c…

c# 通过webView2模拟登陆小红书网页版,解析无水印视频图片,以及解决X-s,X-t签名验证【2023年4月15日】

一、c# WebView2简介 1.一开始使用WebBrowser&#xff0c;因为WebBrowser控件使用的是ie内核&#xff0c;经过修改注册表切换为Edge内核后&#xff0c; 发现Edge内核版本较低&#xff0c;加载一些视频网站提示“浏览器版本过低“&#xff0c;”视频无法加载“。 2.WebBrowser…

交互式shell脚本编程2

当你在终端环境下安装新的软件时&#xff0c;你可以经常看到信息对话框弹出&#xff0c;需要你的输入&#xff0c;比如&#xff1a;RHEL/CentOS自带的setup&#xff0c;对话框的类型有密码箱、检查表、菜单等等。他们可以引导你以一种直观的方式输入必要的信息&#xff0c;使用…

精通 TensorFlow 1.x:16~19

原文&#xff1a;Mastering TensorFlow 1.x 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只关心如何实现目标。—…

UDS统一诊断服务【五】诊断仪在线0X3E服务

文章目录 前言一、诊断仪在线服务介绍二、数据格式2.1&#xff0c;请求报文2.2&#xff0c;子功能2.3&#xff0c;响应报文 前言 本文介绍UDS统一诊断服务的0X3E服务&#xff0c;希望能对你有所帮助 一、诊断仪在线服务介绍 诊断仪在线服务比较简单&#xff0c;其功能就是告诉…

【JavaEE】File、InputStream和OutputStream的使用

1.File 在计算机中目录结构如下&#xff1a; 而File就表示一个目录或者一个普通文件。 File表示目录&#xff1a; File表示普通文件&#xff1a; 我们先来看File的构造方法&#xff1a; 构造器描述File(File parent, String child)根据父目录 孩子文件路径&#xff0c;创…

玄子Share - 精选三套 JavaScript 练手项目

玄子Share - 精选三套 JavaScript 练手项目 1. 50 Projects in 50 Days - HTML/CSS and JavaScript 50 天 50 个前端练手项目 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dCWO6V2G-1682076972984)(./assets/image-20230421192413713.png)] [外链…