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

  • Автор темы Автор темы Krisha
  • Дата начала Дата начала

Krisha

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

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

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

Задача:

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

пишу:

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

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

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

}

Но! получаеться так, что значение переменной каждый раз перезаписаваеться на новое ID,
никак не соображу как быть.
 
при авторизации записать события в сессию, потом если событие дежит в сессии, показать его и стереть.
 
хм, эти события представляют собой нехилый набор данных, это типа как записная книжка для менеджера, он заходя на страницу клиента смотрит какие там события есть на сегодня, чтобы не пропустить, не думаю, что есть смысл это всё вытягивать из базы и запихивать в сессию...
 
ну пиши в сессию флаги только, а при показе вытаскивай все, что нужно из базы.
 
вот я и не могу врубить как эти "флаги" ставить :)
как запомнить, что для данного клиента я уже показал события...
 
я же говорю, ставищь флаг при логине, если нужно. а потом, там где можно и нужно выводить инфу проверяешь флаг и опускаешь.
 
Если я правильно понял этот запутанный вопрос.
значение переменной каждый раз перезаписаваеться на новое ID
Дорогой монстер криша.
Ты слышал о таком понятии, как "массив"?
 
$key=$_REQUEST['idClient'];
if(!$_SESSION[$key])
{
...показываем события....

$_SESSION[$key] = 1;
}
 
Да, Ромик, слышал, я в трех соснах заблудился :)
мерси...

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

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

... показали

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

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

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

при этом в файле сессии не будет зарегистрированно никаках переменных... сам попробуй :)
 
>$_SESSION[5] = 1;
а зачем так делать ? $_SESSION['client'.$key]
 
Чрезвычайно интересный факт!
Функционирование массива $_SESSION отличается от обычного функционирования массивов в PHP!
Не помогает, даже если взять число в кавычки!
Причем, все присвоения, которые сделаны до объявления элемента массива $_SESSION с ключом-цифрой, в сессию попадают, а после - уже нет!

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

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

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