Я выполняю запрос к mysql, который возвращает зашифрованные данные. Я хотел бы, если это возможно, декодировать результаты прежде, чем отправить его в представление. На лучшую форму походит обрабатывать декодирование в контроллере (или даже модель), а не в представлении.
Я, может казаться, не переношу голову, как сделать это, все же.
Я думал, что мог выполнить итерации через объект, decodode это, и продвинуть его к другому массиву, который будет отправлен в представление. Проблема с этим, я не буду знать (и должен сохранить), индексы запроса.
Таким образом, запрос мог бы возвратить что-то как:
[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);
}
Если вы знаете, как расшифровать данные, это всего лишь вопрос итерации по объекту, дешифрования зашифрованных полей.
Если $ 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);
}
}
если это конкретный индекс, вы можете расшифровать его как
$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));
}