session与cookie的详解

1. 为什么需要Cookie

HTTP是一种无状态的协议,客户端与服务器建立连接并传输数据,数据传输完成后,连接就会关闭。再次交互数据需要建立新的连接,因此,服务器无法从连接上跟踪会话,也无法知道用户上一次做了什么。这严重阻碍了基于Web应用程序的交互,也影响用户的交互体验。如:在网络有时候需要用户登录才进一步操作,用户输入用户名密码登录后,浏览了几个页面,由于HTTP的无状态性,服务器并不知道用户有没有登录。

Cookie是解决HTTP无状态性的有效手段,服务器可以设置或读取Cookie中所包含的信息。当用户登录后,服务器会发送包含登录凭据的Cookie到用户浏览器客户端,而浏览器对该Cookie进行某种形式的存储(内存或硬盘)。用户再次访问该网站时,浏览器会发送该CookieCookie未到期时)到服务器,服务器对该凭据进行验证,合法时使用户不必输入用户名和密码就可以直接登录。

本质上讲,Cookie是一段文本信息。客户端请求服务器时,如果服务器需要记录用户状态,就在响应用户请求时发送一段Cookie信息。客户端浏览器保存该Cookie信息,当用户再次访问该网站时,浏览器会把Cookie做为请求信息的一部分提交给服务器。服务器检查Cookie内容,以此来判断用户状态,服务器还会对Cookie信息进行维护,必要时会对Cookie内容进行修改。

2. Cookie的类型

Cookie总时由用户客户端进行保存的(一般是浏览器),按其存储位置可分 为:内存式Cookie和硬盘式Cookie

内存式Cookie存储在内存中,浏览器关闭后就会消失,由于其存储时间较短, 因此也被称为非持久Cookie或会话Cookie

硬盘式Cookie保存在硬盘中,其不会随浏览器的关闭而消失,除非用户手工 清理或到了过期时间。由于硬盘式Cookie存储时间是长期的,因此也被称为 持久Cookie

3. Cookie的实现原理

Cookie定义了一些HTTP请求头和HTTP响应头,通过这些HTTP头信息使服 务器可以与客户进行状态交互。

客户端请求服务器后,如果服务器需要记录用户状态,服务器会在响应信息 中包含一个Set-Cookie的响应头,客户端会根据这个响应头存储Cookie信息。

再次请求服务器时,客户端会在请求信息中包含一个Cookie请求头,而服务 器会根据这个请求头进行用户身份、状态等较验。

Session详解

1Session的由来以及介绍

Session:在计算机中,尤其是在网络应用中,称为会话控制”,生存时间为用 户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就 是用户浏览这个网站所花费的时间。

由于Http是一种无状态的的协议,只负责请求服务器,当它在服务器相应之 后,就与浏览器失去了联系。不能保存用户的个人信息

2Session的机制

session机制采用的是在服务器端保持状态的方案,并且有自己对应的唯一标 session_id,区分不同用户之前的信息

就比如:我们去一家餐厅吃饭,我们有一张会员卡,上面有我的个人信息, 以及有效时间,当我每次来的时候餐厅都能找到我的个人信息

3session的工作原理

1>当一个session第一次被启用时,一个唯一的标识session_id被存储于本地 cookie中。

2>首先使用session_start()函数,PHPsession仓库中加载已经存储的session 变量。

3>当执行PHP脚本时,通过使用session_register()函数注册session变量。

4>PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一 定路径下的session库中,这个路径可以通过php.ini文件中的 session.save_path指定,下次浏览网页时可以加载使用。

4Session项目实战中都有哪些应用

1>记录用户登陆信息,全局使用

2>制作验证码,验证对比操作

3>session保存到数据库可以实现:a.控制一个帐号只能一个人登录

5Session的优缺点

1>session的优点:唯一性、方便调用、不会过多占用资源,是存储在服 务器的一组临时数据。一般情况下,我们在做用户登录时,会将用 户数据存入session。这样,在任何页面都可以方便调用,而且 每个 客户端会产生唯一的session_id,不会混肴。并且在关闭浏览器后, 服务器会有session回收机制,自动删除过期session

2>session缺点:在客户端是以cookie方式保存的,禁用cookie就没用了。

 

cookie session 的区别

安全性:

1cookie数据存放在客户的浏览器上,session数据放在服务器上。

2cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
    session相对安全些

占用空间:

3session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
   考虑到减轻服务器性能方面,应当使用COOKIE

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20cookie

数据类型

5cookie只能存储 int float stringSession还可以存储 数组、对象

5、所以个人建议:
   将登陆信息等重要信息存放为SESSION
   其他信息如果需要保留,可以放在COOKIE

/*session cookie 区别:

1.session安全 cookie不安全

    1 session是存储在服务器端 cookie存储在客户端

    session存储的机制:

        为每个访问者生成一个唯一的session id 这个sessionid 存储在cookie

        $_COOKIE['PHPSESSID']='sc9hd5d5s2moei96njap8409v0'

 

        当用户再次请求服务器的时候 通过cookiesessionID 传到服务器端 (http请求头)

        服务器根据sessionID进行查找session文件 sess_sc9hd5d5s2moei96njap8409v0

        我们设置的session变量就存储在了这个session文件中

        怎么查看session文件的存储位置?

            php.ini  session.save_path=文件路径

    如果cookie禁用session还能用吗?

        能用!!!

        只需要把客户端里的cookie里的sessionID通过其他方式传到服务器端就可以使用了

11.1.1 理解会话控制的概念

  会话指的是客户端和浏览器之间的交互过程,控制可以理解为客户端在和浏览器时间进行交互的时候进行的控制。

  http协议是一个超文本无状态协议,没有一种内建机制来维护客户端和浏览器之间的对话,所以使用会话控制来解决这一问题。

11.2.1 熟练掌握cookie的使用

             Cookie的概念:cookie是一种存储在客户端浏览器里用来跟踪和识别用户上 网信息的机制。简单的来说,cookie就是web服务器暂时存储在用户硬盘上的一 个文本文件,并随后被web浏览器读取。当用户再次访问该web网站的时候,网 站通过读取cookie文件记录这位访客的特定信息(如上次访问的位置、花费的时 间、用户名和密码等)从而做出迅速响应。

    Cookie 的功能:记录访客的某些信息(例如用户名、三天免登陆),在多页面 之间传递变量,将所有查看的Internet页存储在cookie 的临时文件夹里,可以提高 浏览的速度。

   Cookie的使用步骤:

1)设置cookiesetcookie(cookie的名字’,cookie的值’,过期时间)

2)读取cookie$_COOKIE[cookie的名字’]

3)删除cookie

setcookie(“要删除的cookie的名字”,””,time()-1)

浏览器手动删除

Cookie的分类:分为会话cookie和持久cookie,会话cookie就是没有给cookie设置过期时间,当关闭浏览器或者关闭电脑cookie就会自动消失;持久cookie就是给cookie设置了过期时间,只要过期时间没到,关闭浏览器和关闭电脑cookie都不会消失,只有过期时间到了才会消失。

11.3.1 深入理解session原理

  Session的定义:session是一种存储服务器端用来跟踪和识别用户信息的会话机制。当启动一个session会话时,会生成一个随机且唯一的session_id,也就是session文件名,此时,session_id存储在本地的cookie里。当关闭页面时此id会自动注销,重新登录此页面,会再次生成一个随机的id

11.3.2 熟练掌握session的使用

   使用步骤:

        1)开启sessionsession_start(); 此函数前面不能有任何输出

     2)给session赋值:$_SESSION[‘名’]=

     3)使用session$变量名=$_SESSION[‘名’]

 4)删除session

   删除单个sessionunset($_SESSION[‘名’])

   删除多个session$_SESSON=array();

   结束当前所有sessionsession_destroy()

11.3.3 深入理解sessioncookie的区别

   区别:session存储在服务器端,cookie存储在客户端,session相对于安全,cookie不安全,sessioncookie都可以设置过期时间,都可以跨页面传值,都可以实现会话功能。Session开启后,有一个sessionid存储在cookie里,如果客户端禁止了cookiesessionidurl地址栏的方式进行传输。

11.4.1 灵活运用sessioncookie实现用户登录的会话控制

  Cookie实现登陆控制:setcookie(“名”,”值”,”过期时间”),设置完成后,在每一个登陆后才能访问的页面加入:if(empty($_COOKIE[‘名’])){ die(“未登录,不能操作!)},如果用户选择了七天免登陆,在登陆界面加入:

if(!empty($_COOKIE[‘名’])){ header(“跳转”)}

  Session实现登陆控制:session_set_cookie_params(1*60);session_start();  $_SESSION[‘名’]=;,设置完成后,在每一个登陆后才能访问的页面加入:if(empty($_SESSION[‘名’])){ die(“未登录,不能操作!”)},如果用户选择了七天免登陆,在登陆界面加入:if(!empty($_SESSION[‘名’])){ header(“跳转”)}

15.2 cookie技术

为什么要使用会话控制?

答:http协议时无状态协议,就是说http协议没有一个内建机制,来维护两个事物之间的状态

什么是cookie

答:cookie是存储在客户端的浏览器中用来跟踪和识别用户的会话控制,可以实现多页面传值。存储地址为:C:\Documents and Settings\Administrator.ZOURINET\Cookies

cookie的分类有那些?

答:持久cookie:被设置失效时间的cookie称为持久cookie。不论浏览器是否关闭,cookie里面的值一直会等到失效时间到了,才会消失

会话cookie:没有被设置失效时间的cookie称为会话cookie。当浏览器关闭后或者重启电脑后cookie就会消失

cookie的使用步骤是什么?

① 设置cookie

setcookie(string  $name,[string  $value][ int $expire ])

注意:setcookie前面不能有输出

setcookie("",“值”,“失效时间”)《注意:失效时间一定是秒数》

② 使用cookie

$_COOKIE[""]来读取cookie,$_COOKIE当成一个普通的数组就可以

③ 删除cookie

手动删除:

通过浏览器进行删除

代码删除:

setcookie("",“”,time()-1);

session的运行机制:

为每个访问者创建一个唯一的sessionid sessionid存储在客户端的的cookie里面

当用户在此请求的时候 通过http请求头(cooike)将session id传到服务器 服务器根据sessionid

找到与之相对应的session 文件并取出其中的变量

猜你喜欢

转载自blog.csdn.net/weixin_41993674/article/details/80941051