zoukankan      html  css  js  c++  java
  • PHP使用session_set_save_handler陷阱

    陷阱如下

    当脚本使用了session_set_save_handler 来重定向 session后,使用session_destroy后再使用session_start()重新开启session会报错

    代码如下,

    <?php
    function open() {
        echo 'session start';
        echo "
    ";
    }
    
    function close() {
        echo 'session close';
        echo "
    ";
    }
    
    function read($sessionId) {
        echo 'read'.$sessionId;
        echo "
    ";
    }
    
    function write($sessionId, $data) {
        echo 'write'.$sessionId.$data;
        echo "
    ";
    }
    
    function destroy($sessionId) {
        echo 'destroy '.$sessionId;
        echo "
    ";
    }
    function gc($lifetime) {
        echo 'gcccc';
        echo "
    ";
    }
    session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
    session_start();
    echo session_id();
    echo "
    ";
    session_destroy();
    
    
    session_start();
    $id = 'h06vgdfdfve6b8f66sva6basf8';
    session_id($id);
    echo session_id();

    运行后报错

    1 Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: user (path: /var/lib/php/session) in /home/user/site/session.php on line 39

    屏蔽session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');

    正常流程下(使用原生session)错误不会再出现。

    so..

    如果网站要使用自定义session建议自己封装和直接使用相关函数, 绕开session_set_save_handler

  • 相关阅读:
    bzoj 3196/tyvj p1730 二逼平衡树
    AW201 可见的点 (欧拉函数)
    P3912 素数个数
    P1029 最大公约数和最小公倍数问题
    P1835 素数密度
    P2563 [AHOI2001]质数和分解
    P1075 质因数分解
    AW199 余数之和
    AW198 反素数
    AW197 阶乘分解
  • 原文地址:https://www.cnblogs.com/sailrancho/p/3384051.html
Copyright © 2011-2022 走看看