session与cookie的关系浅析(转)

session与cookie最主要的区别就是,session是以对象的形式保存在服务器端,而cookie则是以字符串的形式保存在客户端。HTTP协议是一种无连接的协议,当客户端发出一个请求时,它们之间就会建立一个 连接,等服务器响应了这个请求,这个连接就会被断开,这时候服务器再也不记得先前与客户端的那次亲密接触,一些用户信息当然也就消失了。cookie就是为了处理这类的情况的,它可以把用户的信息储存起来。比如用户登录到某个网站,服务器把用户登录的信息保存到客户端的cookie中,这样用户感觉这个网站已经记着了自己。但是cookie有它的缺点不宜存储过长的数据;而且cookie是以文件的形式保存在客户端的磁盘上,所以一些重要数据很容易被修改,比如用户购买一些东西之后,修改自己的余额,然后提交给服务器,这种行为是一定不能允许的。而session就能保证数据的安全,因为它是保存在服务器上的,服务器通过一个唯一的sessionID来区别不同的用户。这个sessionID就保存在客户端的cookie中(默认)或者重定向到URL里。现在就来看看为什么要把sessionID保存到cookie中,当我们打开一个新的窗口时,系统会分配一个新的sessionID,这样服务器就会认为是不同的用户发出的请求,比如有这样一个程序:<?php session_start(); if(!$_SESSION['val']){ $_SESSION['val']=1; } else{ $val=$_SESSION['val']; $val++; $_SESSION['val']=$val; } echo $_SESSION['val'];?>

每次刷新页面,都会的到不同的累加值。但是如果我在浏览器的配置里禁用了cookie,再刷新页面,发现这个值没有变化,永远是1。系统给每次刷新的页面分配了新的sessionID。每次打开新的页面时,系统就会看cookie中的是否有sessionID,如果有就不会分配新的sessionID。当然还有别的办法记住sessionID,那就是重写在url里。
虽然session是保存在服务器端的,但它也是依靠cookie来实现其功能的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值