[英]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后,我得到以下結果。
[index] => Array
(
[id] => 4df73f34cUYxVmVLWlFUU2M9
)
但是json_encode()
僅輸出加密ID的前十進制數字。
{"id":4}
如果有人能夠解釋為什么會發生這種情況以及如何解決此問題,我將非常感激。
PS我已經谷歌搜索這個問題,並在堆棧溢出搜索。 因此,請勿在評論中提及它。
正如@LSerni所說,我隱式地將加密的id(它是一個字符串)分配給整數屬性$Model_object->id
。
因此,我創建了一個新的動態屬性$Model_object->encrypted_id
並$Model_object->encrypted_id
分配了加密的ID,然后在另一側調用了該屬性。 它像魅力一樣運作。
非常感謝@LSerni對這個問題的理解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.