我需要在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
答案 0 :(得分:0)
在将字符串发送到cookie之前尝试在字符串上调用urlencode() - 我似乎记得PHP在$ _COOKIE中提供数据时会自动对数据执行urldecode()。