Программирование > PHP

Запись/Чтение сессий в MySQL?

(1/2) > >>

:
Как организовать?

Мне надо следующее:

1. Пользователь авторизуется (логин, пароль).
2. В его строке есть ячейка session, в неё и пишется сессия.
3. Пользователь играется, соответсвенно сессия обновляется
4. Он уходит, а сессия остается, а при возвращении на сайт (авторизации), ему должна загрузится его уже существующаяя сессия...

Как это осуществить?

У меня в основном сложность с записью сессии в MySQL. Как правильно записывать и потом считывать и привязать к конкретному юзверю?

Wowik:
Кукисы однозначно...

Britva:
Unregistered

$session_key="id";
$session_value = "data";
$session_time = "expire";
$db = "";
$expire =  300;

function sess_open($save_path, $session_name){
   global $dbhost, $dbuser, $dbpasswd, $db;
   if (! $db = mysql_pconnect($dbhost, $dbuser, $dbpasswd)){
      echo mysql_error();
      exit;
   }
   return true;
}
function sess_close(){
   return true;
}
function sess_read($key){
   global $db, $dbname, $t_sessions, $session_key, $session_value, $session_time;
   $query = "select $session_value from $t_sessions where $session_key = \'$key\' and $session_time > UNIX_TIMESTAMP()";
   $result = mysql_db_query($dbname, $query, $db);
   if($record = mysql_fetch_row($result)){
      return $record[0];
   } else {
      return false;
   }
}
function sess_write($key, $val){
   global $db, $dbname, $t_sessions, $expire;
   $value = addslashes($val);
   $query = "replace into $t_sessions values (\'$key\', \'$value\', UNIX_TIMESTAMP() + $expire)";
   $result = mysql_db_query($dbname, $query, $db);
   echo mysql_error();
   return $result;
}
function sess_destroy($key){
   global $db, $dbname, $t_sessions, $session_key;
   $query = "delete from $t_sessions where session_key = \'$key\'";
   $result = mysql_db_query($dbname, $query, $db);
   return $result;
}
function sess_gc($maxlifetime){
   global $db, $dbname, $t_sessions, $session_time;
   $query = "delete from $t_sessions where session_time < UNIX_TIMESTAMP()";
   $result = mysql_db_query($dbname, $query, $db);
   return mysql_affected_rows($db);
}
session_set_save_handler("sess_open","sess_close","sess_read","sess_write","sess_destroy","sess_gc");

Макс:
Britva А разве сериализацию/десериализацию в этих функциях делать не нужно?

Britva:
поясни

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии