Читаем предыдущую запись из куков.
Session \ sess_read() \ this->CI->input->cookie() :
BL4R8uzCHAdikTBTT1+UaHnaQXhss80AKcd17LEErhMPd03kpFSQww0MV7OWml+H2siU257Lrh0BGLuEYkZZBB9LreA6fgE9jW3JI8IYrLj0V562yiwfpYzShnf6g5nKAeR4m5NHIyaNMT4K3ioPEhgfkMemqE2VMe+eHFYvCZaC2N40GMaaZrl369HRtTMeNAeEuwWCSb+WiVlXhlqX+36Oq77ALHCcEwqHqv40awgQz1Y2b0Eh0Ix/S33FK5tVW9N4xrqYVRvL62do733kijcXGwnneLxuCpf4vHBRZM68TEK7FPbTgm+ujbTIP/CW4XZzh7mDg0wR4aO1QQE/tcLlx/Mo+tx217L4VbEClXLLTNWIS82+Ior+tsjN0OhiYkMl0jGqLvBvgvHjqE/nFP5Y9/vJ8hdCC/ieM9rgnoR7nRPaYK02Mng0zPRU6FlSwrYqxxNrqPxF9vpX
Декодируем - уже видно что строка рассыпалась!
Session \ sess_read() \ this->CI->encrypt->decode() :
a:4:{s:10:"session_id";s:32:"d63dbd899e0febb3793b65c0b95f0922";s:10:"ip_address";s:13:"93.125.69.248";s:10:"user_agent";s:50:"Mozilla/5.0 (WindoA*@]€".ÅÄw3..ÊÁ
Естественно $this->_unserialize() - выдает ошибку
Session \ sess_read() \ this->_unserialize() :
Is the session data we unserialized an array with the correct format?
Создание новой сессии.
Session \ sess_create() \ _set_cookie()
Пустой массив
Session \ _set_cookie() :
s:0:"";
Получение данных из значени $this->userdata
Session \ _set_cookie() \ Array==NULL :
a:4:{s:10:"session_id";s:32:"ae8b8db2bfe23f22f809894ba0987435";s:10:"ip_address";s:13:"93.125.69.248";s:10:"user_agent";s:50:"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.";s:13:"last_activity";s:10:"1228765904";}
Сериализация их
Session \ _set_cookie() \ this->_serialize() :
a:4:{s:10:"session_id";s:32:"ae8b8db2bfe23f22f809894ba0987435";s:10:"ip_address";s:13:"93.125.69.248";s:10:"user_agent";s:50:"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.";s:13:"last_activity";s:10:"1228765904";}
Кодирование их
Session \ _set_cookie() \ this->CI->encrypt->encode() :
qeGsgABCsfcAY9/fE1mnyLuacMcte89ldnuHKfNeq6dopTOV60319qkc5uKA4OoiQCbc29/XpJW2YfMZdAfNJGIFtHXyzgHcWsGOWbR1TFCJ9XYVuAvfeuCiKBMgE8KWfXhndm+ErzOYgJMGIZwdlj9DBKCLSuAwCTHZxyDMYcCfgs1/Fu2exE+p/BxxTptTb/XOGsCUDz6q1xDvKP4S4lZMKgyyiqhakcvnd9EqcYNE2pVknkP0Q85qOdRKChfJTNVKtt2i4Kh6/Iv6oDaxRJIHDMwSyuIBNzv/A88P2On8syHf2TQHItL2n+w5Kp5hiaKrZv+eKnoUaDj+BVt3ipQm+XiInrAehxsVxEl5aMwXdk9tXVxuAL+43YWVfrkpdyevqvAVKV+kIezlzQRWNGNElnF7wogXxQSxkBCOSM58/bJKAnkguBWBx57GikpwolUhOU7aKdIjblBEt0H/l4/f3HAIHsJZWfzaJldn1wBObD2DpTtfDtgEsC7KK0/BF2M0G1Sdqq0rp9h/S+eg4L9fLzUksU4pafqg+DfXIqjyOOq6SbZgIxbpy2kknLyy48B7vMJiGqKVahJroWiEaZPi8rN6qWDrWjC1MbqzeyWrtYZa7T6xWEOwTAOVhx6O
Запись в куки. При расшифровки данные будут идентичны.
Session \ _set_cookie() \ setcookie() :
qeGsgABCsfcAY9/fE1mnyLuacMcte89ldnuHKfNeq6dopTOV60319qkc5uKA4OoiQCbc29/XpJW2YfMZdAfNJGIFtHXyzgHcWsGOWbR1TFCJ9XYVuAvfeuCiKBMgE8KWfXhndm+ErzOYgJMGIZwdlj9DBKCLSuAwCTHZxyDMYcCfgs1/Fu2exE+p/BxxTptTb/XOGsCUDz6q1xDvKP4S4lZMKgyyiqhakcvnd9EqcYNE2pVknkP0Q85qOdRKChfJTNVKtt2i4Kh6/Iv6oDaxRJIHDMwSyuIBNzv/A88P2On8syHf2TQHItL2n+w5Kp5hiaKrZv+eKnoUaDj+BVt3ipQm+XiInrAehxsVxEl5aMwXdk9tXVxuAL+43YWVfrkpdyevqvAVKV+kIezlzQRWNGNElnF7wogXxQSxkBCOSM58/bJKAnkguBWBx57GikpwolUhOU7aKdIjblBEt0H/l4/f3HAIHsJZWfzaJldn1wBObD2DpTtfDtgEsC7KK0/BF2M0G1Sdqq0rp9h/S+eg4L9fLzUksU4pafqg+DfXIqjyOOq6SbZgIxbpy2kknLyy48B7vMJiGqKVahJroWiEaZPi8rN6qWDrWjC1MbqzeyWrtYZa7T6xWEOwTAOVhx6O
Вызов sess_write() и сериализация $custom_userdata - это мои данные, которые я вношу в сессию
Session \ sess_write() \ this->_serialize(custom_userdata):
Array - в виде массива
Сериализация их
Session \ sess_write() \ this->_serialize():
a:3:{s:7:"user_id";s:0:"";s:9:"logged_in";s:0:"";s:6:"status";s:1:"1";}
По ходу данные записываются в БД.
В _set_cookie передается массив $cookie_userdata
Session \ sess_write() \ _set_cookie(cookie_userdata):
a:4:{s:10:"session_id";s:32:"ae8b8db2bfe23f22f809894ba0987435";s:10:"ip_address";s:13:"93.125.69.248";s:10:"user_agent";s:50:"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.";s:13:"last_activity";s:10:"1228765904";}
Функция получает массив
Session \ _set_cookie() :
a:4:{s:10:"session_id";s:32:"ae8b8db2bfe23f22f809894ba0987435";s:10:"ip_address";s:13:"93.125.69.248";s:10:"user_agent";s:50:"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.";s:13:"last_activity";s:10:"1228765904";}
Сериализует эти данные
Session \ _set_cookie() \ this->_serialize() :
a:4:{s:10:"session_id";s:32:"ae8b8db2bfe23f22f809894ba0987435";s:10:"ip_address";s:13:"93.125.69.248";s:10:"user_agent";s:50:"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.";s:13:"last_activity";s:10:"1228765904";}
Шифрует эти данные
Session \ _set_cookie() \ this->CI->encrypt->encode() :
Wded1dT+RZc29nOektvObIbKvYN0SIoN4xsP6hDJSO4AtMgPL0B7623UWeCy+8suzXNKbjKDfCsgVM4SX0ILgJ/pt66og5F6QVWTXXJMDZbV3l058gcsecPaJcTrbkRZI0nX/Dj5eE98RGvQ/aZCM+JlKqUJSKu4lsJE85yeFQPB0iMOlaE2vT+148Q6I4oZyxbw7HClLX8m9nkxTwEVr1/K6/l6jVEUnxXTkriyIlSHs3ks+bwYQ306foRavE7B/Nzm63iSYcQdQc0ONBZT4WSE/6mxE26acn1+4u4OCOXuLOBXdPq/DsQJUwjE/n8/xUFkK7KdqpR1LQytQ40Cf2V+BTYYIwiF/r4H5GUboeVFTzvw5F/VPOBnH7qrpdvcz1L/YdPEBvX4reDKw18Vemne5eoObeXJuXu7E5ZQtmUp
Записывает в куки
Session \ _set_cookie() \ setcookie() :
Wded1dT+RZc29nOektvObIbKvYN0SIoN4xsP6hDJSO4AtMgPL0B7623UWeCy+8suzXNKbjKDfCsgVM4SX0ILgJ/pt66og5F6QVWTXXJMDZbV3l058gcsecPaJcTrbkRZI0nX/Dj5eE98RGvQ/aZCM+JlKqUJSKu4lsJE85yeFQPB0iMOlaE2vT+148Q6I4oZyxbw7HClLX8m9nkxTwEVr1/K6/l6jVEUnxXTkriyIlSHs3ks+bwYQ306foRavE7B/Nzm63iSYcQdQc0ONBZT4WSE/6mxE26acn1+4u4OCOXuLOBXdPq/DsQJUwjE/n8/xUFkK7KdqpR1LQytQ40Cf2V+BTYYIwiF/r4H5GUboeVFTzvw5F/VPOBnH7qrpdvcz1L/YdPEBvX4reDKw18Vemne5eoObeXJuXu7E5ZQtmUp
Читаем данные из куков - как видно всё идентично!
Session \ sess_read() \ this->CI->input->cookie() :
Wded1dT+RZc29nOektvObIbKvYN0SIoN4xsP6hDJSO4AtMgPL0B7623UWeCy+8suzXNKbjKDfCsgVM4SX0ILgJ/pt66og5F6QVWTXXJMDZbV3l058gcsecPaJcTrbkRZI0nX/Dj5eE98RGvQ/aZCM+JlKqUJSKu4lsJE85yeFQPB0iMOlaE2vT+148Q6I4oZyxbw7HClLX8m9nkxTwEVr1/K6/l6jVEUnxXTkriyIlSHs3ks+bwYQ306foRavE7B/Nzm63iSYcQdQc0ONBZT4WSE/6mxE26acn1+4u4OCOXuLOBXdPq/DsQJUwjE/n8/xUFkK7KdqpR1LQytQ40Cf2V+BTYYIwiF/r4H5GUboeVFTzvw5F/VPOBnH7qrpdvcz1L/YdPEBvX4reDKw18Vemne5eoObeXJuXu7E5ZQtmUp
Декодируем - и сессия развалилась опять!
Session \ sess_read() \ this->CI->encrypt->decode() :
a:4:{s:10:"session_id";s:32:"ae8b8db2bfe23f22f809894ba0987435";s:10:"ip_address";s:13:"93.125.69.248";s:10:"user_agent";s:50:"Mozilla/5.0 (Windo÷"øºi.”.†¿.exb@©
Далее опять всё как по нотам... ошибка в $this->_unserialize() и плодим сессии...
Session \ sess_read() \ this->_unserialize() :
Is the session data we unserialized an array with the correct format?
....
function mcrypt_encode($data, $key)
{
$init_size = mcrypt_get_iv_size($this->_get_cipher(), $this->_get_mode());
$init_vect = mcrypt_create_iv($init_size, MCRYPT_RAND);
return $this->_add_cipher_noise($init_vect.mcrypt_encrypt($this->_get_cipher(), $key, $data, $this->_get_mode(), $init_vect), $key);
}
$cookie_data = $this->CI->encrypt->encode($cookie_data,'9fca5ef2eeb2d513a09302e130298b6');
или
$cookie_data = $this->CI->encrypt->encode($cookie_data,"9fca5ef2eeb2d513a09302e130298b6");
function mcrypt_encode($data, $key)
{ $key="9fca5ef2eeb2d513a09302e130298b6";
$init_size = mcrypt_get_iv_size($this->_get_cipher(), $this->_get_mode());
$init_vect = mcrypt_create_iv($init_size, MCRYPT_RAND);
return $this->_add_cipher_noise($init_vect.mcrypt_encrypt($this->_get_cipher(), $key, $data, $this->_get_mode(), $init_vect), $key);
}
function _add_cipher_noise($data, $key)
{
$keyhash = $this->hash($key);
$keylen = strlen($keyhash);
$str = '';
for ($i = 0, $j = 0, $len = strlen($data); $i < $len; ++$i, ++$j)
{
if ($j >= $keylen)
{
$j = 0;
}
$str .= chr((ord($data[$i]) + ord($keyhash[$j])) % 256);
}
return $str;
}
$msg = 'My secret message';
$encrypted_string = $this->encrypt->encode($msg);
echo $encrypted_string;
echo $this->encrypt->decode($encrypted_string);
Могу поспорить, что mcrypt имеется и проблема в нём.
....
var $_mcrypt_exists = FALSE;
...
function CI_Encrypt()
{
$this->CI =& get_instance();
$this->_mcrypt_exists = ( ! function_exists('mcrypt_encrypt')) ? FALSE : TRUE;
// есть иль нет mcrypt_encrypt()
}
....
function encode($string, $key = '')
{ $key = $this->get_key($key);
$enc = $this->_xor_encode($string, $key);
if ($this->_mcrypt_exists === TRUE) // - т.с. проверка
{
$enc = $this->mcrypt_encode($enc, $key);
// сессия - то ломается то нет... чудо юдо!
}
return base64_encode($enc);
}
Big_Shark писал(а):Жестокая битва.
дерись до последнего
У тебя версия 1.7.0? шифрования с помощью mcrypt доступно?
Попробуй убрать шифрование mcrypt;
Посмотри скрипт зашифрует и расшифрует правильно или нет
- Код: Выделить всё
$msg = 'My secret message';
$encrypted_string = $this->encrypt->encode($msg);
echo $encrypted_string;
echo $this->encrypt->decode($encrypted_string);
function _add_cipher_noise($data, $key)
{
$keyhash = $this->hash($key);
$keylen = strlen($keyhash);
$str = '';
for ($i = 0, $j = 0, $len = strlen($data); $i < $len; ++$i, ++$j)
{
if ($j >= $keylen)
{
$j = 0;
}
$str .= chr((ord($data[$i]) + ord($keyhash[$j])) % 256);
}
return $str;
}
$msg = 'My secret message';
$key='dfghsdfgsdg';
$encrypted_string = $this->encrypt->mcrypt_encode($msg,$key);
echo $encrypted_string;
echo $this->encrypt->mcrypt_decode($encrypted_string,$key); $msg = 'My secret message';
$key='dfghsdfgsdg';
$encrypted_string = $this->encrypt->add_cipher_noise($msg,$key);
echo $encrypted_string;
echo $this->encrypt->remove_cipher_noise($encrypted_string,$key); Вернуться в Сессии и авторизация
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0