2011-02-24 124 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()。