您好,欢迎访问一九零五行业门户网

php会话控制cookie与Session会话处理_PHP教程

在php中cookie与session通常用于注册登录与记录用户信息了,但是cookie与session两个有很大的区别,下面我们一起来看看。
会话简介:http(超文本传输协议)定义了通过万维网(www)传输文本、图形、视频和所有
其他数据所有的规则。http 是一种无状态的协议,说明每次请求的处理都与之前或之后的
请求无关。虽然这种简化实现对于http 的普及做出了卓越的贡献,但对于希望创建复杂的
web 应用程序的开发人员来说,这点有点困扰。为了解决这个问题,出现了一种在客户端
机器上存储少量信息(cookie)。
由于cookie 大小限制、数量及其他原因,开发人员又提出了一种解决方案:session 会
话处理。
一.cookie
的应用
设置cookie:setcookie()函数可以在客户端生成一个cookie 文件,这个文件可以保存到
期时间、名称、值等。
创建cookie
 代码如下 复制代码
参数1:cookie 名称
参数2:cookie 值
参数3:cookie 过期时间
查看cookie
打开火狐浏览器:工具–页面信息-安全-查看cookie,可以查看到当前的cookie信息
读取cookie
 代码如下 复制代码
删除cookie
 代码如下 复制代码
使用cookie 的限制
1、必须在html 文件的内容输出之前设置;
2、不同的浏览器对cookie 的处理不一致,且有时会出现错误的结果。
3、限制是在客户端的。一个浏览器能创建的cookie 数量最多为30 个,并且每个不能
超过4kb,每个web 站点能设置的cookie 总数不能超过20 个。
二.session
会话处理
在使用session 会话处理,必须开始session,使用session_start()开始会话。
创建session 并读取session
 代码如下 复制代码
判断session 是否存在
 代码如下 复制代码
删除session
 代码如下 复制代码
销毁所有session
 代码如下 复制代码
cookie与session的区别和关系
•存储位置:
1.session存储在服务器位置上,可以通过php.ini里面配置session相关配置
2.cookie存储在客户端上的上(其实可以分两种:
1,持久性cookie,设置了cookie的时间,以文件方式存在硬盘上,
2,会话cookie,没有设置cookie时间,cookie的生命周期也就是关闭浏览器前就消失,一般不会保存在硬盘,而是保存在内存上)
cookie和session的关系
cookie通过http报头发送:
cookie  name=php%bb%b4%b1%b1; phpsessid=cpt2ah3pi4cu7lo69nfbfllbo7
其中phpsessid就是关联服务器session的重要参数
再看session文件:sess_cpt2ah3pi4cu7lo69nfbfllbo7
session_id的生成格式就是:sess_加上一串phpsessid的值
我们可以这样理解:
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识 (称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来 使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相 关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应 中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给 服务器。一般这个cookie的名字都是类似于seeesionid
php.ini里面关于session和cookie有关的配置
1,session.use_cookie = 1
是否采用cookie方法传递session id值。默认是1,表示启用。
2,session.name = phpsessid
不管是cookie传递sessioin_id,还是get方法传递session_id,都需要使用键值。他们的格式分别是cookie:  sess_name=session_id;和/path.php?sess_name=session_id,其中sess_name就是由这里指定的。
3,session.use_only_cookies = 0
表示只使用cookie 的方法传递session id。我们说过,传递cookie的方法,除了cookie,还有get方法,get方法是不安全的方法。在用户端禁用了cookie的时候,会采用get方法传递session_id,可以通过这个设置尽用get方法传递session_id。
4,session.cookie_lifetime = 0, session.cookie_path = / 以及session.cookie_domain =
如果使用cookie方法传递session_id的话,这里分别指定了cookie有效域、目录和时间。分别对应setcookie()函数的形参$expire、$path和$domain。其中cookie_lifetime=0表示直到关闭浏览器才删除cookie。还可以使用session_set_cookie_params()函数修改这些值。
5,session_name([string $name])
获取或更新session_name。如果传了name,则表示不使用默认的名称phpsessid(由session.name)指定,否则获取当前session_name。注意:如果设置session_name,则必须在session_start()之前调用才生效。
6,session_id([string $id])
与session_name()类似,但它是读取或者设置session_id的方法。同样,设置session_id的话,必须在session_start()之前调用才有效。
7,session_set_cookie_params()和session_get_cookie_params()
通过session_set_cookie_params()可以重新设定session.cookie_lifetime, session.cookie_path以及session.cookie_domain这三个php.ini设置。而session_get_cookie_params()则是获取这些设定的值。
这里我自己特别去做了一张表,把他们的不同点和相同点总结了一下:
http://www.bkjia.com/phpjc/632730.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/632730.htmltecharticle在php中cookie与session通常用于注册登录与记录用户信息了,但是cookie与session两个有很大的区别,下面我们一起来看看。 会话简介:http(超文...
其它类似信息

推荐信息