本文说明了PHP中cookie和会话的原理和用法。分享给大家参考,如下:
生成背景
HTTP协议是无状态的。一旦数据交换完成,客户端和服务器之间的连接将被关闭,需要建立新的连接来再次交换数据。这意味着服务器无法从连接中跟踪会话。因此,需要引入一种机制,COOKIE也就应运而生。
会话是记录客户状态的另一种机制。区别在于Cookie保存在客户端浏览器中,而会话保存在服务器上。当客户端浏览器访问服务器时,服务器以某种形式将客户端信息记录在服务器上。那就是会话。
理解例子
大学的时候,经常去达卡西喝奶茶。每次喝一杯就能得到一张邮票(第一次喝的时候他会给你一张积分卡)。收集了六张邮票后,我可以免费得到一杯奶茶。这样,打印信息就保存在客户的记分卡上。没有良苦用心,可以做一些类似的印刷来骗奶茶。哈哈,这样是不是更符合客户端的维护状态(cookie)?拿银行卡到银行取钱时,我们的卡只需要保存一个卡号,更多的信息保存在服务器(会话)中,更符合服务器端的持有状态。
具体来说,cookie机制采用客户端保持状态的方案,而会话机制采用服务器端保持状态的方案。同时我们也看到,由于服务器端保持状态的方案也需要在客户端保存一个标识符,因此会话机制可能需要使用cookie机制来达到保存标识符的目的。
简述饼干
PHP如何工作:PHP通过setCookie函数设置Cookies。任何从浏览器发回的Cookie都会被PHP自动存储在$_COOKIE的全局变量中,所以我们可以读取一个$_COOKIE['key']形式的COOKIE值。
用法:PHP中的cookies应用广泛,常用于存储用户登录信息、购物车等。使用会话时,cookies通常用于存储会话id以识别用户。cookie有一个有效期,当有效期结束时,cookie将自动从客户端删除。同时,为了安全控制,Cookie还可以设置域和路径。
功能Cookie
在PHP中设置Cookie最常见的方法是使用setcookie函数。setcookie有七个可选参数,前五个是常用的:
Name(Cookie name)可以通过$_COOKIE['name']值(Cookie值)expire(过期时间)Unix时间戳格式访问,默认为0,这意味着浏览器在关闭时会过期。路径(有效路径)如果路径设置为“/”,整个网站将有效。域(有效域)默认域名有效。if ' www.imooc.com setcookie(' TestCookie ',$ value);setcookie('TestCookie ',$value,time()3600);//Setcookie的有效期为一小时(' testcookie ',$ value,time () 3600,'/path/',' imoc.com ');PHP中还有一个设置路径和域的函数setrawcookie。setrawcookie与setcookie基本相同。唯一不同的是,该值不会被自动urlncode,因此必要时应该手动进行urlncode。
setrawcookie('cookie_name ',rawurlencode($value),time()(606024 * 365);因为Cookie是通过HTTP头设置的,所以也可以使用header方法直接设置。
标头(' Set-cookie : CooKie _ name=value ');删除cookie
在PHP中设置Cookie最常见的方法是使用setcookie函数。setcookie有七个可选参数,前五个是常用的:
Name(Cookie name)可以通过$_COOKIE['name']值(Cookie值)expire(过期时间)Unix时间戳格式访问,默认为0,这意味着浏览器在关闭时会过期。路径(有效路径)如果路径设置为“/”,整个网站将有效。域(有效域)默认域名有效。if ' www.imooc.com setcookie(' TestCookie ',$ value);setcookie('TestCookie ',$value,time()3600);//Setcookie的有效期为一小时(' testcookie ',$ value,time () 3600,'/path/',' imoc.com ');PHP中还有一个设置路径和域的函数setrawcookie。setrawcookie与setcookie基本相同。唯一不同的是,该值不会被自动urlncode,因此必要时应该手动进行urlncode。
setrawcookie('cookie_name ',rawurlencode($value),time()(606024 * 365);因为Cookie是通过HTTP头设置的,所以也可以使用header方法直接设置。
标头(' Set-cookie : CooKie _ name=value ');简要描述会议
在PHP中使用会话非常简单。首先,执行session_start方法打开会话,然后通过全局变量$_SESSION读写会话。
session _ start();$ _ SESSION[' test ']=time();var _ dump($ _ SESSION);删除会话
在PHP中使用会话非常简单。首先,执行session_start方法打开会话,然后通过全局变量$_SESSION读写会话。
session _ start();$ _ SESSION[' test ']=time();var _ dump($ _ SESSION);会话将自动对要设置的值进行编码和解码,因此会话可以支持任何数据类型,包括数据和对象。
session _ start();$_SESSION['ary']=数组(' name '=' jobs ');$ _ SESSION[' obj ']=new stdCLaSS();var _ dump($ _ SESSION);默认情况下,会话以文件的形式存储在服务器上,因此当页面打开会话时,它将独占会话文件,这将导致当前用户等待其他并发访问。我们可以用缓存或者数据库的形式来解决这个问题,我们会在一些高级课程中讲到。
会话存储用户信息
会话可以用来存储各种类型的数据,因此它有许多用途。它通常用于存储用户登录信息、购物车数据或一些临时数据。用户成功登录后,通常可以在会话中存储用户的信息。一般来说,一些重要的字段会单独存储,然后所有的用户信息都会独立存储。
$ _ SESSION[' uid ']=$ user info[' uid '];$ _ SESSION[' user info ']=$ user info;一般来说,登录信息可以存储在sessioin或cookies中。它们之间的区别在于,session可以轻松访问各种数据类型,而cookies只支持字符串类型。同时,对于一些安全性较高的数据,需要对cookies进行格式化和加密,而会话存储在服务器上则更加安全。
?PHP session _ start();//假设用户成功登录并获得以下用户数据:$ userinfo=array ('uid'=10000,' name'=' spark ',' email'=' [email protected]',' sex'=' man ',' age '=' 18 ');header(' content-type : text/html;charset=utf-8 ');/*在会话中保存用户信息*/$ _会话[' uid ']=$ user info[' uid '];$ _ SESSION[' name ']=$ user info[' name '];$ _ SESSION[' user info ']=$ user info;//*将用户数据保存到cookie的简单方法*/$ secureKey=' imooc ';//加密密钥$ str=serialize($ user info);//序列化用户信息//加密用户信息前,$ str=base64 _ encode(mcrypt _ encrypt(mcrypt _ Rijndael _ 256,MD5 ($ securekey),$ str,mcrypt _ mode _ ECB));//用户信息加密后,//将加密后的用户数据存储在cookie setcookie('userinfo ',$str)中;//需要时解密$ str=mcrypt _ decrypt(mcrypt _ Rijndael _ 256,MD5 ($ securekey),base64 _ decode ($ str),mcrypt _ mode _ ECB);$ uin fo=unserialize($ str);Echo“解密的用户信息:br”;print _ r($ uin fo);异同
1.cookies将数据存储在客户端,建立用户和服务器之间的连接,session将用户的会话数据存储在服务器中。2.cookie相对不安全,容易被盗,导致cookie欺骗。3.单个cookie的最大值只能存储在4k。会话没有大小限制。4.每个请求都必须通过网络传输。带宽占用5。用户识别由session_id执行。默认情况下,会话id由PHP中的cookie保存,所以在某种程度上,seesion依赖于cookie。然而,这并不是绝对的。会话id也可以通过参数来实现。任何可以将会话id传递给服务器进行识别的机制都可以使用session。
JQuery Cookie插件
介绍
script src=' http :https://cdn . static file . org/jquery/3 . 4 . 0/jquery . min . js '/script script src=' http 3360https://cdn . static file . org/jquery-cookie/1 . 4 . 1/jquery . cookie。
$.cookie('name ',' value ',{ expires: 7,path : '/' });$.removeCookie('名称');//=true更多对PHP感兴趣的读者,请查看本网站专题:《PHP中cookie用法总结》、《php缓存技术总结》、《PHP数组(Array)操作技巧大全》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、0103010。
希望本文对PHP编程有所帮助。