Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter-PHP-在存储之前和返回时对会话用户数据进行编码和解码_Php_Codeigniter_Session_Decode_Encode - Fatal编程技术网

Codeigniter-PHP-在存储之前和返回时对会话用户数据进行编码和解码

Codeigniter-PHP-在存储之前和返回时对会话用户数据进行编码和解码,php,codeigniter,session,decode,encode,Php,Codeigniter,Session,Decode,Encode,我想在Codeigniter中扩展Session.php库 我想使用base64编码/解码会话值 所以基本上我想在之前对所有会话数据进行全局编码 它被设置(session->set_userdata()),然后在被设置时对其进行解码 返回(会话->用户数据('item')) 可能吗 我有麻烦了,我该如何在设置会话数据的时刻和返回数据的时刻触发 我正在使用Codeigniter会话数据库并计划编写我的_session.php库,但无法继续,我在这里被阻止: class MY_Session ext

我想在Codeigniter中扩展Session.php库

我想使用
base64编码/解码会话值

所以基本上我想在之前对所有会话数据进行全局编码 它被设置(session->set_userdata()),然后在被设置时对其进行解码 返回(会话->用户数据('item'))

可能吗

我有麻烦了,我该如何在设置会话数据的时刻和返回数据的时刻触发

我正在使用Codeigniter会话数据库并计划编写我的_session.php库,但无法继续,我在这里被阻止:

class MY_Session extends CI_Session{

}

感谢您的帮助,您需要覆盖会话库的
session->set_userdata()
session->userdata()
实现


您的新函数将可公开调用,而不是会话类中的函数,通过调用
父类::
您可以访问Codeigniter库中的函数。

您只需重写写入/读取数据的适当方法即可将编码包含在内。我想知道为什么您需要编码,因为这会给进程增加一些开销。@MikeBrant因为我需要支持内部的多字节字符串,而默认的lib会崩溃:(你也能帮我处理flashdata吗?这样我就可以接受你的答案了,我必须理解其中的逻辑,并试着自己去做。要有创意!@bradbadbedbread我编辑了答案,以包含一个更全面的
set_userdata()实现。)
这样它就可以接受数组和参数的键值对。Flashdata支持实际上与userdata实现完全相同,只需使用相同的逻辑重写Flashdata函数并更改函数名即可。@BadWolf但是…$array没有设置!?无法理解为什么要使用for()而不是foreach()?@bradbadbedbread那是我的错,我的错。我只是编辑了它来修正它。
class MY_Session extends CI_Session{
    public function set_userdata($data, $singleVar = NULL) {
        if(is_array($data)) {
            foreach($data as $key => &$value) {
                //Encode $value
            }
            parent::set_userdata($array);
        }
        else {
            //Encode $singleVar 
            parent::set_userdata($data, $singleVar);
        }
    }

    public function userdata($item) {
        $data = parent::userdata($item);
        //Decode $data
        return $data;
    }
}