0

我使用codeigniter的加密方法对一些数据进行了编码,并将它们存储在mysql数据库中。检索它们没有问题,但是当我想在它们之间进行搜索时,它似乎是胡说八道。如何在 mysql 和 codeigniter 中的编码数据之间进行搜索?

这是我的编码功能:

function _encode($options = array()){

    $key = 'Q7tBBb1iECkl5Kk1U3mVPur1J863KGz4';

    $encoded = $this->encrypt->encode($options['code'], $key);

    return $encoded;
}

这是我在模型中用作搜索方法的方法:

function search()
{
    //Pagination config
    $search_by = $this->session->userdata('search_by');
    $search_term = $this->_encode($this->session->userdata('search_term'));

    $config['base_url'] = base_url() . 'acp/cds/search_result/page/';
    $config['total_rows'] = $this->db->like($search_by, $search_term)->get('cards')->num_rows();
    $config['per_page'] = 15;
    $config['num_links'] = 4;
    $config['uri_segment'] = 5;
    $this->pagination->initialize($config);

    $page_num = $this->uri->segment(5, 1);
    $offset = ($page_num - 1) * $config['per_page'];
    $this->db->order_by('card_Id', 'ASC');        
    $this->db->like($search_by, $search_term);
    $query = $this->db->get('cards', $config['per_page'], $offset);

    return $query->result();        
}
4

2 回答 2

0

您的加密函数将数组作为参数,其中要在数组的代码密钥中加密的内容。但是,当您调用加密函数时,search()您传递的是一个普通参数。您的函数的第三行search()当前如下所示:

$search_term = $this->_encode($this->session->userdata('search_term'));

将其更改为:

$search_term = $this->_encode(array('code' => $this->session->userdata('search_term')));

也就是说,我不确定您希望通过以这种方式加密数据获得什么,特别是如果您在该示例中发布的密钥是您正在使用的真实密钥。

于 2012-07-07T23:36:38.710 回答
0

改用$this->encrypt->sha1(),因为您要通过“静态”加密字符串搜索什么。所有其他密码方法都会在每个请求上为您提供随机字符串,从而无法通过该字符串进行搜索。

于 2012-07-05T20:41:10.240 回答