zoukankan      html  css  js  c++  java
  • 关于PHP会话:session和cookie

    会话处理解决什么问题

    HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本、图形、视频和全部其它的数据的规则。HTTP是一种无状态协议,每次请求的处理,都与之前和之后的请求无关。

    会话处理是这样的无状态问题的解决的方法。它的实现方式是为每一位站点訪问者分配一个称为会话ID(SID)的唯一标志属性,然后将此SID与随意数量的数据关联。

    会话处理流程

    1. 浏览器向server发送请求
    2. server为訪客建立会话ID(SID)。通常SID存储在server端一个文件里。
    3. 存储在client($_COOKIE[‘PHPSESSID’]或者url參数)
    4. 浏览器再次向server发送请求
    5. server通过读取cookie(或者url的參数)来验证SID是否依旧同一次会话
    6. 离开站点,会话结束

    问题

    SID是怎样被写到cookie中去?

    PHP 会话启动以后,会给每一个訪客分配一个SID,这个SID同一时候会写到client的cookie中去,默认cookie变量名为:PHPSESSID

    这里说同一时候是不确切的由于下页代码仅仅会在刷新页面以后,才干取到cookie:

    session_start();
    echo('SID:'.session_id().'<hr/>');
    echo('Cookie_sid:'.$_COOKIE['PHPSESSID'].'<hr/>');

    cookie被禁用了,session会不会同一时候失效?

    在没有做不论什么准备的情况下。client禁用cookie确实会让session失效。

    书上(PHP与MySQL程序设计 第三版)说。client存储SID的方式有两种,一种是cookie,一种是重写URL来传递。

    能够在php.ini文件里更改session.use_trans_sid的值,来实现url的自己主动重写。但笔者没有做測试。

    会话在server端的存储方式

    默认情况下,session 以文件方式存储在server上。在php.ini文件里可做相关设置:

    session.save_handler=files
     session.save_path = "N;MODE;/path"

    save_handler值有四个:

    1. files 平面文件
    2. mm 共享内存
    3. sqlite SQLite数据库
    4. user 用户自己定义函数

    通过user方式,能够用自己定义函数与会话配合。看上去功能非常强大。

    但没时间去实操。有空再研究。

  • 相关阅读:
    tomcat7
    SSO
    搜索服务Solr集群搭建 使用ZooKeeper作为代理层
    JavaScript
    JavaScript中给onclick绑定事件后return false遇到的问题
    ES6.0简单了解
    php之gennerator
    RBAC权限管理及使用原生PHP实现
    使用YII框架的migrate迁移数据库
    shell脚本--文件包含
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5222984.html
Copyright © 2011-2022 走看看