Когда я пытаюсь использовать set_cipher
и set_flashdata
вместе в CodeIgniter, flashdata
не установлен и регистрируется ошибка php.
Чтобы воспроизвести это на свежий CI:
Измените следующие строки config.php
(изменения из конфигурации CI по умолчанию):
$config['sess_encrypt_cookie'] = TRUE;
$config['log_threshold'] = 1; // To log the error
// Encryption key should be set, just set anything, for example:
$config['encryption_key'] = 'HjyePR4FPF70vHKaHTl8jZ0hSMgOu5bW';
Контроллер (упрощенно, насколько я мог):
<?php
class Welcome extends CI_Controller {
function __construct(){parent::__construct();}
function index()
{
$this->load->library('session');
$this->load->library('encrypt');
$this->encrypt->set_cipher(MCRYPT_BLOWFISH);
$this->encrypt->encode('message');
$this->session->set_flashdata('item', 'value');
}
}
Затем просто откройте контроллер на странице браузера и обновления, вы увидите, что flashdata
не установлен, и следующая ошибка регистрируется в папке журнала приложений CI, если она имеет правильное разрешение:
Уровень важности: Уведомление → unserialize(): Ошибка при смещении 0 из 286 байт /Applications/MAMP/htdocs/final/system/libraries/Session.php 741
1. Является ли это ошибкой CodeIgniter или я делаю что-то неправильно?
2. Что я должен сделать для этого?
P.S. had to change cipher because default encryption result was too long for a message I needed to encrypt, but I wanted to use default method for anything else CI uses