关于CI框架 Session 的问题的 不可思议

    xiaoxiao2022-06-30  49

    关于CI框架 Session 的问题的 不可思议

     

    老实说 在网上验证了很久,查了很久,以及同相关朋友互相沟通,都很费解 其作者究竟是如何思考的...

     

    为什么 在session支持上竟走上了这么一个曲线...

     

    不理解... 没办法,只能改写吧.... 让其回到正轨...

     

     

    留言如此,备忘后记.... 

     

     

    CI 并不是乐土,框架选型 ... 慎重....

     

     

    贴出自己的 session类吧... 无奈的选择啊...

    <?php /** * 因为 CI框架库自身对Session支持的问题,使得 服务器端Session存储竟然 * 依赖 客户端浏览器 ,无语... 个人对CI开发者无语... * * 不知道其具体是怎么想的.. * * @author 色色 vb2005xu.iteye.com * */ class My_Session { private static $key_userdata = '#userdata+-'; private static $key_flashmem = '#flashmem+-'; function __construct(){ if (!headers_sent()){ session_start();} } function __destruct(){ // 析构函数,删除 flashmem if (isset($_SESSION[self::$key_flashmem])){ unset($_SESSION[self::$key_flashmem]); } } function userdata($item){ $D = isset($_SESSION[self::$key_userdata]) ? $_SESSION[self::$key_userdata] : FALSE; return $D && is_array($D) && isset($D[$item]) ? $D[$item] : FALSE; } private function init_userdata(){ if (isset($_SESSION[self::$key_userdata]) && is_array($_SESSION[self::$key_userdata])) return true; $_SESSION[self::$key_userdata] = array(); } function set_userdata($newdata = array(), $newval = ''){ $this->init_userdata(); if (is_string($newdata)) { $newdata = array($newdata => $newval); } if (count($newdata) > 0) { foreach ($newdata as $key => $val) { $_SESSION[self::$key_userdata][$key] = $val; } } } function unset_userdata($newdata = array()) { $this->init_userdata(); if (is_string($newdata)) { $newdata = array($newdata => ''); } if (count($newdata) > 0) { foreach ($newdata as $key => $val) { unset($_SESSION[self::$key_userdata][$key]); } } } function all_userdata() { return isset($_SESSION[self::$key_userdata]) ? $_SESSION[self::$key_userdata]:FALSE; } function sess_destroy(){ // THROW NEW EXCEPTION('D'); session_destroy(); } private function init_flashdata(){ if (isset($_SESSION[self::$key_flashmem]) && is_array($_SESSION[self::$key_flashmem])) return true; $_SESSION[self::$key_flashmem] = array(); } function set_flashdata($newdata = array(), $newval = '') { $this->init_flashdata(); if (is_string($newdata)) { $newdata = array($newdata => $newval); } if (count($newdata) > 0) { foreach ($newdata as $key => $val) { $_SESSION[self::$key_flashmem][$key] = $val; } } } function flashdata($item) { $D = isset($_SESSION[self::$key_flashmem]) ? $_SESSION[self::$key_flashmem] : FALSE; return $D && is_array($D) && isset($D[$item]) ? $D[$item] : FALSE; } }
    转载请注明原文地址: https://ju.6miu.com/read-1126042.html

    最新回复(0)