Работа с переменными сессии

Krisha

pain in the neck
Работа с переменными сессии

Господа, никак не могу сообразить как реализовать подобный алгоритм:

В базе есть список "Клиенты" и у каждого клиента есть "События"

Задача:

При отображениии страницы определенного клиента необходимо вывести события, НО! вывести их только при первом заходе пользователя на страницу клиента, в дальнейшем, при повторном заходе на протяжении одной сессии, не выводить.

пишу:

if($_SESSION['client_hot_events'] != $_REQUEST['idClient'])
{
...показываем события....

$_SESSION['client_hot_events'] = $_REQUEST['idClient'];

// присваиваем сессионной переменной ID клиента,
// события которого были показаны

}

Но! получаеться так, что значение переменной каждый раз перезаписаваеться на новое ID,
никак не соображу как быть.
 

Demiurg

Guest
при авторизации записать события в сессию, потом если событие дежит в сессии, показать его и стереть.
 

Krisha

pain in the neck
хм, эти события представляют собой нехилый набор данных, это типа как записная книжка для менеджера, он заходя на страницу клиента смотрит какие там события есть на сегодня, чтобы не пропустить, не думаю, что есть смысл это всё вытягивать из базы и запихивать в сессию...
 

Demiurg

Guest
ну пиши в сессию флаги только, а при показе вытаскивай все, что нужно из базы.
 

Krisha

pain in the neck
вот я и не могу врубить как эти "флаги" ставить :)
как запомнить, что для данного клиента я уже показал события...
 

Demiurg

Guest
я же говорю, ставищь флаг при логине, если нужно. а потом, там где можно и нужно выводить инфу проверяешь флаг и опускаешь.
 

RomikChef

Guest
Если я правильно понял этот запутанный вопрос.
значение переменной каждый раз перезаписаваеться на новое ID
Дорогой монстер криша.
Ты слышал о таком понятии, как "массив"?
 

RomikChef

Guest
$key=$_REQUEST['idClient'];
if(!$_SESSION[$key])
{
...показываем события....

$_SESSION[$key] = 1;
}
 

Krisha

pain in the neck
Да, Ромик, слышал, я в трех соснах заблудился :)
мерси...

проблемма решилась вот так:

if ($_SESSION['ShownEvents'][$_REQUEST['idClient']] != $_REQUEST['idClient']) {

... показали

$_SESSION['ShownEvents'][$_REQUEST['idClient']] = $_REQUEST['idClient'];
}
 

Krisha

pain in the neck
Автор оригинала: RomikChef
$key=$_REQUEST['idClient'];
if(!$_SESSION[$key])
{
...показываем события....

$_SESSION[$key] = 1;
}
Да, совсем забыл, Ромик, имхо этот твой вариант неверен, переменная не может иметь имя, начинающееся с числа, а $_REQUEST['idClient']; это у нас число
 

RomikChef

Guest
а где ты здесь увидел переменную, которая начинается на цифру?
 

Krisha

pain in the neck
я кривовато выразился, проще будет показать на вот этом примере:

session_start();
$_SESSION[5] = 1;
__________^

при этом в файле сессии не будет зарегистрированно никаках переменных... сам попробуй :)
 

Demiurg

Guest
>$_SESSION[5] = 1;
а зачем так делать ? $_SESSION['client'.$key]
 

Krisha

pain in the neck
Деми, об чем и речь, погляди на пример Ромика от 20.03.03 14:24
 

Demiurg

Guest
Так я не понял, ты решил проблему или нет ?
 

RomikChef

Guest
Чрезвычайно интересный факт!
Функционирование массива $_SESSION отличается от обычного функционирования массивов в PHP!
Не помогает, даже если взять число в кавычки!
Причем, все присвоения, которые сделаны до объявления элемента массива $_SESSION с ключом-цифрой, в сессию попадают, а после - уже нет!

твоя задача решается в этом случае очень просто
$key='id'.$_REQUEST['idClient'];

а вот по файлу сессий ты зря что-то отлаживаешь.
Не нужно вообще никогда его трогать.
 

Krisha

pain in the neck
Ромик, вот!! именно из-за этого "черезвычайно интерессного факта" я вчера и мучался, а по файлу сессии я ниче не отлаживаю, просто в один из моментов туды заглянул и выяснил, этот интерессный момент.

Деми, еще вчера решил, см. мое сообщение от 20.03.03 14:49
 
Сверху