简单聊聊SESSION

 1.简介

    1.官方是这么定义的,在计算机中,尤其是在网络应用中,称为会话控制。

    2.session是存储在服务端的临时存储技术。

2.机制

    服务端与用户建立一个会话的时候,会生成一个session_id作为唯一标识,并生成一个对应文件名的session文件保存信息,session_id保存在用户的cookie里面。

    当客户端向服务器发起请求,调用session的时候,会生成一个唯一标识:session_id,session_id会通过http的首部字段setcookie,保存在客户端的cookie里面,在下一次请求中会根据cookie中保存的session_id找到对应的session,获取上一次状态信息。在这里面,session_id贯穿始末。

              粗略画个流程图(session以file文件保存的情况下):

Session原理


    由图知,如果客户端禁用了cookie,会导致session无法使用,原因:session_id不能保存在cookie里面,客户端的每次请求服务端,服务端收到请求后,没找到session_id,就会重新创建session.解决方法是通过其他方式将sessionID传给客户端:

    1. 重写URL:

         ①:修改php.ini

                   session.use_trans_sid=1

                   session.use_only_cookies=0

                   session.use_cookies=1

 3.Sssion的一些应用

      1.session_id可以自己设置:

       在php中可以在session_start()前使用 session_id()来配置session_id,如果在php.ini文件中配置了session.save_handler=file,那么session会以文件的形式保存在硬盘中,一个会话对应一个session文件,seesion_id作为文件的名称,保存的位置可以在php.ini上的session.save_path上看到

      2. session可以改变存储位置

       Session也可以存储在redis、memcache,数据库等等中,php中改变配置文件的session.save_handler和session.save_path的值,如redis:       session.save_handler = redis和session.save_path=tcp://127.0.0.1:6379

    

4.Php.ini中相关session的含义

    1.session.save_handler = files   #session的存储方式

    2.session.use_cookies= 1       #使用cookies在客户端保存会话

    3.session.use_only_cookies = 1  #去保护URL中传送session id的用户

    4.session.name = PHPSESSID    #session名称(默认PHPSESSID)

    5.session.auto_start = 0 #不启用请求自动初始化session

    6.session.cookie_lifetime = 0 #cookie存活时间(0为直至浏览器重启,单位秒)

    7.session.cookie_path = / #cookie的有效路径

    8.session.cookie_domain = #cookie的有效域名

    9.session.cookie_httponly = #httponly标记增加到cookie上(脚本语言无法抓取)

    10.session.serialize_handler = php #PHP标准序列化

    11.session.gc_probability =1

    12.session.gc_divisor =1000 #建议设置1000-5000

    13.概率=session.gc_probability/session.gc_divisor(1/1000)

    14.session.gc_maxlifetime =1440 #过期时间(默认24分钟,单位秒)

    15.session.bug_compat_42 = off #全局初始化session变量

    16.session.bug_compat_warn = off

    17.session.referer_check = #防止带有ID的外部URL

    18.session.entopy_length = 0 #读取的字节

    19.session.cache_limiter = {nocache,private,pblic} #HTTP缓冲类型

    20.session.cache_expire = 180 #文档过期时间(分钟)

    21.session.use_trans_sid = 1 #trans_sid支持(默认0)

    22.session.hash_function = 0 #hash方法{0:md5(128 bits),1:SHA-1(160 bits)}

    23.session.hash_bits_per_character = 5 #当转换二进制hash数据奥可读形式是,每个字符保留位数

    24.ession.save_path = "/var/lib/php/session" #session id存放路径

你可能感兴趣的:(简单聊聊SESSION)