• PHP会话技术


    为什么要使用会话技术

    我们在浏览网站的时候,访问每一个Web页面都是使用HTTP协议来实现的。由于HTTP协议是一个无状态的协议。这就会导致当一个用户请求一个页面以后,再请求该网站的其他页面,HTTP协议并不能告诉服务器这是同一个用户。

    因为HTTP协议是无状态的,所以我们无法跟踪用户。所以一定程度上会影响我们的开发,例如:登录模块,如果不能跟踪用户,将会导致访问该网站的每一个都要求我们重新登录。还有就是购物车也是需要使用到用户跟踪

    用户跟踪的方式

    所谓用户跟踪,其实就是向另外一个网页传递数据。

    PHP里面提供了3种方式来实现网页之间传递数据

    ①  可以通过超链接或者header()函数在URL后面附加参数的形式来传递数据。

    ② 使用cookie将用户的状态信息存储在客户端的计算机里面。

    ③ 使用session将用户的状态信息存储在服务器端的计算机里面。

    如果用户的状态信息全部都是通过附加在URL后面来进行传递,那么,开发工作量是非常大。所以我们一般选用Cookie或者Session技术。

    Cookie的应用

    ①  Cookie的概述

    在现实生活中,如果在商场里面购买东西,一般会有一张会员卡。这张会员卡就记录用户的相关信息(姓名,联系电话,积分信息)。下一次你再去商场的时候,只要拿出会员卡,商场这一边就知道你是之前来过的用户,通过这张积分卡,就可以读出你所有的信息。

    Cookie就类似于这张会员卡,当用户第一次访问网站的时候,服务器在返回HTTP响应的时候顺带将Cookie(小饼干)发送到客户端保存起来(相当于商场将会员卡发给了你)。下一次当用户再次访问该网站的其他页面的时候,在HTTP的请求里面就会自动的将客户端的Cookie信息给带过去。通过这种方式,服务器端就可以识别是否是同一个用户。

    ②  向客户端的计算中设置Cookie

    PHP里面,提供了一个叫做setCookie的函数,可以用客户端发送cookie信息

    Bool SetCookie(Cookie的名称,Cookie的值,Cookie的生存时间,Cookie有效的目录,Cookie有效的域名,是否通过安全协议HTTPS来传输Cookie)

     

    Cookie的生存时间是以当前的时间戳来计算的

     

    如果Cookie设置成功,则返回true

     

    创建cookie示例:

     

    当我们访问test.php的时候,http响应里面就会设置这个cookie信息

     

     

    示例2

     

     

    注意点:浏览器之间的cookie不是共用的。

     

     

    ③  PHP里面读取Cookie信息

    PHP里面提供了一个$_COOKIE[ ]这是一个超全局数组。该超全局数据用来存放从客户端发送过来的cookie信息。

    通过test.Php设置了cookie信息

     

    访问hello.php页面的时候,我们会发现http请求里面自动就添加了这个cookie信息

     

    效果:

     

     

     

    如果没有写过期时间,cookie的有效期是多久?

    如果没有书写cookie的过期时间,那么默认cookie将会在浏览器关闭时过期。

     

     

    ④  以数组的形式设置cookie

    这个一般用于一组信息的时候,发送的形式如下:

     

    如何获取数组形式的cookie

     

    ⑤ 删除cookie

    如何手动的删除cookie,方法很简单,还是调用setCookie函数,只需要value为空,然后时间小于当前的系统时间即可

     

    效果:

     

     

    还有一种方法删除cookie,只设置第一个参数,其他参数全部省略

    这一种方式cookie并没有被删除,只是被置空了。

     

     

    课堂练习:

    用户第一次登陆网页,显示【你是首次访问网站】

    之后访问网页,将会显示【你上次登陆的时间】有效期为7

     

     

    Session的应用

    Session翻译成中文是会话的意思。虽然cookie可以解决前面我们所说的问题。但是cookie有一个严重的问题,那就是存储于客户端,所以安全性不高。而且用户有权利阻止cookie使用如果用户一旦关闭cookie,那么Web服务器无法再使用cookie来跟踪用户。所以,session技术出现了。Session就是将用户的状态信息保存在服务器端。

    如果说cookie是一张会员卡,这张会员卡由用户自己保存。如果用户的会员卡丢失,用户就不能再证明自己的身份。但是session就是将这张会员卡由商场方来保存,无需用户保存,用户只需要提供卡号就可以了。

    ① 设置session

    Session是一种服务器端技术。默认session的有效期从开始访问网站开始,到断开和网页的链接。

    使用session的时候,会生成一个sessionID,用来识别保存在服务器端的sessionID

    ② 配置信息

    PHP里面配置session可以通过PHP配置文件来进行相关的配置

    Session.Auto_start:是否自动启动session,如果设置为1,则为自动启动,这个选项一般不改他它。

    Session.cookie_lifetime:代表cookie的有效时间,单位为秒,如果值为0,代表浏览器一关闭就失效

    Session.save_pathsession在客户端所存储的位置

    Session.namesession的名字,默认值为PHPSESSID

    ③  Session的使用

    如果要使用session,那么首先第一步需要开启session,开启方法很简单,在PHP里面提供了一个session_start()

    该函数有两个作用,第一个是开启会话环境,第二个是检查客户端有没有发送过来sessionID,如果没有,自动生成一个sessionID,然后通过cookie的方式发送给客户端。

    接下来第二次访问页面的时候,就会将之前保存在客户端的sessionID发送给服务器

    通过session_id()函数可以取出sessionID信息

    ④ session里面添加数据

    方法非常简单,直接像使用数组一样使用即可

    Session存在的路径位于wamp下面的tmp文件夹,我们可以打开来确认

    ⑤ 注销变量和销毁session

    PHP里面有3种删除session的方式

    (1) 删除单个的数据

    Unset($_SESSION[‘key’])

    示例:

    效果:

    (2) 删除所有数据

    当然是可以使用unset()来一个一个删除,但是这样太麻烦了,如果有100个数据,工作量相当之大。所以,如果要删除所有数据,可以直接将一个空数组赋值给$_SESSION

    效果:

    (3) 结束当前会话

    PHP里面为我们提供了一个函数,叫做session_destroy(),一旦调用该函数,就会删除当前会话中的所有数据,并且注销会话,也就是说,会将sessionID也一并删除掉

    ⑥ 传递sessionID

    (1) 使用cookie进行sessionID的传递。但是这种方法并不是总是可用。因为用户可以将cookie禁止掉(这种情况很少)。所以还有一种方式:通过URL附加信息的方式

    (2) 通过URL附加信息的方式

    ⑦ Cookiesession的区别

    (1) cookie是存放于客户端,session是存放于服务器端

    (2) 由于session是存放于服务器端,所以安全性比cookie要高

    (3) Cookie相比session更能分散服务器的压力,因为数据都分散到了各个客户端。但是这不足以让我们完全使用cookie,因为安全性更重要。

    综上所述:将很重要的用户信息存放至session,不怎么重要的信息可以存放到cookie里面。

  • 相关阅读:
    论文连接
    MySQL中的datetime与timestamp比较
    查看挂载情况
    insertable = false, updatable = false的使用
    umount: /home: device is busy
    LVM
    erase-credentials配置
    <T> List<T>前面<T>的意思
    Java 内部类 this
    AuthenticationManager, ProviderManager 和 AuthenticationProvider
  • 原文地址:https://www.cnblogs.com/q1345837355/p/7403695.html
Copyright © 2020-2023  润新知