Добавление ключа к существующему (или нет) массиву - PullRequest
0 голосов
/ 07 октября 2011

Я получил этот код:

if( empty ($cache[$id]) ) {
    $arr[$id] = @TIMENOW;
    setcookie('id', cArr($arr, 'set'), -1, @PATH);
} else {
    $cache[$id] = @TIMENOW;
    setcookie('id', cArr($cache, 'set'), -1, @PATH);
}

И он добавляет только один ключ к cookie, если я перейду в другой поток, он сбросит массив и выигралНе добавляйте больше ключей.Я имею в виду, что если пользователь идет в поток с id 1, то if( empty ($cache[1]) ) добавляет 1, вместо этого он обновит существующее значение, И если пользователь перейдет сейчас в поток с ID 5, он сделает то же самое,и if( empty ($cache[5]) ) пусто, тогда он добавит ключ с идентификатором 5 в массив, так что теперь у меня будут оба ключа: 1 и 5.

Надеюсь, вы его получили.Если вы этого не сделаете, не стесняйтесь спрашивать, что вы не хотите, я отвечу на все ваши вопросы.

1 Ответ

2 голосов
/ 07 октября 2011

Было бы полезно узнать, что вы делаете в cArr().Но без этого, это добавит к вашему куки для каждого нового потока, который посещает пользователь.

//get previous values
$id = $_GET['thread_id'];
$cache = array_key_exists('id', $_COOKIE) ? unserialize($_COOKIE['id']) : array();

//add to $cache
$cache[$id] = TIMENOW;
setcookie('id', serialize(cArr($cache, 'set')), -1, PATH);

ПРЕДУПРЕЖДЕНИЕ: Но имейте в виду, что при установке куки, ваш веб-сервер можетэксплуатироваться.Поэтому лучше не использовать searialize и unserialize для хранения простых статических значений в вашем cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...