因此,根据我对PHP和cookie的理解,如果我使用该setcookie()函数,那么我会得到一个自动进行url编码的cookie.当我去$_COOKIE数组时,我应该恢复cookie,自动解码url.问题是,当我查看时,似乎是两次解码cookie $_COOKIE.
假设我有一个cookie,其值为"Name | ID | Email",例如:
Joe|123|my+email@somewhere.com
这将被编码为:
乔%7C123%7Cmy%2Bemail%40somewhere.com
注意加号是编码的,所以理论上我应该把它解回来,如果我解码它.由于这是自动完成的$_COOKIE,我应该回到我的开始.但相反,我回来了:
Joe | 123 | my email@somewhere.com
注意曾经是加号的空间.如果我urldecode()在cookie上额外运行,这就是我所期望的.但我不是,所以我不知道为什么我会得到一个空间而不是一个加号.
另一个有趣的转折 页面上的刷新似乎产生了正确的输出.任何想法为什么它的行为像这样?
仅供参考,要设置初始cookie,我使用javascript和escape()脚本来生成编码字符串.这可能是javascript和PHP之间的问题吗?
我们将不胜感激.
因此,假设我在 javascript 中有如下内容:
object = {"one": 1, "two": 2, "three": 3, "123": 123};
Run Code Online (Sandbox Code Playgroud)
当我遍历这个时,结果是“123”成员跳到了列表的最前面,而其他人的顺序保持不变。如果我做类似以下的事情,
object = {"one": 1, "two": 2, "three": 3, "123 STRING": 123};
Run Code Online (Sandbox Code Playgroud)
维持秩序。所以看起来像一个纯粹的数字键被颠倒了,但一个包含非数字字符的键不是。有谁知道为什么?