Posts Tagged ‘ cookie

[转载][PHP]PHP 使用无限生命期 Session 的方法

转载自: 中文 PHP 资讯站


在PHP4.0中加入了对Session的支援,方便了我们很多程式,比如购物车等等。

在很多论坛中,Session也用于处理用户的登陆,记录下用户名和密码,使得用户不必每次都输入自己的用户名和密码!但是一般的Session的生命期有限,如果用户关闭了浏览器,就不能保存Session的变量了!那么怎么样可以实现Session的永久生命期呢?

大家知道,Session储存在服务器端,根据用户端提供的SessionID来得到这个用户的文件,然后读取文件,取得变量的值,SessionID可 以使用用户端的Cookie或者Http1.1协定的Query_String(就是访问的URL的"?"后面的部分)来传送给服务器,然后服务器读取 Session的目录……

Read more

Cookie 是什么?

很多网站在你浏览网页之后,会在你的电脑系统中留下一些小小的档案,也就是所谓的 Cookie。当你再去浏览这些网站时,系统便会去读取这些 Cookie 再更新一遍。

Cookie 不是“饼干”,Cookie 是服务器暂存在你电脑上的一笔资料,好让服务器用来辨认你的电脑。就好比是格林童话故事中,沿途撒下面包屑避免在森林中迷路的小孩。

为什么需要 Cookie?

HTTP 的协议本身是“无记忆状态 (Stateless) ”的,无论是用户端还是网页服务器,每一个页面都没有关联,每一次的请求都是单独的请求。服务器借由 Cookie 来让同一个用户的各项操作都可以产生关联。

当你在浏览网站的时候,服务器会先送一小小资料放在你的电脑上,Cookie 会帮你在网站上所打的文字或是一些选择都纪录下来。当下次你再光临同一个网站,网页服务器会先查看有没有上次留下的 Cookie 资料,有的话,就会依据 Cookie 里的内容来判断用户,送出特定的网页内容给你。

Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie 来识别用户,以方便送出为用户量身而做的内容,像是 Web 接口的免费 email 网站,都要用到 Cookie。

Cookie 会不会有危险?其实 Cookie 中记载的资料相有限,Cookie 是安全的。网站不可能经由 Cookie 获得你的 email 地址或是其他私人资料,更没有办法透过 Cookie 来存取底的电脑。

但是如果你实在不喜欢网页服务器乱丢饼干(Cookie)到你家,当然可以让浏览器拒绝网站存放 Cookie 到你的电脑。

IE 浏览器从“工具”选单 → Intertnet 选项 → 安全性,按“自订层级”,到 Cookie 的部分,全都设为关闭,按确定,关闭浏览器,再重新启动浏览器即可。

当你关闭 Cookie 之后,很多网站的个人化服务功能很可能也不能再使用了。

IE 的 Cookie 默认存放位置是在:C:\WINDOWS\Temporary Internet Files

你可以直接删掉这里面的东西或是利用“Internet 选项”里的清除档案按钮来清除。

Cookie 的内容

大家想不想知道哪个网站有设 Cookie?你的 Cookie 资料又为何?其实,用一行简单的 JavaScript 指令就可以一清二楚了。

首先,开启一个网站,例如 http://www.google.com ,一旦网站开启后,在浏览器的位址列中输入以下的一行 JavaScript 指令:

javascript:alert("Cookie:"+document.cookie)

javascript:document.write(document.cookie)

按下 Enter 后,你会见到跳出一个小警告视窗,上面便会标明出你的 Cookie 资料。试试看吧! 当然,如果你的浏览器的 Cookie 功能被关闭,那你当然就见不到囉。

比较新的浏览器 Chrome 与 Firefox 都有内建“开发人员工具”,只要按 F12 开启“开发人员工具”,可以在“Application”或“储存空间”页签看到网站所储存的 Cookie 内容。

什么是 Session?

讲到 Cookie 就会有人提到 Session。

Session 的资料是存放在 Web 服务器端。用解释的不好解释,我们先来举个例子...

有一家咖啡店要举办咖啡买三送一的活动,若以“Cookie”或“Session”的作法来看:

  • Cookie:
    相当于是店家发给你一张“小卡片”,每次你来买一杯咖啡就在卡片上盖个印章,集满三个印章,那咖啡店就会送你一杯免费的咖啡。
    其中,购买咖啡的记录是留在你携带的卡片上,如果卡片遗失你的记录就不存在了。
  • Session:
    相当于是店家请你加入他们的会员,然后发给你一张“会员卡”(Session ID)。每次你拿会员卡来买咖啡都会在公司的电脑里留下记录,买了三杯咖啡就会送你一杯免费的咖啡。
    其中,购买咖啡的记录是储存在店家的电脑里,如果会员卡遗失了可以透过核对会员的资料来重新取得会员卡。未来这张会员卡甚至可能在它的连锁店使用。

可以说,Cookie 只做一件事,就是存取服务器暂存在客户端的资料。而 Session 则是一个涵盖范围比较广、比较完整的保存机制。并且 Session 仍需借由 Cookie、网址或表单...等三种方式来识别用户的 Session ID,才能接续之后服务器要做的事情。

只要“网站是将任何用户的资料储存在服务器,并且用 Cookie、网址或表单来识别单一用户”,这样就已经是在实作 Session 了。由于“识别用户”是很普遍的功能,你所使用的程式框架 (Framework) 有可能在无声无息之中就已经帮你完成整个机制了,你只要把心思用在程式的其它部份即可。

参考网页

return top