简体   繁体   English

有一个数组作为cookie值

[英]have an array as a cookie value

I am having a PHP code problem. 我有一个PHP代码问题。 As you see, I get an id from another page. 如您所见,我从另一个页面获得了一个id I want to save these id 's in array based on cookies. 我想基于cookie将这些id保存在数组中。 I was able to do that, but I have a problem with it. 我能够做到这一点,但是我有一个问题。

When I set the timeout (for example to 20 seconds) and refresh page: every 20 second it works fine, but if I refresh it in under 20 seconds it gives me the error below. 当我设置超时时间(例如设置为20秒)并刷新页面时:每20秒可以正常工作,但是如果我在20秒以内刷新它,则会出现以下错误。

Fatal error: [] operator not supported for strings 致命错误:字符串不支持[]运算符

I do not know why; 我不知道为什么; could you please help? 能否请你帮忙?

 <?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> 

As per my last answer https://stackoverflow.com/a/38307347/2310830 根据我的最后答案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>

The array is serialized when it is stored as a cookie. 数组作为cookie存储时将被序列化。 So when you retrieve it, it is a string, not an array. 因此,当您检索它时,它是一个字符串,而不是数组。 You need to unserialize it before you add more to it: 您需要对它进行反序列化,然后再添加更多内容:

$kookie = unserialize($_COOKIE[$cookie_name]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM