我需要在 cookie 中存储一些数据。数据经过mcrypt
加密,然后base64
防止使用任何奇怪的字符。
将加密和编码的字符串存储在会话中并将其读回和解密/解码效果很好。对 cookie 执行相同操作会失败 - 返回完全乱码的文本。
显然这是由于mcrypt-decrypt
函数调用接收到不正确的数据,让我相信我的 cookie 的内容受到了某种方式的影响。
PHP 在幕后对我的 cookie 数据做了什么?
代码:(
请注意,为了便于阅读,下面将 mcrypt 函数表示为普通函数调用)
$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