php 会话(session)

php会话相关:


    1:什么是session?
        session即会话控制。用户在进入网站到关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述定义中可以知道,session是一个特定的时间概念。
    2:为什么要使用session?
        --1:htpp协议是一个无状态的协议:即一个客户端的本次请求和上次请求没有对应关系,http服务器并不知道这两个请求来自同一个客户端。
            httpt协议是短连接,客户端发送请求后服务器相应,链接就结束了。        
            其优点在于减轻服务器的压力,缺点在于每次请求都会传输大量的内容信息。
        --2:session提供了在php脚本中定义全局变量的方法,使得这个全局变量在同一个session中对于所有的php脚本文件内都有效。
            所以session是基于http服务器的用于保持状态的方法。
        --3:session 允许通过将数据存储在http服务器中,以在整个用户会话过程中保持该数据,所以session不仅是一个时间概念,还包括
            了特定的用户和服务器。
    3:session的工作原理:
        第1次访问---》http请求,初始化session,创建sessionId,将session数据存储到预定义变量$_session中。
            页面执行完毕将session信息存储到session文件---》session文件
            http相应(带有sessionId)--》显示页面sessionId存储到cookie
        第2次访问---》http请求(带有sessionId)
            session初始化,根据sessionId读取文件。
            执行php代码
            http响应---》显示页面
            页面执行完毕将session信息存储到session文件
        退出---》
            注释session,删除相应的session文件。
        
        会话标识符(sesssionId):
            会话是由一个唯一的标识符标识,可使用session_id函数读取此标识符。为php应用程序启用会话状态时将检查应用程序中每个页面请求是否有浏览器发送的sessionId值。
            如果未提供任何sessionID值,则php将启动一个新会话,并将该会话的sessionId值随响应一起发送到浏览器。
            只要一直使用相同的sessionID值来发送请求,会话就被视为活动的。如果特定会话的请求间隔超过指定的超时值(以s为单位),
            则会话会被视为已过期。如果使用过期的sessionId值发送的请求将生成一个新的会话。
            默认24分钟,
    4:session相关函数:
        --session_start([aray $options=[]])
            启动新会话或者重用现有会话。
            说明:
                1:$options参数是一个关联数组,如果提供的话,则会用其中的项目覆盖会话配置中的配置选项。
                2:如果通过get/POST方式或者使用cookie提交了会话id则会重用现有的会话。
        --session_id([string $id])
            获取/设置当前的会话id
            说明:
                1:如果指定$id参数的值,则会使用指定值作为会话id
                2:必须在调用session_start()函数之前电泳session_id()函数
        --session_name([string $name])
            读取/设置会话名称
            说明:
                1:如果指定$name参数,session_name()函数会更新会话名称,并返回原来的会话名称。
                2:必须在调用session_start()函数之前电泳session_name()
        --session_destroy()
            销毁一个session会话中的全部数据
        
    5:session相关配置:
        --session.auto_start(boolean)
            指定会话模块是否在请求开始时自动启动,默认为0,不启动
        --session.name(string)
            指定会话名以用作cookie的名字,只能有字母数字组成,默认为PHPSESSION
        --session.save_handler(string)
            定义用来存储和获取与会话关联的数据的处理器的名字,默认为files。实际上我们还可以存储在缓存数据库中。
        --session.save_path(string)
            定义传递给存储处理器的参数,如果选择默认的files文件处理器,则值则是文件的路径。
        --session.gc_maxlifetime(integer)
            指定过了多少秒之后数据就会被视为垃圾并清除。
        --session.gc_probability(integer),session.gc_dvisor(integer)
            定义在每个会话初始化时启动gc(垃圾回收)进程的概率,此概率由gc_probability/gc_divisor计算。
        
    6:关于cookie:
        http cookie(也叫作web cookie或者浏览器cookie)是服务器发送到用户浏览器并保存在浏览器上的数据,它会在浏览器下一次发起请求时被携带并发送到服务器上。
        http cookie是http标头的组成部分。
        cookie有什么用?
            1:会话状态管理(如用户登录状态,购物车)
            2:个性化设置(比如用户自定义设置)
            3:浏览器行为跟踪(如跟踪分析用户行为)
            
            
            

猜你喜欢

转载自blog.csdn.net/qq_41558265/article/details/94742482