php - base64 编码数据在 json_encode 后丢失
php - base64 encoded data is lost after 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);
对于 $Model_object
的给定实例 print_r()
在用加密的 id 替换原始 id 后得到以下结果。
[index] => Array
(
[id] => 4df73f34cUYxVmVLWlFUU2M9
)
但是json_encode()
只输出加密id的前十进制数字。
{"id":4}
如果有人能解释为什么会发生这种情况以及如何解决这个问题,我将不胜感激。
P.S。我已经用谷歌搜索了这个问题并在 Stack Overflow 中也进行了搜索。所以,请不要在评论中提及它。
正如@LSerni 所说,我隐式地将 string 的加密 ID 分配给 integer 属性 $Model_object->id
.
所以我创建了一个新的动态 属性 $Model_object->encrypted_id
并为其分配了加密的 ID,并在另一端调用了 属性。它就像一个魅力。
非常感谢@LSerni 对问题的见解。
我使用以下代码为给定字符串生成加密字符串。
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);
对于 $Model_object
的给定实例 print_r()
在用加密的 id 替换原始 id 后得到以下结果。
[index] => Array
(
[id] => 4df73f34cUYxVmVLWlFUU2M9
)
但是json_encode()
只输出加密id的前十进制数字。
{"id":4}
如果有人能解释为什么会发生这种情况以及如何解决这个问题,我将不胜感激。
P.S。我已经用谷歌搜索了这个问题并在 Stack Overflow 中也进行了搜索。所以,请不要在评论中提及它。
正如@LSerni 所说,我隐式地将 string 的加密 ID 分配给 integer 属性 $Model_object->id
.
所以我创建了一个新的动态 属性 $Model_object->encrypted_id
并为其分配了加密的 ID,并在另一端调用了 属性。它就像一个魅力。
非常感谢@LSerni 对问题的见解。