zoukankan      html  css  js  c++  java
  • php会话(session)实现原理

    先考虑如下问题:

      禁用了cookie,session能否使用?

      如何把session存储数据库/memcached/redis

      如何实现一个严格的30分钟过期的会话?、

      如何实践web服务器集群的会话共享?

      如何实现两个不同域站点的会话共享?

    答: 能!

    cookie和session的关系

    cookie传递session_id,供服务器决定session文件.

    所以只要能向服务器传递session_id,session就能正常使用.

    而cookie只是传递session_id的一种方式而已.

    用url也能传递session_id

    php.ini 配置如下:

    session.use_only_cookies = 0

    session.use_trans_sid = 1

    OK了.

    实现代码:

    class sess {
    	    protected static $mem = null;
    
    	    public static function open() {
    	        if(self::$mem === null) {
    	            self::$mem = new memcache();
    	            self::$mem->connect('localhost' , 11211);
    	        }
    	    }
    
    	    public static function close() {
    	        self::$mem->close();
    	    }
    
    	    public static function read($id) {
    	        return self::$mem->get($id);
    	    }
    
    	    public static function write($id , $data) {
    	        return self::$mem->add($id,$data , false);
    	    }
    
    	    public static function destroy($id) {
    	        return self::$mem->delete($id);
    	    }
    
    	    public static function gc($lifetime) {
    	        // 
    	    }
    	}
    
    	session_set_save_handler('sess::open', 'sess::close', 'sess::read', 'sess::write', 'sess::destroy', 'sess::gc');
  • 相关阅读:
    html5 桌面提醒:Notifycations
    windows 下 apache 的虚拟主机配置
    javascript 跨域
    javascript 类型数组读取二进制数据
    javascript parseInt() 函数的进制转换陷阱
    javascript 中几个与正则表达式相关的应用
    javascript 中的二进制运算
    一段小代码,发布网页时为js 、css 文件加上版本号
    base64 编码及解码
    PHP 的比较运算与逻辑运算
  • 原文地址:https://www.cnblogs.com/lauhp/p/7999496.html
Copyright © 2011-2022 走看看