文档章节

PHP的Cookie与Session

雪之丞
 雪之丞
发布于 2015/02/04 22:31
字数 1914
阅读 29
收藏 0

1 会话

1)会话可以简单理解为:用户开一个浏览器,点击某个网站的多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话

2)会话过程中要解决的问题

每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据,例如:多个用户点击超链接通过一个php各自购买了一个商品,服务器应该想办法把每一个用户购买的商品保存在各自的地方(??),以便于这些用户点击结账php时,结账php可以得到用户各自购买的商品为用户结账

3)会话技术: Cookie和Session

4)会话的使用场景

(1)登陆邮箱显示上次登陆时间

(2)保存用户上次浏览的商品信息

(3)保证用户在一定时间内不用反复登陆

(4)自定义(个性化)网页,不同用户自定义页面

2 Cookie

1)Cookie(小甜饼)是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了

2)Cookie的初步介绍

(1)cookie是保存在客户端的磁盘上的某个目录上(路径是可以改变的),例如windows的cookie目录为c:\Documents and Settings\用户名\Cookies,以*.txt的形式保存起来。Cookie保存的数据量不大(1K~2K)

(2)cookie在客户端以字符串的形式保存

3)cookie的基本使用

(1)创建或更新Cookie信息

setCookie(名字,值,保存时间的秒数)用于保存cookie

第一个参数:Cookie的键名

第二个参数:Cookie的键值,类型为字符串

第三个参数:Cookie值在客户端保存时间,按秒计算,默认值为一次会话时间,当浏览器会话结束cookie就失效了,并且不会在客户端保存。

setCookie('name', 'zhangsan', time()+3600)

(2)保存cookie

当浏览器器请发送某个请求,该请求在服务器端运行创建了cookie,则服务器在向浏览器返回响应信息时会以http协议的Set-Cookie的形式将cookie信息告知浏览器,浏览器接受到响应后就会将cookie信息保存在本机的相应的cookie文件中

而客户端的cookie信息是以http协议中的Cookie告知服务器的

cookie信息是以明文的形式保存的,重要的信息不要保存在cookie中

(3)获取cookie

$_COOKIE['键名']

如果cookie的有效时间到了,则取不出该键名对应的cookie值

cookie可以保存中文,默认将会对中文进行urlencode()进行编码,故取出含有总问的cookie时要使用urldecode()

示例:

setCookie('city', '上海',time()+360);

echo urldecode($_COOKIE['city']));

(4)删除Cookie

制定删除某个cookie,只需要把保存时间变为当前时间减去某个值即可:setCookie(键名, '' time()-200)

删除所有的cookie:$_COOKIE是一个超全局cookie,遍历这个超全局变量,执行如上一个个删除的操作,就可以删除当前网站创建的cookie,不会删除其他网站的cookie信息,删除了麽网站所有的cookie信息后客户端保存的该网站cookie信息的文件也会被删除,而如果只是删除了某网站的一部分cookie,客户端保存的cookie文件仍保留

(5)小插曲, 设置时区

在文件中设置: date_default_timezone_set(时区)

在php的php.ini文件中设置: date.timezone = 时区l,例如:Asia/Chongqing

3)使用Cookie会带来的问题

(1)安全性

(2)由于cookie是通过http协议在服务器端和客户端来回传输的,在网络传输据会带来带宽问题


3 Session

1)session的初步认识

session是存储在服务器端的

一个会话对应一个session文件

Session是服务器端技术,利用这个 技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session文件,当用户再去访问服务器中的其它web资源时,可以从用户各自的dession文件中取出数据为用户服务。Session是重要的  用户行为跟踪技术(防止用户非法登录/验证码等),尤其是电商,sns项目中运用广泛

session文件的创建时在脚本运行到session_start()时创建的,此时脚本是空的

session数据的末日存放时间为1440s即24分钟,从php.ini文件的[session]节中可以配置, 如session.gc_maxlifetime = 1440,此时表示在1440秒内,没有使用session文件,该文件将被视为垃圾文件被回收掉

session文件存放的路径是可以修改的,在php.ini文件的session.save_path字段,如session.save_path = "c:/mysession"

2)Session的使用

(1)初始化Session

session_start();

(2)保存session数据

$_SESSION['键名'] = 键值

示例:$_SESSION['name'] = 'zhangsan';

session保存在服务器端用户浏览器对应的session文件中,默认在window的c:\windows\Temp目录中

session文件中可以保存所有的基本数据类型,integer,float, boolean,string,array, object

(3)获取session

获取某一个键名的session: $_SESSION['键名']

获取所有session数据:用遍历超全局变量$_SESSION(是关联数组),输出对应键名的键值

(4)更新session数据

就是重新设置session值, $_SESSION['键名'] = '键值';

(5)删除session数据

制定输出某一个键值对:unset($_SESSION['键名'])

删除当前浏览器对应的所有session: sesssion_destroy()

如果没有手动删除session

(5)服务器是如何实现一个session为一个用户的一次会话服务的

浏览器第一访问一个带有session的网站,网站为该浏览器声称一个session id,服务器在http协议中以cookie的形式将session id返回给浏览器,当浏览器再次访问该网站的网页时,会在http协议中以cookie的形式将session id发送给服务器

(6)sesion小结

(1)session必须初始化才能使用,session的初始化有2种方式,一是调用session_start();,二是配置php.ini中的session.auto_start = 1但是不推荐使用第二种方式,因为会影响效率

(2)session文件中可以放入多个键值对,注意键名不要重复,键值可以是基本数据类型,和array,对象

(3)如果我们要取出对象,则需要事先声明一下类的定义,用require_onece '类文件';

(4)在web开发中,服务器可以为每个用户浏览器创建一个超全局变量$_SESSION,注意:一个浏览器独占一个$_SESSION(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写入用户浏览器独占的Session文件,当用户使用浏览器访问其他php页面时,其他php页面可以从用户的$_SESSION中取出该用户的数据,为用户服务。

4 Session与Cookie的主要区别于

1)Cookie是把用户的数据写给用户的浏览器

2)Session技术坝用户的数据写到用户独占的$_SESSION中,存在服务器的某个路径的文件中






© 著作权归作者所有

共有 人打赏支持
雪之丞
粉丝 13
博文 219
码字总数 51065
作品 0
浦东
程序员
php对session的存储以及回收

1、php中session的生成机制 我们先来分析一下PHP中是怎么生成一个session的。设计出session的目的是保持每一个用户的各种状态来弥补HTTP协议的不足(无状态)。我们现在有一个疑问,我们都知道...

stone_
2016/06/01
44
0
了解php中session垃圾回收机制

1、php中session的生成机制 我们先来分析一下PHP中是怎么生成一个session的。设计出session的目的是保持每一个用户的各种状态来弥补HTTP协议的不足(无状态)。我们现在有一个疑问,我们都知道...

问题终结者
05/06
0
0
PHP 中cookie 和 session 的分析

PHP 的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。 PHP 在http 协议的头信息里发送cookie,因此 setcookie() 函数必须在其它信息被输出到浏览器 前调用,这和...

freedonn
2014/08/17
0
3
PHP 中cookie 和 session 的分析

HP 中cookie 和session 的分析 -- 与客户端进行交互 1. PHP 的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。 PHP 在http 协议的头信息里发送cookie,因此 setc...

落枫眠
2011/11/10
0
0
PHP cookie和session的分析

PHP的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。 PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 ...

Adam-Lee
2011/09/01
0
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

获取多个集合列表的笛卡尔积

获取多个集合笛卡尔积 电商中典型业务场景:商品搜索 单属性属性值之间为并查询 不同属性的属性值之间查询为与查询 import java.util.ArrayList;import java.util.List;/** * Created w...

键走偏锋
10分钟前
0
0
echarts 迁移地图 控制鼠标缩放大小比例

在网上找了好久没有找到解决方式,还是重新看了一下文档,终于找到的解决方案, zoom:1, //默认显示级别 scaleLimit:{min:1,max:3}, // 缩放级别 echarts 文档-配置项链接 http://echarts.b...

心驰
13分钟前
0
0
Boot2Docker ISO is out-of-date,

Boot2Docker ISO is out-of-date, downloading the latest release. 使用docker-machine时无法更新Boot2Docker ISO导致创建vm machine失败 解决方法:关闭网络,创建好之后再开启...

writeademo
21分钟前
0
0
在 Tomcat 中设置 Tapestry 框架的 html 热加载

如果开发中使用到了 Tapestry 这个框架,如果事先没有设置过的话,开发的时候 html 是不会热加载的,也就是说修改了 html 文件,不能刷新浏览器后立马看到修改完的效果,必须先重新启动应用服...

LeoXu
43分钟前
0
0
【微服务】开启巨石应用到微服务的探索

背景 在过去的一年时间里,我一直在从事一件事情,将现有的单体应用(巨石应用)向微服务改造。 接下来,将持续整理一些在微服务路上的学习与成长。 为什么要做微服务 单体应用,开发、部署简...

艳沐石
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部