在PHP中浅谈Cookie与Session
2016-03-01万丽华
万丽华
(江西信息应用职业技术学院,江西南昌330043)
在PHP中浅谈Cookie与Session
万丽华
(江西信息应用职业技术学院,江西南昌330043)
介绍和分析了Cookie和Session两种浏览器的保存方式,并结合PHP讨论两者的应用。
Cookie;Session;PHP;应用
1 Cookie
“Cookie”在英语中的意思是“小甜饼或小礼物”,大家知道HTTP协议本身是一种无状态协议,服务器单单从网络连接上是无法知道用户身份的。那么在访问网站时,它是什么概念呢?它意味着服务器给浏览器的“小礼物”,具体可以理解为一张“会员卡”,当你第一次访问网站时,在你自己的浏览器中存放了一张”会员卡”,里面登记了一些信息。凭借此“会员卡”,只要在有效期内使用该浏览器再次登录网站,网站的各个页面都能识别该“会员卡”,从而达到识别用户、跟踪用户、实现用户自定义功能。其中域和路径属性标识了这个“会员卡”是哪个网站发送给浏览器的,同时创建时间和过期时间说明了“会员卡”的有效期,有效期过后,“会员卡”就被自动删除。
如果不设置过期时间,则表示这个“会员卡”的有效期就只到浏览器关闭的时候,此时Cookie被浏览器保存在内存中。
如果设置了过期时间,Cookie则被浏览器保存在硬盘中,有效期直到过期时间为止。存储在硬盘的Cookie可以在不同的浏览器进程中共享。
在PHP中对Cookie的操作有以下一些内容:
1)设置Cookie
PHP中使用SetCookie函数来设置Cookie,发放“会员卡”,使用全局数组$_COOKIE来保存需要的数据。
setcookie(“name”,“value”);
setcookie(“name”,“value”,time()+24*3600);
需要注意的是,设置的“会员卡”并不是可以立即使用的,而是需要等到下个页面才可以使用。
2)接收和处理Cookie
echo$_COOKIE[“name”];
3)删除Cookie
setcookie(“name”);
setcookie(“name”,“”);
setcookie(“name”,“value”,time()-100);
2 Session
“Cookie”如果理解为浏览器保存的一张网站“会员卡”,要让网站识别的话,只需要出示卡片,那么Session就可以理解为浏览器上只保存的“会员卡”“卡号”,要让网站识别的话,只需要告诉网站“卡号”,网站根据“卡号”查找“会员卡”,从而实现识别用户的目的,这个“卡号”就是我们所说的Session ID[1]。
这个Session“会员卡”在网站服务器上的保存时间一般是20min,过了期限,“会员卡”会被销毁。程序员也可以在其销毁之前另行存储。
那么浏览器端保存“卡号”会有哪些方式呢?
浏览器一般提供了两种保存方式:
1)使用Cookie来保存,这是最常见的方式。服务器通过设置Cookie将“卡号”保留到浏览器上,下次访问相同的网站时,可以用“卡号”去标识身份。但是有很多浏览器会禁用Cookie,所以要保存“卡号”,可以使用第二种方法。
2)使用URL附加信息的方法,比如访问某网站时会有xxx。php SESSIONID=xxx,这个和第一种方式里面不设置Cookie的过期时间是一样的。
3)还有一种就是通过在表单中增加隐藏域,这个方式其实和第二种是一样的道理,只不过URL是通过GET方式发送数据,而这种是采用POST方式发送数据,显然GET方式简单的多。
在PHP中对Session的操作有以下一些内容:
1)设置Session
但凡需要使用Session,都必须使用函数session_start(),然后可以使用全局数组$_SESSION来保存需要的数据。
session_start();
$_SESSION[“name”]=“value”;
2)接收和处理Session
session_start();
echo$_SESSION[“name”];
3)删除Session
session_start();
session_unset();
session_destroy();
3 区别与联系
1)Cookie数据是保存在客户端“—”浏览器上的,Session数据是保存在服务器端。
2)Cookie通过把所有要保存的数据通过HTTP协议的头部从客户端传递到服务端,又从服务端再传回到客户端,所有的数据都存储在客户端的浏览器里,所以这些Cookie数据可以被访问到。不仅可以查看Cookie,甚至可以通过类似于Firecookie这样的插件添加、修改Cookie,所以Cookie的安全性受到了很大的挑战,只要别人盗走你的”会员卡”,那么你会承受很大损失[2]。
3)Session由于在客户端保存的是”卡号”,如果采用Cookie方式保存,而Cookie又容易受到攻击,所以一旦客户端禁用了Cookie,那么Session就会没用。所以我们常用的是URL的方式来传递”卡号”,因此不是完全依赖Cookie。
4)每个Cookie保存的数据大小不能超过4 K,大部分浏览器都限制一个站点保存的cookie数最多20个。
5)Session由于保存在服务器上,会比较占用服务器的性能,如果考虑到减轻服务器负担的话,可以使用Cookie。
6)一般在使用时,建议将登录等重要信息存放在Session中,其他信息放在Cookie中。
7)防止header()引发的Cookie与Session错误。
[1]柳丽娜.浅淡Session机制与Cookie机制[J].电脑编程技巧与维护,2008(16):28-29.
[2]齐红心.PHP开发过程中页面参数传递方法分析[J].软件导刊, 2016(1):23-24.
(编辑:王璐)
Discussion of Cookie and Session in PHP
W an Lihua
(Jiangxi Vocational and Technical College of Information Application,Nanchang Jiangxi330043)
This paper introduces and analyzes two ways of browser reservation,including Cookie and Session,and discusses the application of them in combination with PHP.
Cookie;Session;PHP;application
TP393
A
2095-0748(2016)23-0083-02
10.16525/j.cnki.14-1362/n.2016.23.39
2016-11-29
万丽华(1981—),女,江西南昌人,硕士,高职讲师,研究方向:网站开发,计算机网络。