unserialize():672字节的偏移量10处出错

时间:2019-06-26 16:19:45

标签: php sql-server codeigniter

我正在使用sql server构建一个codeigniter应用。

我使用MySQL启动了该应用程序,并且运行良好,但是当我将表合并到sql服务器时,出现此错误:

  

消息:unserialize():672字节的偏移量10处出错

     

文件名:core / MY_Controller.php

     

行号:3

这是我的controller.php

 public function __construct() 
{
    parent::__construct();

    $group_data = array();
    if(empty($this->session->userdata('logged_in'))) {
        $session_data = array('logged_in' => FALSE);
        $this->session->set_userdata($session_data);
    }
    else {
        $user_id = $this->session->userdata('id');
        $this->load->model('model_groups');
        $group_data = $this->model_groups->getUserGroupByUserId($user_id);

        $this->data['user_permission'] = unserialize($group_data['permission']);

        $this->permission = unserialize($group_data['permission']);
    }
}

1 个答案:

答案 0 :(得分:0)

我只是使用了preg_replace_callback函数,对我来说效果很好:

   $group_data['permission']=preg_replace_callback('!s:(\d+):"(.*?)";!', 
            function($match) {
             return ($match[1] == strlen($match[2])) ? $match[0] : 's:' . strlen($match[2]) . ':"' . $match[2] . '";';},
             $error_serialized_data);