duanhong8839 2017-12-19 19:54
浏览 297
已采纳

php-base64编码的数据在json_encode之后丢失

I use the following code to generate a encrypted string for a given string.

class MY_class{
    public static function cryption($string){
        $output = base64_encode(openssl_encrypt($string, $cipher_method, $key, 0, $iv));
        $output = $iv . $output;
        return $output;
    }
}

Using this code I generated the encrypted id of the id of a model object and replaced the original id.

$Model_object = Model_class::find(1);
$Model_object->id = MY_class::cryption($Model_object->id);
echo json_encode($Model_object);

For a given instance print_r() of $Model_object after replacing the original id with encrypted id gives me the following result.

[index] => Array
    (
        [id] => 4df73f34cUYxVmVLWlFUU2M9
    )

But json_encode() only outputs only the first decimal digits of the of the encrypted id.

{"id":4}

I'd really appreciate if someone can explain why this is happening and how to overcome this problem.

P.S. I have already googled this problem and searched in Stack Overflow too. So, don't mention it in comments.

  • 写回答

1条回答 默认 最新

  • dpdfh60088 2017-12-19 21:37
    关注

    As @LSerni said, I was implicitly assigning the encrypted id which is a string to the integer property $Model_object->id.

    So I created a new dynamic property $Model_object->encrypted_id and assigned the encrypted id to it and called that property on the other side. It worked like a charm.

    Thank you very much @LSerni for your insight on the problem.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Arduino,利用modbus的RS485协议,进行对外置的温湿度传感器进行数据读取
  • ¥15 vhdl+MODELSIM
  • ¥20 simulink中怎么使用solve函数?
  • ¥30 dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,求解决办法
  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么