PHP:将base64数据存储在cookie中

时间:2011-02-24 15:12:31

标签: php cookies base64 mcrypt setcookie

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

1 个答案:

答案 0 :(得分:0)

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