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

PHP中session 与cookie的原理和关系1_PHP教程

有过购物经验的朋友都知道,在购买商品时网站会记录你挑选的商品到购物车,这些就是用session 和cookie技术实现,当然不同的web平台技术实现细节略有不同,但几乎都会用到session 和cookie。
为什么要用到session和cookie呢,这就有必要说一下http协议了,http协议是无状态的,通俗一点说就是这一秒不知道上一秒发生了什么事情,
如果需要跟踪某个用户在站点的状态,显然这是行不通的,下面说说cookie技术
cookie:可以用来在多个页面共享一些信息,cookie是被http协议支持的,浏览器在向服务器请求一个页面时,服务器返回http报文+数据,浏览器会解析从服务器接收的http报文,从而做相应的操作。
服务器报文:
http/1.1 200 ok
date: thu, 06 dec 2012 17:05:01 gmt
server: apache/2.2.17 (win32) php/5.3.5
x-powered-by: php/5.3.5
set-cookie: mycookie=hello%2ccookie; expires=thu, 06-dec-2012 18:05:01 gmt; path=/
content-length: 44
keep-alive: timeout=5, max=100
connection: keep-alive
content-type: text/html
这是我们只关注set-cookie: mycookie=hello%2ccookie; expires=thu, 06-dec-2012 18:05:01 gmt; path=/
这是告诉浏览器要保存的cookie信息,通俗一点说就是:“浏览器请把这段cookie信息保存下来”
格式为 键-值对的形式如一个cookie键为:publicinfo  值为:hello,cookie  形式为:publicinfo=hello,cookie
浏览器请求报文:
get /cookie/cookie1.php http/1.1
accept: */*
accept-language: zh-cn
user-agent: mozilla/4.0 (compatible; msie 8.0; windows nt 6.1; trident/4.0; slcc2; .net clr 2.0.50727; .net clr 3.5.30729; .net clr 3.0.30729; media center pc 6.0; .net4.0c; .net4.0e; tablet pc 2.0; infopath.2)
accept-encoding: gzip, deflate
host: localhost
connection: keep-alive
cookie: c4vn_2132_saltkey=mw4qwm12; c4vn_2132_lastvisit=1354808405; c4vn_2132_sid=dl9pu9; c4vn_2132_lastact=1354812024%09search.php%09forum; c4vn_2132_forum_lastvisit=d_36_1354812013; c4vn_2132_visitedfid=36; phpsessid=ggcr13idghctd9mi4gqllvcvs5; zhangqiang1=hello%2ccookie
 这里浏览器将客户端的cookie信息发送到服务器,这样在请求-响应之间就能够保持一些状态信息了。
在php中cookie的使用
在php中使用cookie有两种方法,
1.使用系统函数setcookie设置
2.使用header函数构架cookie报文
有了前面的知识就知道这两个函数其实所做的事情结果都一样,最终要将cookie信息写到http报文中去
方法1:
setcookie(cookie键的名称,值,过期时间,访问目录)
方法2:(这里直接将要设置的cookie写到http报文中去了)
header(set-cookie: mycookie=123; expires=tue, 04-dec-2012 15:58:18 gmt);
echo 查看cookie;
在服务器端访问cookie:
访问cookie很简单用超全局数组$_cookie就用可以了,[]中填写cookie的键。
使用cookie的原理就知道一些购物网站或者登录功能如何实现了,但cookie也是有不足的地方
    安全性:cookie是存放在客户端的,也就是可以篡改的,不能够将一些重要的数据存放在cookie里,如用户名和密码等
网络传输:cookie必须包含在http请求和响应报文中,所以不能存放太多的数据。
http://www.bkjia.com/phpjc/477887.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/477887.htmltecharticle有过购物经验的朋友都知道,在购买商品时网站会记录你挑选的商品到购物车,这些就是用session 和cookie技术实现,当然不同的web平台技术...
其它类似信息

推荐信息