【发布时间】:2015-07-31 16:52:51
【问题描述】:
我有检查用户 cookie 的代码:
echo 'prev: ' . $prevCookie;
echo 'curr: ' . $currentCookie;
if ((string) $prevCookie == (string)$currentCookie) {
echo 'same cookies';
} else {
echo 'different cookies';
}
在大约 0.1% 的情况下,我得到以下关注:
// prev: xxx
// curr: xxx
// different cookies
这些事情是怎么发生的?
PS。字符串被修剪,没有多余的空格。
更新
我可以为您提供存储在 db 中的真实值,但它们是相同的: (直接),(有机),YandexCPC 等。如果我能以某种方式复制它会很容易。
【问题讨论】:
-
echo strlen($prevCookie);和echo strlen($currentCookie);产生相同的结果吗? -
执行
var_dump($prevCookie)和var_dump($currentCookie)并将结果发布到您的问题中 -
0.1% 的时间字符串不相同。
-
@jww 使用 MD5 可能另一个 cookie 值生成相同的哈希值!
-
@survex 看起来似乎相等的两个字符串有一些不可见的不同之处,它可能是前导或后缀空格,或者任何地方的
\0。有些符号可能不会打印或打印时不会被注意到,这将导致两个字符串在逻辑上不同但看起来相同。