Сохраняю данные в сесси вот таким образом: PHP: <?php include_once 'Session.php'; Session::start(); $v = $_POST['v']; ?> <body> <form action="6.php" method="POST"> <input name="v" type="text" value="<?php echo $v;?>"> <input name="t" type="text" value="<?php echo $_POST['t'];?>"> <input name="ok" type="submit" value="Send"> <?php $array = $_POST; if (isset($_REQUEST['ok'])) { Session::set('user', $array); } print_r($array); echo $_POST['t']; ?> Вывожу их на другой странице таким образом: PHP: <?php include_once 'Session.php'; Session::start(); $res = Session::get('user', $array); $a = $res['v']; echo $a; ?> Но данные хранятся только в рамках одного браузера... да и там хранятся не долго - а мне надо чтобы хранилось всегда... пока не изменят форму - как сделать не подскажите?
Сессии на то и сессии, что длятся в течении сессии (прошу прощения за тавтологию). Я точно не помню, можно ли в скрипте задавать длительность сессии (по-мойму, нет), но эти параметры точно указываются в настройках сервера и зависят от политики хостера (хотя не слышал, чтобы кто-то их менял). Почему в пределах одного браузера - да потому, что идентификатор сессии хранится в кукисах, дальше пределов одного браузера, с которым взаимодействует скрипт, он выбраться не может, по этому единственная альтернатива - фиксировать IP пользователя в качестве альтернативного идентификатора сессии, но это чревато последствиями (все компьютеры моего ВУЗа выходят через один прокси). А вообще если уже пишешь класс и при этом хочешь, чтобы все работало "как надо", пиши его полностью сам - и механизм передачи идентификаторов, и механизмы хранения/извлечения информации.
stakanych часто полезно начинать с задчи, а не сразу с конечной реализации. секундё? две? десять? минуту?
Хронятся час - может два... я просто думал что один раз присвоив переменным сохраненные в сессии данные они там и будут хранится до того как следующий раз им чего то другого не присвоят... Вообще то я еще не пишу класс... а позаимствовал у друга, хочу чтобы все работало - но пока все сам написать не могу - мозгов пока не хватает - и многие вещи ставят в тупик...
А зачем БД, как-то это неправльно, сессии более естественно будет сохранять в файлы, в которых буду храниться сериализованные массивы данных ($data [$session_id] [$session_var_name] => $value). P.S. Или в отдельных файлах, где название файла - session_id, а внутри уже одномерный массив. Такой вариант даже лучше будет - не придется сереализировать/десериализовать кучу чужих данных.
чем? То, что стандартный механизм по умолчанию использует файлы, не делает этот вариант априори единственно верным. Если рассматривать сессии, как просто идентификатор наличия пользователя на сайте, то его вообше, имхо, хранить после ухода пользователя не надо. Если говорить про всё ту бодягу, что называется «пользовательские данные», то уж лучше я их БД положу. сейчас 440Hz придёт и поделится ссылкой на свои рассуждения с Фанатом что есть сессия…
В том то и дело, что этот механизм будет зависеть от наличия и работоспособности баз данных. Плюс, мы не выполняем запросы СУБД, используя низкоуровневые и более надежные технологии. Просто как-то неестественно, для такого мобильного механизма, как сессии, использовать громоздкую систему.
пфф, да пусть данные во время сеанса хранятся где хотят, в файлах, мемкэше, даже в хидден-полях (если сильно извратнуться). Разговор о хранении пользовательских данных между сеансами. И теперь, пожалуйста, ещё раз о файлах и БД. В догонку. Стандартный механизм сессий для каждого чтиния/записи в файл использует блокировку, которая тоже не мгновенная. БД — это не только mysql, postgresql и т.д., но и SQLite. И, наконец, СУБД — это как раз и есть хорошо структурированные файлы с оптимизированной системой поиска.