【发布时间】:2011-07-03 15:39:59
【问题描述】:
我需要在 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
【问题讨论】:
-
可能与应用的字符编码有关!?
-
那会话内容不也会受到影响吗?
-
在尝试解码字符串之前,请先查看
$_COOKIE['string']中的内容,并确保它与$_SESSION['string']相同。
标签: php cookies base64 mcrypt setcookie