如何将 json 编码传递到 PHP 中的 cookie
How to pass json encode into cookie in PHP
当我检查 JSON 用 print_r 编码时,它看起来很好 => {"expiry":1636191448,"auth":true}
然后我尝试将其存储在 cookie 中,
但是当我在浏览器 cookies 值中看到它时它变成了这样 => %7B%22expiry%22%3A1636191866%2C%22auth%22%3Atrue%7D
任何人都可以告诉我如何解决它。我没有将它用于权限系统,而是用于其他事情,比如在 javascript 中阅读它,但在尝试解析它时出现错误
Uncaught SyntaxError: Unexpected token % in JSON at position 0
at JSON.parse ()
.
这是我的 php 文件中的代码行
if (Cookie::exists(Config::get('client/cookie_name'))) {
$client = json_decode(Cookie::get(Config::get('client/cookie_name')), true);
$expiry = $client['expiry'];
} else {
$client = array (
'expiry' => time() + Config::get('client/cookie_expiry')
);
}
$client['auth'] = true;
$client = json_encode($client);
Cookie::update(Config::get('client/cookie_name'), $client, $expiry);
Cookie 通常是 URL 编码的(但有时会使用不同的编码)。由于这并不是真正标准化的,并且根据规范,只有少数字符必须以某种方式 以某种方式 进行编码(未指定方式),不同的系统在处理 cookie 编码时可能采用不同的路径,并且因此,使用另一个系统读取一个系统设置的 cookie 可能会导致此类问题。
在您的情况下,您可以先对值调用 decodeURIComponent
:
const json = decodeURIComponent(encodedCookieValue)
const data = JSON.parse(json)
进一步阅读:
当我检查 JSON 用 print_r 编码时,它看起来很好 => {"expiry":1636191448,"auth":true}
然后我尝试将其存储在 cookie 中,
但是当我在浏览器 cookies 值中看到它时它变成了这样 => %7B%22expiry%22%3A1636191866%2C%22auth%22%3Atrue%7D
任何人都可以告诉我如何解决它。我没有将它用于权限系统,而是用于其他事情,比如在 javascript 中阅读它,但在尝试解析它时出现错误
Uncaught SyntaxError: Unexpected token % in JSON at position 0 at JSON.parse ()
.
这是我的 php 文件中的代码行
if (Cookie::exists(Config::get('client/cookie_name'))) {
$client = json_decode(Cookie::get(Config::get('client/cookie_name')), true);
$expiry = $client['expiry'];
} else {
$client = array (
'expiry' => time() + Config::get('client/cookie_expiry')
);
}
$client['auth'] = true;
$client = json_encode($client);
Cookie::update(Config::get('client/cookie_name'), $client, $expiry);
Cookie 通常是 URL 编码的(但有时会使用不同的编码)。由于这并不是真正标准化的,并且根据规范,只有少数字符必须以某种方式 以某种方式 进行编码(未指定方式),不同的系统在处理 cookie 编码时可能采用不同的路径,并且因此,使用另一个系统读取一个系统设置的 cookie 可能会导致此类问题。
在您的情况下,您可以先对值调用 decodeURIComponent
:
const json = decodeURIComponent(encodedCookieValue)
const data = JSON.parse(json)
进一步阅读: