我遇到了PHP代码问题。如您所见,我从另一个页面获得id
。我想基于Cookie将这些id
保存在数组中。我能够做到这一点,但我有一个问题。
当我设置超时(例如20秒)和刷新页面时:每20秒它工作正常,但如果我在20秒内刷新它,它会给我下面的错误。
致命错误:字符串
不支持[]运算符
我不知道为什么;你能帮忙吗?
<?php
$ID = is_numeric($_GET['ID']) ? $_GET['ID'] : 1;
$cookie_name = "favoritepost";
if ( isset($_COOKIE[$cookie_name]) ) {
$kookie = $_COOKIE[$cookie_name];
} else {
$kookie = array();
}
if ( ! in_array($ID, $kookie) ) {
$kookie[] = $ID;
}
setcookie($cookie_name, serialize($kookie), time() + (20), "/"); // 86400 = 1 day
?>
<html>
&#13;
答案 0 :(得分:1)
根据我的上一个回答https://stackoverflow.com/a/38307347/2310830
<?php
$ID = is_numeric($_GET['ID']) ? $_GET['ID'] : 1;
$cookie_name = "favoritepost";
if ( isset($_COOKIE[$cookie_name]) ) {
$kookie = unserialize($_COOKIE[$cookie_name]);
} else {
$kookie = array();
}
if ( ! in_array($ID, $kookie) ) {
$kookie[] = $ID;
}
setcookie($cookie_name, serialize($kookie), time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
答案 1 :(得分:0)
当数组存储为cookie时,序列化。所以当你检索它时,它是一个字符串,而不是一个数组。在添加更多内容之前,需要对其进行反序列化:
$kookie = unserialize($_COOKIE[$cookie_name]);