0

我需要在 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
4

1 回答 1

0

在将字符串发送到 cookie 之前尝试在字符串上调用 urlencode() —— 我似乎记得 PHP 在 $_COOKIE 中提供数据时会自动对数据执行 urldecode()。

于 2011-02-24T15:33:42.503 回答