0

いくつかのデータをCookieに保存する必要があります。データはmcrypt暗号化base64されてから、奇妙な文字が使用されるのを防ぎます。
暗号化およびエンコードされた文字列をセッションに保存し、それを読み戻し、復号化/デコードすることは完全に機能します。Cookieに対して同じことを行うと、失敗します。完全にぎこちないテキストが返されます。

明らかに、これはmcrypt-decrypt関数呼び出しが不適切なデータを受信するという事実によるものであり、Cookieの内容が何らかの形で影響を受けていると私は信じています。

PHPは私のCookieデータの舞台裏で何をしているのですか?

コード:(
以下では、mcrypt-functionsが読みやすさのための単純な関数呼び出しとして表されていることに注意してください)

$string = base64_encode( mcrypt_encrypt( 'A string' ) );
setcookie('string', $string, time()+3600);
$_SESSION['string'] = $string;

$sessiondata = base64_decode( mcrypt_decrypt($_SESSION['string']); // A string!
$cookiedata = base64_decode( mcrypt_decrypt($_COOKIE['string']) ); // Completely gibberish
4

1 に答える 1

0

文字列をCookieに送信する前に、文字列に対してurlencode()を呼び出してみてください。PHPがデータを$ _COOKIEで使用できるようにすると、データに対して自動的にurldecode()を実行することを思い出しているようです。

于 2011-02-24T15:33:42.503 に答える