### Session与Cookie的区别及配置使用 #### 一、概述 在Web开发中,尤其是在使用PHP进行后端开发时,为了实现用户状态管理、个性化设置等功能,开发者常常需要使用到两种技术:Session 和 Cookie。这两种技术虽然都用于追踪用户的状态,但它们的工作原理、存储位置、安全性等方面存在显著差异。 #### 二、Cookie与Session简介及区别 **Cookie** 是一种简单的文本文件,用于在客户端存储少量数据。它允许网站保存用户的信息以便后续访问时能够快速获取。例如,网站可以通过Cookie来记住用户的登录状态。 **Session** 则是一种服务器端的技术,用于存储特定用户会话所需的信息。当用户访问某个网站时,服务器会在用户的设备上创建一个唯一的Session ID,并将此ID存储在Cookie中。服务器端可以根据这个Session ID来检索与该用户相关的会话数据。 两者的主要区别在于: 1. **存储位置**:Cookie数据存储在客户端,而Session数据存储在服务器端。 2. **安全性**:由于Cookie存储在客户端,容易受到恶意脚本的攻击,如XSS(跨站脚本攻击)。相比之下,Session数据存储在服务器端,相对更安全。 3. **容量限制**:Cookie有大小限制(通常不超过4KB),并且每个域可以设置的Cookie数量有限制。Session没有明确的大小限制。 4. **生命周期**:Cookie可以设置过期时间,可以是临时的也可以是持久的。Session则通常在用户关闭浏览器后结束,也可以通过编程控制其生命周期。 #### 三、Cookie的配置与应用 在PHP中,可以通过`setcookie()`函数来设置Cookie。此函数的基本语法如下: ```php bool setcookie(string $name, string $value = "", int $expire = 0, string $path = "/", string $domain = "", bool $secure = false, bool $httponly = false) ``` - **$name**:Cookie的名称。 - **$value**:Cookie的值。 - **$expire**:Cookie的有效期,单位为秒。默认为0表示会话结束后Cookie失效。 - **$path**:Cookie的路径,默认为"/"表示根路径。 - **$domain**:Cookie的有效域名,默认为空字符串表示当前域名。 - **$secure**:是否只在HTTPS连接下有效,默认为false。 - **$httponly**:是否仅允许通过HTTP协议访问,默认为false。 **注意事项**: - `setcookie()`函数必须在任何输出内容之前调用。 - 浏览器对于Cookie的数量和大小有限制,一般一个域名下的Cookie数量不超过20个,单个Cookie大小不超过4KB。 #### 四、Session的配置与应用 1. **启动Session**:在PHP中使用Session之前,首先需要通过`session_start()`函数来启动Session。 ```php session_start(); ``` 2. **设置Session数据**:通过`$_SESSION`超级全局变量来设置和读取Session数据。 ```php $_SESSION['username'] = 'JohnDoe'; echo $_SESSION['username']; // 输出 "JohnDoe" ``` 3. **销毁Session**:可以通过`session_destroy()`函数来销毁Session。 ```php session_start(); session_destroy(); ``` 4. **自定义Session配置**:可以在PHP配置文件(php.ini)中设置Session的配置选项,如存储路径、名称等。 ```ini session.save_path = "/tmp" session.name = "my_session" ``` 5. **使用Session ID**:可以使用`session_id()`函数来获取或设置Session ID。 ```php session_id(); // 获取当前Session ID session_id('new_session_id'); // 设置新的Session ID ``` #### 五、HTTPS与HTTP的区别 HTTPS协议相比于HTTP协议增加了SSL/TLS加密层,提供了数据加密传输、身份认证等安全特性。主要区别包括: - **加密传输**:HTTPS使用SSL/TLS加密,确保数据的安全性;HTTP则直接明文传输。 - **证书验证**:HTTPS需要通过CA机构颁发的证书来进行身份验证,增加信任度。 - **连接方式与端口号**:HTTP使用TCP 80端口;HTTPS使用TCP 443端口。 - **性能开销**:HTTPS由于涉及加密解密过程,在性能上有一定开销。 Session和Cookie各自适用于不同的场景。Cookie适用于需要在客户端持久存储少量数据的情况,而Session则更适合于需要在服务器端存储大量会话数据的场景。开发者应根据实际需求选择合适的技术方案。


















Session信息是存放在服务器端,但 cookie是存放在客户端的,当然php
的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪
Cookie是完全保持在客户端的
2、Cookie的配置与应用
Setcookie(string name, string value, int expire,string path, string domain, int secure);
(1)、必须在HTML文件的内容输出之同的浏览器对Cookie的处理不前设置;
(2)、不一致,且有时会出现错误的结果。
(3)、限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。
1. PHP的COOKIE
cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。
PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似。
session_id();
session_name;
1.1 设置cookie:
可以用 setcookie() 或 setrawcookie() 函数来设置 cookie。也可以通过向客户端直接发送http头来设置.
1.1.1 使用setcookie()函数设置cookie:
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool httponly]]]]]] )
name: cookie变量名
value: cookie变量的值
expire: 有效期结束的时间,
path: 有效目录,
domain: 有效域名,顶级域唯一
httponly: 如果为1,则cookie只能通过HTTP协议来访问,而不能通过脚本来访问,很好的避免了XSS攻击。
HTTPS和HTTP的区别:
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全
例子:
<?php
$value = 'something from somewhere';
setcookie("TestCookie", $value); /* 简单cookie设置 */
setcookie("TestCookie", $value, time()+3600); /* 有效期1个小时 */
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", ".example.com", 1); /* 有效目录 /~rasmus,有效域名example.com及其所有子域名 */
?>
设置多个cookie变量: setcookie('var[a]','value');
用数组来表示变量,但它的下标不用引号.(会自动加上下标,如果加上引号会出现重复或者可能会被转义,下标不可用)
这样就可以用$_COOKIE['var']['a']来读取该COOKIE变量.
1.1.2. 使用header()设置cookie;
header("Set-Cookie: name=$value[;path=$path[;domain=xxx.com[;...]]");
后面的参数和上面列出setcookie函数的参数一样.
比如:
$value = 'something from somewhere';
剩余6页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于机器学习的商品评论情感分析-毕业设计项目
- 【C语言编程】字符串初始化与操作:字符数组定义、打印及指针访问方法解析
- 【C语言编程】字符串拷贝函数的多种实现方式及其应用场景分析:基础算法学习与实践
- 【C语言编程】基于while和do-while循环的strstr函数实现:字符串匹配与计数算法分析
- ensp软件安装包(包含virtualbox、wireshark、winpcap)
- 【C语言编程】指针与数组操作示例:内存管理及字符串处理函数应用详解
- 【C语言编程】两头堵模型实现:去除字符串首尾空格及长度计算功能开发
- 基于机器学习技术的商品评论情感分析毕业设计项目
- 5-分析式AI基础 6-不同领域的AI算法 7-机器学习神器
- 8-时间序列模型 9-时间序列AI大赛 10-神经网络基础与Tensorflow实战
- Java并发编程的设计原则与模式
- 机器学习基础算法模型实现
- 人工智能与机器学习课程群
- 毕业论文答辩发言稿.docx
- 本科学位论文答辩的技巧与应变能力.docx
- 本科毕业论文答辩范文.docx


