2011-02-24 122 views
0

我需要在cookie中存储一些数据。数据经过mcrypt加密,然后通过base64来防止使用任何奇怪的字符。
在会话中存储加密的&编码字符串并将其读回&解密/解码完美工作。对cookie做同样的事情 - 返回完全乱码的文本。PHP:在cookie中存储base_64数据

显然这是由于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

也许与应用字符编码有关!? – Raffael 2011-02-24 15:14:53

+0

会话内容不会受到影响吗? – Industrial 2011-02-24 15:19:03

+0

在尝试解码字符串之前,请首先查看'$ _COOKIE ['string']'中的内容,并确保它与'$ _SESSION ['string']'相同。 – 2011-02-24 15:21:31

回答

0

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