我相信问题在于我是base64_encoding
json 字符串,当我base64_decode
字符串并json_decode($string, true)
出于某种原因运行时,它只返回“数组”字符串。
这是我传递要编码的json的地方:
$data = '[{"id":"1","name":"Dave","email":"dave@test.com","password":"1610838743cc90e3e4fdda748282d9b8","isAdmin":"true","timeStamp":"2012-09-18 20:37:38"}]';
Session::set('user', $data, true);
这是我的 base64 编码/解码代码:
public static function set($key, $value, $encrypt = false) {
if ($encrypt == false) {
$_SESSION[$key] = $value;
} else {
$_SESSION[$key] = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(SALT1), $value, MCRYPT_MODE_CBC, md5(md5(SALT2))));
}
}
public static function get($key, $decrypt = false) {
if (isset($_SESSION[$key])) {
if ($decrypt == false) {
return $_SESSION[$key];
} else {
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5(SALT1), base64_decode($_SESSION[$key]), MCRYPT_MODE_CBC, md5(md5(SALT2))), "\0");
}
}
}
然后在这里我调用解码值:
$user = Session::get('user', true);
echo json_decode($user, true);
我的结果是:
Array
我研究了不同的 mcrypt 模式,但未能找到解决方案。任何帮助将不胜感激。谢谢。