json_decodeでjsonコードを実行すると正常に動作しますが、mcryptで暗号化してurlencodeでエンコードしてからデコードと復号化を行うと動作しません。PHP:urldecodeとmcryptを使用しているときにJSONが機能しない
何が間違っているのか分かりますか?
復号化されたjsonは、暗号化される前にjsonとまったく同じように見えます。
マイコード:
<?
$json = '{"entry1":{"name":"bob","age":"15"},"entry2":{"name":"bill","age":"50"}}';
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "abcdefghijkl";
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $json, MCRYPT_MODE_ECB, $iv);
$urlencoded = urlencode($encrypted);
$urldecoded = urldecode($urlencoded);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $urldecoded, MCRYPT_MODE_ECB, $iv);
// json and decrypted json comparison
echo "<h3>JSON & Decrypted JSON look the same:</h3>";
echo $json . " // json<br>";
echo $decrypted . " // decrypted json<br>";
// json - works!
echo "<h3>JSON works:</h3>";
$data = json_decode($json);
$i = 1;
while ($i <= 2) {
$entrynumber = "entry" . $i;
echo "name ----- " . $data->$entrynumber->name . "<br>";
echo "age ------- " . $data->$entrynumber->age . "<br>";
$i++;
}
// decrypted json - doesnt work!
echo "<h3>Decrypted JSON doesnt work:</h3>";
$data = json_decode($decrypted);
$i = 1;
while ($i <= 2) {
$entrynumber = "entry" . $i;
echo "name ----- " . $data->$entrynumber->name . "<br>";
echo "age ------- " . $data->$entrynumber->age . "<br>";
$i++;
}
?>
あなたがPHPのドキュメントにそのコードを貼り付ける場合は、私が何を意味するかが表示されます。
スクリーンショット:
「それは動作しません」良いエラーの説明* *ことはありません。何が間違っているのか、どのようなエラーメッセージが出るのかなどを記述してください。 –
私は説明しました、PHPのコメントを見てください。 – supercoolville
ブラウザのスクリーンショットではなくHTMLを貼り付けることができますか?暗号化されたjson文字列に"などのHTMLエンティティが含まれているか、または何か – catchmeifyoutry