1

問題は、私がbase64_encodingjson文字列であり、何らかの理由でbase64_decode文字列を実行すると、「配列」の文字列が返されることだと思います。json_decode($string, true)

ここで、エンコードするjsonを渡します。

$data = '[{"id":"1","name":"Dave","email":"dave@test.com","password":"1610838743cc90e3e4fdda748282d9b8","isAdmin":"true","timeStamp":"2012-09-18 20:37:38"}]';

Session::set('user', $data, true);

これが私のbase64エンコード/デコードコードです:

public static function set($key, $value, $encrypt = false) {
    if ($encrypt == false) {
        $_SESSION[$key] = $value;
    } else {
        $_SESSION[$key] = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(SALT1), $value, MCRYPT_MODE_CBC, md5(md5(SALT2))));
    }
}

public static function get($key, $decrypt = false) {
    if (isset($_SESSION[$key])) {
        if ($decrypt == false) {
            return $_SESSION[$key];
        } else {
            return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5(SALT1), base64_decode($_SESSION[$key]), MCRYPT_MODE_CBC, md5(md5(SALT2))), "\0");
        }
    }
}

次に、値をデコードするための呼び出しを行います。

$user = Session::get('user', true);

echo json_decode($user, true);

そして私の結果は次のとおりです。

Array

さまざまなmcryptモードを調べましたが、解決策を見つけることができませんでした。どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

3

echo文字列を出力するだけです。アレイを使用print_r()または表示する必要があります。var_dump()

print_r(json_decode($user, true));

または使用する

var_dump(json_decode($user, true));
于 2012-09-20T07:50:16.683 に答える
0

これを使って :

print_r(json_decode($ user、true));

于 2012-09-20T13:37:23.177 に答える