verfaa
Профессор
- Регистрация
- 29 Янв 2007
- Сообщения
- 417
- Реакции
- 49
- Автор темы
- #1
На сайте есть чат, где пользователи общаются 1-на-1.
Этот чат создаёт массив $_COOKIE['chat']['recipients'] в котором хранит id пользователей с которыми общается юзер (чтобы он мог переключатся меду ними)
Создание массива в скрипте имеет следующий вид:
Чат самопис, код писал не я. Только что обнаружил проблему - при добавлении нового пользователя в список (т.е. нового элемента в массив $_COOKIE['chat']['recipients']) срок окончания действия всех COOKIE в массиве $_COOKIE['chat']['recipients'] изменяется на текущий (понятно почему, мы foreach проходим по итоговому массиву и обновляем expire у всех элементов). Но это противоречит всякой логике.
Подскажите пожалуйста как сделать, чтобы при добавлении нового элемента в массив $_COOKIE устанавливался expire только для него, а для всех остальных элементов из этого массива expire оставался прежним.
Этот чат создаёт массив $_COOKIE['chat']['recipients'] в котором хранит id пользователей с которыми общается юзер (чтобы он мог переключатся меду ними)
Создание массива в скрипте имеет следующий вид:
Код:
// ID пользователя с которым нужно открыть чат обычно приходит из GET
$respondent = isset($_REQUEST["resp"]) ? intval($_REQUEST["resp"]) : "";
if($respondent) {
$_COOKIE['chat']['recipients'][] = $respondent;
$_COOKIE['chat']['recipients'] = array_unique($_COOKIE['chat']['recipients']);
sort($_COOKIE['chat']['recipients']);
foreach($_COOKIE['chat']['recipients'] as $k => $v) {
setcookie('chat[recipients]['.$k.']', $v, time() + 3600 * 24 * 7, '/' );
}
Чат самопис, код писал не я. Только что обнаружил проблему - при добавлении нового пользователя в список (т.е. нового элемента в массив $_COOKIE['chat']['recipients']) срок окончания действия всех COOKIE в массиве $_COOKIE['chat']['recipients'] изменяется на текущий (понятно почему, мы foreach проходим по итоговому массиву и обновляем expire у всех элементов). Но это противоречит всякой логике.
Подскажите пожалуйста как сделать, чтобы при добавлении нового элемента в массив $_COOKIE устанавливался expire только для него, а для всех остальных элементов из этого массива expire оставался прежним.