簡體   English   中英

有一個數組作為cookie值

[英]have an array as a cookie value

我有一個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> 

根據我的最后答案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>

數組作為cookie存儲時將被序列化。 因此,當您檢索它時,它是一個字符串,而不是數組。 您需要對它進行反序列化,然后再添加更多內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM