Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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中搜索mysql数据库中的编码数据?_Mysql_Codeigniter_Search_Encryption - Fatal编程技术网

如何在codeigniter中搜索mysql数据库中的编码数据?

如何在codeigniter中搜索mysql数据库中的编码数据?,mysql,codeigniter,search,encryption,Mysql,Codeigniter,Search,Encryption,我使用codeigniter的加密方法对一些数据进行了编码,并将它们存储在mysql数据库中。检索它们没有问题,但当我想在它们之间搜索时,这似乎是胡说八道。如何在mysql和codeigniter中的编码数据之间进行搜索 这是我的编码功能: function _encode($options = array()){ $key = 'Q7tBBb1iECkl5Kk1U3mVPur1J863KGz4'; $encoded = $this->encrypt->encod

我使用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();        
}

请改用
$this->encrypt->sha1()
,因为您需要通过“静态”加密字符串搜索内容。所有其他cypher方法都会在每次请求时为您提供随机字符串,因此无法按该字符串进行搜索。

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

$search_term = $this->_encode($this->session->userdata('search_term'));
将其更改为:

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

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

您能澄清一下吗?您正在尝试搜索MySQL数据库中加密的数据吗?是的!我在我的问题上说了同样的话!所以在你的表中,数据是加密的,对吗?如果要执行此操作,则需要先加密搜索参数,然后使用该加密搜索参数执行SQL语句。加密搜索参数似乎与数据库中的搜索参数不同,而它是使用相同的加密密钥编码的。这是因为cypher方法不创建“静态”内容,而是基于一系列变量随机生成。这使得无法通过“加密”进行搜索。你可以试着找到一个你可以接受的密码。SHA1,就像MD5是不可解码的一样。