декодировать MySQL запрос, прежде чем вернуть его для просмотра - PullRequest
1 голос
/ 07 июня 2010

Я выполняю запрос к MySQL, который возвращает зашифрованные данные.Я хотел бы, если это возможно, декодировать результаты перед отправкой в ​​представление.Похоже, что лучше обрабатывать декодирование в контроллере (или даже в модели), а не внутри представления.

Кажется, я не могу понять, как это сделать.

Я думал, что смогу перебрать объект, расшифровать его и передать в другой массив, который будет отправлен в представление.Проблема в том, что я не буду знать (и должен сохранять) индексы запроса.

Таким образом, запрос может вернуть что-то вроде:

[id] => 742 
[client_id] => 000105 
[last] => dNXcw6mQPaGQ4rXfgIGJMq1pZ1dYAim0 
[first] => dDF7VoO37qdtYoYKfp1ena5mjBXXU0K3dDlcq1ssSvCgpOx75y0A== 
[middle] =>iXy6OWa48kCamViDZFv++K6okIkalC0am3OMPcBwK8sA==
[phone] => eRY3zBhAw2H8tKE

Любые идеи?


Завершено:

function name(){
    $data['e_key']=$this->e_key;
    $clid = $this->uri->segment(3);
    $name = $this->Clients_model->getNameData('*','client_id='.$clid,'');
    $nameArray= array();
    foreach ($name->result() as $row){
        $x = $row;
        $keys = array('id','client_id');
        $unenc = array();
        foreach ($x as $key=>$value){
            if(! in_array($key, $keys)){
                $unenc[$key]=$this->encrypt->decode($value,$this->e_key);
            }else{
                $unenc[$key]=$value;
            }
        }
        array_push($nameArray,$unenc);
     }
    $data['name'] = $nameArray;
    $this->load->view('names/name_view',$data);

}

Ответы [ 2 ]

1 голос
/ 07 июня 2010

Если вы знаете, как дешифровать данные, это всего лишь вопрос перебора объекта, расшифровки зашифрованных полей.

Если $YOUR_OBJECT является вашим объектом и ваша функция для расшифровки равна decode(), то следующий код должен помочь.

// The keys corresponding to the encrypted fields
$encoded = array('last', 'first', 'middle', 'phone');

$decoded = array();
foreach($YOUR_OBJECT as $key => $value)
{
    if (in_array($key, $encoded))
    {
        $decoded[$key] = decode($value);
    }
}
1 голос
/ 07 июня 2010

если это определенный индекс, вы можете декодировать его как

$result['last'] = base64_decode($result['last']);

или в модели использовать мутаторы и методы доступа:

 public function setUp() {
       $this->setTableName('tablename');
        $this->actAs('Timestampable');
        $this->hasMutator('last', '_encode64');
        $this->hasAccessor('last', '_decode64');
   }

 protected function _encode($value) {
     $this->_set('last',base64_encode($value));
 }
protected function _decode($value) { 
     return base64_decode($value); // not sure on this one - might have to
    //  return  $this->set('last', base64_decode($value));
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...