php教程 php手册 cookie与session区别和关系

cookie与session区别和关系

Jun 13, 2016 am 09:55 AM
cookie session 그리고 ~에 대한 관계 공유하다 차이점 그리고 상세한 설명하다

分享一篇关于cookie和session区别详细说明的文章,有需要的朋友可以参考一下,很有价值的一篇文章。cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。 PHP用SetCookie函数来设置Cookie。 SetCookie函数定义了一个Cookie,并且把它附加在HTTP头的后面,SetCookie函数的原型如下:
int SetCookie(string name, string value, int expire, string path, string domain, int secure);
参数说明:cookie名称,cookie值,过期时间(int),有效路径,有限域名,https传递才有效

 代码如下 复制代码
注意:当前设置的Cookie不是立即生效的,而是要等到下一个页面时才能看到.这是由于在设置的这个页面里Cookie由服务器传递给客户浏览器,在下一个页面浏览器才能把Cookie从客户的机器里取出传回服务器的原因。
使用例子: 普通使用: setcookie('name','PHP淮北'); 带失效时间的: 
setcookie('name','PHP淮北',time()+24*60*60);//1day
Cookie是面向路径的 ,默认存储在当前文件下,如果没有设置路径,不同文件下的cookie默认保存在不同文件夹下,如图:默认保存在mytest文件夹下 phphuaibei/201111/201111151945348209.png"> 2、接收和处理Cookie 用户端与服务端的web通信协议是http。而PHP通过http取得用户数据惯用的三种方法分别是:POST方法、GET方法还有Cookie。而PHP默认传递方法正是Cookie,也是最佳方法。 比如设置一个名为MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为$myCookie,这个变量的值就是Cookie的值 3,删除Cookie   要删除一个已经存在的Cookie,有两个办法:
  1. 一是调用只带有name参数的SetCookie,那么名为这个name的Cookie将被从关系户机上删掉;例如:setcookie('name','');
  2. 另一个办法是设置Cookie的失效时间为time()或time()-1,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了)。 例如:setcookie('name','PHP淮北',time()-24*60*60);
         要注意的是,当一个Cookie被删除时,它的值在当前页在仍然有效的。 
使用Cookie的注意事项:
    1. 首先是必须在HTML文件的内容输出之前设置(Cookie是HTTP协议头的一部分,用于浏览器和服务器之间传递信息,所以必须在任何属于HTML文件本身的内容输出之前调用Cookie函数。
在PHP页面可以先使用 ob_start();//开启 code….. ob_end_flush(); //刷新缓存 可以防止header提示错误);
  1. 不同的浏览器对Cookie的处理机制不一样
  2. cookie限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。
  3. 当前设置的Cookie不是立即生效的,而是要等到下一个页面时才能看到
Session介绍 session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息,每一个网站访客都会被分配给一个唯一的标志符,即会话ID,它的存放形式无非两种:要么经过url传递,要么保存在客户端的Cookies里.当然,你也可以将Session保存到数据库里,这样会更安全,但效率方面会有所下降.url方式传递安全性肯定太差,PHP的会话机制是通过设置Cookie,在Cookie中保存会话id(Session ID),在服务器端会生成session文件,与用户进行关联,Web应用程序存储与这些Session相关的数据,并在各页面间进行传递. PHP相关函数 在PHP中有关Session的函数比较多,不过我们最常用到的也就这么几个函数: session_start():启用session机制,在需要用到session的程序文件的最开始调用它. session_register():注册session变量 session_unregister(): 删除session变量(一个一个删除) session_is_registered(): 判断session变量是否注册 session_distroy(): 销毁所有session变量(所有session变量销毁,包括文件) 需要注意下面几个方面: 1.函数session_start()必须在程序最开始执行,在其前面不能有任何输出内容,否则     就会出现“Warning:Cannot send session cookie - headers already    sent"类似这样的警告信息. 2.函数session_register()用于注册要保存在session中的相关变量,其用法如下:   $val = "session value";   session_register("val"); ?> val即为要注册的session变量名,在注册时一定不要加上"$"符号,只写其变量名称即可. 3.函数session_unregister()与上面函数用法完全相同,但功能相反,上面函数是注册 session变量,而其则是删除指定的session变量. 4.函数session_is_registered()用于判断session变量是否注册. 5.函数session_destroy()主要用于在系统注销和退出时,销毁所有的session变量,它没有参数,直接调用即可。 Session与PHP.ini的关系配置 1,session.save_handler = file 用于读取/回写session数据的方式,默认是files。它会让PHP的session管理函数使用指定的文本文件存储session数据 2,session.save_path = “/xammp/temp/”   指定保存session文件的目录,可以指定到别的目录,但是指定目录必须要有httpd守护进程属主(比如apache或www等)写权限,否则无法回存session数据。它还可以写成这样session.save_path = “N;/path” 其中N是整数。这样使得不是所有的session文件都保存在同一个目录中,而是分散在不同目录。这对于服务器处理大量session文件是很有帮助的。(注:目录需要自己手工创建) 3,session.auto_start = 0   如果启用该选项,用户的每次请求都会初始化session。不推荐使用,最好通过session_start()显示地初始化session。   上图:左侧是保存在xammp/tmp/下的session文件,内容是PHP序列化的格式 右侧:第一行是echo serialize($_SESSION['name']);//序列化 第二行是打印session值 *****************其中文件名是session-name,内容是PHP序列化的格式   cookie与session的区别和关系
  • 存储位置:
    1. session存储在服务器位置上,可以通过php.ini里面配置session相关配置
    2. cookie存储在客户端上的上(其实可以分两种:
1,持久性cookie,设置了cookie的时间,以文件方式存在硬盘上, 2,会话cookie,没有设置cookie时间,cookie的生命周期也就是关闭浏览器前就消失,一般不会保存在硬盘,而是保存在内存上) cookie和session的关系 从上面的图可以看到: cookie通过http报头发送: Cookie  <font face="Arial">name=PHP%BB%B4%B1%B1; PHPSESSID=cpt2ah3pi4cu7lo69nfbfllbo7</font> <font face="Arial" size="2">其中PHPSESSID就是关联服务器session的重要参数</font> <font face="Arial" size="2">再看session文件:sess_cpt2ah3pi4cu7lo69nfbfllbo7</font> <font face="Arial" size="2">session_id的生成格式就是:sess_加上一串PHPSESSID的值</font> <font face="Arial" size="2">我们可以这样理解:</font> 当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识 (称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来 使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相 关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应 中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给 服务器。一般这个cookie的名字都是类似于SEEESIONID php.ini里面关于session和cookie有关的配置 1,session.use_cookie = 1
是否采用Cookie方法传递session id值。默认是1,表示启用。
2,session.name = PHPSESSID
不管是Cookie传递sessioin_id,还是GET方法传递session_id,都需要使用键值。他们的格式分别是Cookie:  sess_name=session_id;和/path.php?sess_name=session_id,其中sess_name就是由这里指定的。
3,session.use_only_cookies = 0
表示只使用Cookie 的方法传递session id。我们说过,传递cookie的方法,除了cookie,还有GET方法,GET方法是不安全的方法。在用户端禁用了cookie的时候,会采用GET方法传递session_id,可以通过这个设置尽用GET方法传递session_id。
4,session.cookie_lifetime = 0, session.cookie_path = / 以及session.cookie_domain =
如果使用Cookie方法传递session_id的话,这里分别指定了cookie有效域、目录和时间。分别对应setcookie()函数的形参$expire、$path和$domain。其中cookie_lifetime=0表示直到关闭浏览器才删除Cookie。还可以使用session_set_cookie_params()函数修改这些值。
5,session_name([string $name])
获取或更新session_name。如果传了name,则表示不使用默认的名称PHPSESSID(由session.name)指定,否则获取当前session_name。注意:如果设置session_name,则必须在session_start()之前调用才生效。
6,session_id([string $id])
与session_name()类似,但它是读取或者设置session_id的方法。同样,设置session_id的话,必须在session_start()之前调用才有效。
7,session_set_cookie_params()和session_get_cookie_params()
通过session_set_cookie_params()可以重新设定session.cookie_lifetime, session.cookie_path以及session.cookie_domain这三个php.ini设置。而session_get_cookie_params()则是获取这些设定的值。
  总结:
  1. 服务端session的相对于客户端的cookie安全性要较高一点
  2. session在服务器集群的时候容易不同步,而cookie不会
ps:下午关于使用cookie退出出现的问题 当退出的时候使用: setcookie('username','',time()-3600);
    setcookie('name','',time()-3600);
理论上cookie应该正常清除,测试的时候发现第一登录退出完全正常,但是再次登录就是退出不了,cookie始终存在,很是郁闷,使用firebug查看原来页面设置了缓存,使用nginx设置了页面缓存,原因也就是找到了
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Bittensor가 AI 트랙에서 'Bitcoin'이라고 말하는 이유는 무엇입니까? Bittensor가 AI 트랙에서 'Bitcoin'이라고 말하는 이유는 무엇입니까? Mar 04, 2025 pm 04:06 PM

원본 : Bittensor = Aibitcoin : S4mmyeth, 분산 AI 연구 원본 번역 :이 기사에서는 Bittensor, 분산 된 AI 플랫폼에 대해 논의하고, 중앙 집중식 AI 회사의 독점을 홍보하고 개방형 및 사형에 Ecosystem을 홍보하기를 희망합니다. Bittensor는 다양한 AI 솔루션의 출현을 허용하는 서브넷 모델을 채택하고 TAO 토큰을 통해 혁신을 고무시킵니다. AI 시장은 성숙하지만 Bittensor는 경쟁 위험에 직면하며 다른 오픈 소스의 적용을받을 수 있습니다.

한국 비트 코인과 국내 비트 코인의 차이가 있습니까? 한국 비트 코인과 국내 비트 코인의 차이가 있습니까? Mar 05, 2025 pm 06:51 PM

Bitcoin Investment Boom은 세계 최초의 분산 디지털 자산으로 인해 계속 가열되어 분산 및 글로벌 유동성에 많은 관심을 끌었습니다. 중국은 한때 비트 코인의 가장 큰 시장 이었지만 정책 영향으로 인해 거래 제한이 발생했습니다. 오늘날 한국은 세계의 주요 비트 코인 시장 중 하나가되어 투자자들이 IT와 국내 비트 코인의 차이점에 의문을 제기했습니다. 이 기사는 양국의 비트 코인 시장의 차이점에 대한 심층 분석을 수행 할 것입니다. 한국과 중국 비트 코인 시장의 차이점은 한국과 중국의 비트 코인 시장의 주요 차이점은 가격, 시장 공급 및 환율, 규제 감독, 시장 유동성 및 거래 플랫폼에 반영됩니다. 예를 들어, 2024 년 10 월 말에 한국의 비트 코인 가격은 한 번이었습니다.

Nexo는 어떤 교환입니까? Nexo는 어떤 교환입니까? Mar 05, 2025 pm 07:39 PM

NEXO : Cryptocurrency Exchange 일뿐 만 아니라 Digital Financial Manager는 기존의 Cryptocurrency 교환이 아니라 Cryptocurrency 대출에 더 중점을 둔 재무 플랫폼입니다. 이를 통해 사용자는 Cryptocurrency에서 담보로 대출을 받고이자를 얻기위한 서비스를 제공 할 수 있습니다. Nexo는 암호 화폐 구매, 판매 및 상환 기능도 제공하지만 핵심 비즈니스는 암호화 대출입니다. 이 기사는 Nexo의 운영 모델과 보안을 탐구하여 투자자에게보다 포괄적 인 이해를 제공합니다. Nexo의 운영 모델은 2018 년에 설립되었으며 스위스 Zug에 본사를두고 있으며 디지털 금융 분야의 선구자입니다. 다른 중앙 대응 교환과 다르며 포괄적 인 금융 서비스 제공에 더 중점을 둡니다. 사용자는 자산을 판매하지 않고 암호 화폐를 구매, 판매, 거래 할 수 있으며

에테르와 비트 코인의 차이 에테르와 비트 코인의 차이점은 무엇입니까 에테르와 비트 코인의 차이 에테르와 비트 코인의 차이점은 무엇입니까 Mar 19, 2025 pm 04:54 PM

이더 리움과 비트 코인의 차이는 중요합니다. 기술적으로 Bitcoin은 POW를 사용하고 Ether는 POW에서 POS로 전환했습니다. 비트 코인의 경우 거래 속도가 느리고 이더 리움은 빠릅니다. 응용 프로그램 시나리오에서 Bitcoin은 지불 스토리지에 중점을두고 Ether는 스마트 계약 및 DAPP를 지원합니다. 발행 측면에서 비트 코인의 총 금액은 2,100 만 명이며 에테르 코인의 고정 된 총량은 없습니다. 각 보안 문제가 가능합니다. 시장 가치 측면에서 비트 코인은 먼저 순위를 매기고 두 가지 가격 변동이 크지 만 특성이 다르기 때문에 이더 리움의 가격 추세는 독특합니다.

비트 코인 투기는 주식 추측입니까? 왜? 둘의 차이점은 무엇입니까? 비트 코인 투기는 주식 추측입니까? 왜? 둘의 차이점은 무엇입니까? Mar 05, 2025 pm 02:24 PM

비트 코인 : 디지털 금 또는 주식 거래 파생 상품? 신흥 투자 방법으로서 Bitcoin의 특성에 대한 심층적 인 분석은 가격이 크게 변동되었으며 주식 시장 거래 규칙과 유사합니다. 이 기사는 정의, 자연, 발행 메커니즘 등의 측면에서 심층적 인 논의를하고 Bitcoin Investment의 신비를 공개합니다. 비트 코인 및 주식 : 비트 코인과 주식의 필수 차이는 비트 코인에 대한 투자는 주식에 대한 투자와 다릅니다. 비트 코인은 디지털 자산 또는 가상 자산 범주에 속하는 분산 디지털 통화입니다. 이 개념은 2009 년 나카모토 사토시가 제안했습니다. 기존 통화와 달리

콩 빵과 딥스 크의 차이점은 무엇입니까? 콩 빵과 딥스 크의 차이점은 무엇입니까? Mar 12, 2025 pm 01:24 PM

Bean Bun과 Deepseek의 핵심 차이는 검색 정확도와 복잡성입니다. 1. Doubao는 키워드 일치, 단순하고 직접적인 비용이 저렴하지만 정확도는 낮으며 구조화 된 데이터에만 적합합니다. DeepSeek은 딥 러닝을 기반으로하며 의미가 높지만 높은 비용을 가지고 있으며 구조화되지 않은 데이터에 적합합니다. 최종 선택은 애플리케이션 시나리오 및 자원 제한에 따라 달라집니다. 정확도 요구 사항이 높지 않은 경우 콩 주머니를 선택하고 높은 정밀도를 선택하면 DeepSeek을 선택하십시오.

암호화 투자 정신은 매우 중요합니다! 불필요한 걱정을 피하고 올바른 결정을 내리는 방법은 무엇입니까? 암호화 투자 정신은 매우 중요합니다! 불필요한 걱정을 피하고 올바른 결정을 내리는 방법은 무엇입니까? Mar 05, 2025 pm 07:24 PM

암호화 투자의 두려움, 불확실성 및 의심 : 정보에 입각 한 결정을 내리는 방법? 많은 암호화 투자자들은“이것은 마지막주기입니다”에 대한 두려움과 황소 시장의 기간에 대한 우려와 다른 사람들의 압력과 함께 투자 결정이 좋지 않습니다. 이 기사는 이러한 도전을 극복하고 더 똑똑한 투자 선택을하는 방법을 탐구합니다. 잠재적 위험 : 산만 : 맹목적으로 핫스팟을 쫓아 핵심 자산의 가치를 무시합니다. 비관론과 망설임 : 불확실성은 자신감이 부족하고 오랫동안 유지할 수 없으며 시장에서 나가도 심지어 나옵니다. 신념 부족 : 프로젝트에 대한 심도있는 연구 부족이며 시장 변동성에 대처할 수 없습니다. 이익 만들기 전략 부족 : 풀백에 대한 두려움, 잠재적 수익 누락으로 인해 일찍 직책을 정리합니다. 대처 전략 : 1. 핵심 영역에 중점을 둡니다.

Ouyi Okex 개방 및 마감 시간에 대한 자세한 소개 Ouyi Okex 개방 및 마감 시간에 대한 자세한 소개 Mar 18, 2025 pm 01:06 PM

Ouyi Okex Digital Asset Trading 플랫폼은 전통적인 증권 시장과 다르며 하루에 24 시간 동안 운영되며 사용자는 언제든지 화폐 거래, 통화 거래 및 계약 거래를 수행 할 수 있습니다. 그러나 플랫폼은 시스템 유지 보수 업그레이드 또는 특별 시장 이벤트 (예 : 거래 중단 또는 계약 거래 위치 개방 규칙을 수정하는 등의 시장 변동을 일으키는 극한 시장 상황과 같은 경우 거래 시간 또는 규칙을 미리 발표하고 일시적으로 조정합니다. 따라서 사용자는 플랫폼 발표 및 시장 동향에 세심한주의를 기울이고 거래 기회를 포착하며 위험 관리에 적합한 일을하는 것이 좋습니다. Ouyi Okex 거래 시간 및 규칙 조정을 이해 함으로써만 디지털 통화 시장에서 편안하게 할 수 있습니다.

See all articles