次のコードを使用して、指定された文字列の暗号化された文字列を生成します。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を置き換えました。暗号化されたIDを持つオリジナルのIDを交換した後$Model_object
の特定のインスタンスprint_r()
については
$Model_object = Model_class::find(1);
$Model_object->id = MY_class::cryption($Model_object->id);
echo json_encode($Model_object);
私に次のような結果になります。
[index] => Array
(
[id] => 4df73f34cUYxVmVLWlFUU2M9
)
json_encode()
は、暗号化されたidの最初の10進数字のみを出力します。
{"id":4}
なぜこのようなことが起こっているのか、この問題を解決する方法を説明できるのであれば、本当に感謝します。
P.S.私はすでにこの問題を探知して、Stack Overflowも検索しました。だから、コメントで言及しないでください。
二重引用符で囲んでみましたか? – andrewnagyeb
質問から多くのコードを除外しているため、実際に何が起こっているのかを実際に伝えることはできません。問題を示す*有効なコードで質問を更新してください。そのコードが実行可能な*例であればさらに優れています。 – Sammitch
IDを整数*変数に暗黙的に割り当てることができます。そして、型変換は "4d ..."を4に変換します。最初の桁を取っていないので、唯一の* 10進数を取っています。 idを1337abcまたはabc1337に設定して、何が起こるかを確認してください。 – LSerni