Сохранение сесионных переменных в базе данных MySQL
При разработке Ростовского магазина компьютерной техники, я столкнулся с необходимостью сделать возможность сохранять настройки пользователей. Причём я хотел сделать возможность сохранять настройки как авторизованных пользователей, так и тех, кто зашел на сайт и не зарегистрировался.
Для этого я поступил следующим образом: я сохраняю настройки отображения списка товаров в переменные сессии, и если пользователь авторизован, то и в соответствующее поле базы данных этого пользователя. При следующей регистрации я восстанавливаю перименные из куки или из базы при указании логина и пароля.
Т.к. в массиве сессионных переменных может быть много временных переменных, не имеющих отношения к настроке, то я добавил проверку и переброску во временный массив всех переменных, начинающихся с 'us_'.
Этот код отвечает за сохранение переменных текущей сесии в базе данных:
<?php
$ar=array();
foreach($_SESSION as $key => $value) if(substr($key,0,3)=='us_')$ar[$key]=$value;
if(isset($_SESSION['u_id'])){// если авторизованный пользователь
sql('UPDATE '.db_prefix.'users SET param="'.addslashes(serialize($ar)).'" WHERE id="'.$_SESSION['u_id'].'"');}
else // если пользователь неавторизован поставлю ему куку с параметрами настроки
@setcookie("param", urlencode(serialize($ar)), time()+60*60*24*30, "/");
?>
Комментарии:
Нету комментариев для вывода...