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()現在、関数の 3 行目は次のようになっています。

$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 に答える