设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

浅析关于cookie和session

发布时间:2022-04-05 10:38 所属栏目:121 来源:互联网
导读:浅析关于cookie和session 1. PHP的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。 PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似。 1.1 设置c
  浅析关于cookie和session

  1. PHP的COOKIE

  cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。
  PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似。
  1.1 设置cookie:
  可以用 setcookie() 或 setrawcookie() 函数来设置 cookie。也可以通过向客户端直接发送http头来设置.
  1.1.1 使用setcookie()函数设置cookie:
  bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool httponly]]]]]] )
  name: cookie变量名
  value: cookie变量的值
  expire: 有效期结束的时间,
  path: 有效目录,
  domain: 有效域名,顶级域唯一
  secure: 如果值为1,则cookie只能在https连接上有效,如果为默认值0,则http和https都可以.
 
  设置多个cookie变量: setcookie('var[a]','value');用数组来表示变量,但他的下标不用引号.这样就可以用_COOKIE[‘var’][‘a’]来读取该COOKIE变量.
 
  1.1.2. 使用header()设置cookie;
  header("Set-Cookie: name=value[;path=path[;domain=xxx.com[;...]]");
  后面的参数和上面列出setcookie函数的参数一样.

  1.2 Cookie的读取:
 
  直接用php内置超级全局变量 _COOKIE就可以读取浏览器端的cookie.
  上面例子中设置了cookie"TestCookie",现在我们来读取:
 
  print _COOKIE['TestCookie'];
 
  COOKIE是不是被输出了?!
 
  1.3 删除cookie
  只需把有效时间设为小于当前时间, 和把值设置为空.例如:
  setcookie("name","",time()-1);
  用header()类似.
 
  1.4 常见问题解决:
 
  1) 用setcookie()时有错误提示,可能是因为调用setcookie()前面有输出或空格.也可能你的文档使从其他字符集转换过来,文档后面可能带有BOM签名(就是在文件内容添加一些隐藏的BOM字符).解决的办法就是使你的文档不出现这种情况.还有通过使用ob_start()函数有也能处理一点.
  2) _COOKIE受magic_quotes_gpc影响,可能自动转义
  3) 使用的时候,有必要测试用户是否支持cookie
  <!--[if !supportLineBreakNewLine]-->
 
  1.5 cookie工作机理:
 
  有些学习者比较冲动,没心思把原理研究,所以我把它放后面.
  a) 服务器通过随着响应发送一个http的Set-Cookie头,在客户机中设置一个cookie(多个cookie要多个头).
  b) 客户端自动向服务器端发送一个http的cookie头,服务器接收读取.
 
  这一行实现了cookie功能,收到这行后
  Set-Cookie: TestCookie=something from somewhere; path=/
  浏览器将在客户端的磁盘上创建一个cookie文件,并在里面写入:
 
  这一行就是我们用setcookie('TestCookie','something from somewhere','/');的结果.也就是用header('Set-Cookie: TestCookie=something from somewhere; path=/');的结果.
 
  2. PHP的Session
 
  session使用过期时间设为0的cookie,并且将一个称为session ID的唯一标识符(一长串字符串),在服务器端同步生成一些session文件(可以自己定义session的保存类型),与用户机关联起来.web应用程序存贮与这些session相关的数据,并且让数据随着用户在页面之间传递.
 
  访问网站的来客会被分配一个唯一的标识符,即所谓的会话 ID。它要么存放在客户端的 cookie,要么经由 URL 传递。
 
  会话支持允许用户注册任意数目的变量并保留给各个请求使用。当来客访问网站时,PHP 会自动(如果 session.auto_start 被设为 1)或在用户请求时(由 session_start() 明确调用或 session_register() 暗中调用)检查请求中是否发送了特定的会话 ID。如果是,则之前保存的环境就被重建。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读