php-base64编码的数据在json_encode之后丢失
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php-base64编码的数据在json_encode之后丢失相关的知识,希望对你有一定的参考价值。
我使用以下代码为给定字符串生成加密字符串。
class MY_class{
public static function cryption($string){
$output = base64_encode(openssl_encrypt($string, $cipher_method, $key, 0, $iv));
$output = $iv . $output;
return $output;
}
}
使用此代码,我生成了模型对象的id的加密id,并替换了原始id。
$Model_object = Model_class::find(1);
$Model_object->id = MY_class::cryption($Model_object->id);
echo json_encode($Model_object);
对于给定的实例print_r()
的$Model_object
更换原始id与加密id后给我以下结果。
[index] => Array
(
[id] => 4df73f34cUYxVmVLWlFUU2M9
)
但是json_encode()
只输出加密id的第一个十进制数字。
{"id":4}
如果有人能解释为什么会这样,以及如何克服这个问题,我真的很感激。
附:我已经用Google搜索了这个问题并在Stack Overflow中进行了搜索。所以,请不要在评论中提及它。
答案
正如@LSerni所说,我隐含地将加密的id作为字符串分配给整数属性$Model_object->id
。
所以我创建了一个新的动态属性$Model_object->encrypted_id
并为其分配了加密的id并在另一侧调用了该属性。它就像一个魅力。
非常感谢@LSerni对您解决问题的见解。
以上是关于php-base64编码的数据在json_encode之后丢失的主要内容,如果未能解决你的问题,请参考以下文章