【问题标题】:PHP: Storing base_64 data in cookiesPHP:在 cookie 中存储 base_64 数据
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    相关资源
    最近更新 更多