php $_SESSION含义,PHP的session概念与语法详细讲解 筋斗云网络

2023-11-05 04:20

本文主要是介绍php $_SESSION含义,PHP的session概念与语法详细讲解 筋斗云网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

cookie的工作流程

由服务器发送给浏览器一个cookie(牌子)

以后再访问时,由浏览器带着cookie(牌子),服务器检测cookie的信息

如何设置cookie: setcookie()函数

如何读取cookie: $_COOKIE[] 超级全局数组

疑问?

问: cookie由浏览器带着的,那么如何被篡改了,怎么办?

比如:你买的奶酪,你把单据改成"蛋糕",如何防范?

因为cookie是很容易被篡改或伪造的,

因此,cookie往往用来记住用户名,浏览历史,等安全性要求不高的地方.

能否防范呢?

答:能,可以用session技术

也可以通过一些加密技巧来防范.

先用session来处理

PHP

1

2

setcookie('user','lisi');

echo'OK';

打印session

PHP

1

2

3

4

5

6

if($_COOKIE['user']=='vip'){

echo'尊敬的大客户!';

}else{

echo'普通客户,爱买不买!';

}

一般情况打印出的结果是:普通客户,爱买不买

如果,把cookie值手动的在浏览器改为vip。结果就可想而知!那么如何规避这种情况呢?

QQ%E6%88%AA%E5%9B%BE20161130182620.png

先用session来处理

思考?

对于cookie,相当于蛋糕店的老板给你一张纸,

纸上写你领取的物品: 奶酪,蛋糕等,

这个纸片在你手里,容易篡改,刚才大家已经看到.

现在换个思路:

你买了蛋糕后,老板给你一张收据,收据上写:"单号:1018"

你取物品时,老板打开账本,核对:

1018:八寸蛋糕一份!

取出八寸蛋糕给你!

这一次,不好伪造了.

03.php

PHP

1

2

3

session_start();// 开启session

$_SESSION['user']='liudehua';

echo'OK';

QQ%E6%88%AA%E5%9B%BE20161130183611.png

04.php

PHP

1

2

3

session_start();

echo$_SESSION['user'];

bbe3cc91557e689ee84f4773ffdf6c35.png

怎么通过以上cookie凭证找到liudehua这几个字的?

打开php.ini找到:

http://php.net/session.save-path

session.save_path = "d:/wamp/tmp"

QQ%E6%88%AA%E5%9B%BE20161130184706.png

session详细语法学习

session的创建、修改、销毁

1:无论是创建,修改,还是销毁session,都需要先session_start();

2:一但session_start之后,$_SESSION就可以自由的添加,删除,修改

即:当成普通数组一样操作(这一点和cookie,cookie的操作,只能通过setcookie函数来进行)

session的创建

PHP

1

2

3

4

5

6

7

8

9

10

11

session_start();

$_SESSION['user']='zhaobenshan';

$_SESSION['school']='PKU';

$_SESSION['test']=array('中','华','人');

classDog{

public$leg=4;

}

session的读取

PHP

1

2

3

4

5

6

7

8

session_start();

classDog{

public$leg=4;

}

print_r($_SESSION);

session的销毁

PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

session_start();

/**

unset($_SESSION['user']);

$_SESSION['school'] = '牛筋大学';

**/

// ----------------销毁session,

/*

// 1:可以单独销毁某一个单元,即把$_SESSION数组某一个单元unset掉

unset($_SESSION['user']);

*/

/*

// 2:可以整体把箱子给清空,即$_SESSION数组给清空

$_SESSION = array();

*/

/*

// 3:利用函数把箱子整体清空,效果同第2种办法

session_unset();

*/

/*

// 4:彻底把箱子给毁掉,即文件都没了

*/

session_destroy();

探讨session的生命周期!

我们知道,一个session,有2方面的数据共同发挥作用

1:客户端的cookie

2:服务器端的session文件

要想让session失效,也是要从这2个角度来考虑

在php.ini里, 如下选项,控制sessionid的cookie的生命周期,秒为单位

session.cookie_lifetime = 15

注意:如果用户篡改了cookie,让cookie的生命周期为1年,那你也判断不出来.

如果想严格的让session就半小时有效,可以这样:

$_SESSION['time'] = 登陆时的时间戳

检验session的开启时间!

session的有效路径!

session的有效,取决于cookie,

cookie在哪儿有效,session自然就能读到

PHP如下选项,指定了sessionid这个cookie的有效路径是 / 路径,

自然session无论在多深的目录下设置,而session在整站都有效.

; The path for which the cookie is valid.

; http://php.net/session.cookie-path

session.cookie_path = /

cookie只能存储字符串/数字这样的标量数据

而session还可以存储数组/对象 (除了资源型,其他7种都可以)

请注意:如果你把对象存储到session里,

那么另一个读取session的页面,也必须有此对象对应的类声明才合理.

否则,从session里分析出一个对象,却没有与之对应的类,则会提示:

__PHP_Incomplete_Class Object

从http协议的角度看

cookie信息是放在头信息里传输的,

自然,使用cookie之前,不能有任何主体信息的输出,空白也不行

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

如果你仔细检测,没有空白,请检查BOM信息

这篇关于php $_SESSION含义,PHP的session概念与语法详细讲解 筋斗云网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/347359

相关文章

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4