Квартиры, дома, земельные участки Краснодарского края без посредников. Объявления собственников недвижимости.
Реклама здесь
Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Сохранение сесионных переменных в базе данных 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"/");
?>
Скопировать в буфер

Этот код устанавливает переменные сессии после ввода логина/пароля


<?php
// ищу пользователя в базе данных и заполняю массив $data
$ar=unserialize($data['param']); // устанавливает настроки в переменные сессии
foreach($ar as $key => $value) if(substr($key,0,3)=='us_')$_SESSION[$key]=$value;
?>
Скопировать в буфер

Этот код устанавливает переменные сессии если есть кука и пользователь неавторизован


<?php
if (isset($_COOKIE['param'])){
   
$ar=unserialize(urldecode($_COOKIE['param'])); // устанавливает настроки в переменные сессии
   
foreach($ar as $key => $value) if(substr($key,0,3)=='us_')$_SESSION[$key]=$value;
?>
Скопировать в буфер

В этом блоке кода есть небольшая уязвимость. Надеюсь Вы догадаетесь как её "залатать".

как познакомиться с девушкой

© Copyright 2008-2012 by KDG