DElET SESSIOn from Server

panika

Новичок
DElET SESSIOn from Server

Авторизация на моем сайте создана с помощью сессий и БД. в сессию записываеться логин $_SESSION['login'].
Если кто-либо авторизвываеться, я хачу чтобы сессия с этим логином удалялась с сервера, чтобы тот человек который перед этим был залогинен перестал существовать в сессиях.
Может я написал глупость и можно решить куда проще, но гугл на этот вопрос умалчивает.

P.S.: Если вы просто дадите мне ссылку на мануал, то пожалуйста будьте добры намекните где в мануале искать ответ на мой вопрос.
P.S.S.: Отношусь с полным уважением к програмистам отвечающим на наши вопросы.

-~{}~ 12.12.09 19:03:

Этот вопрос сейчас волнует меня больше всего. Если ктото знает ответ не молчите пожалуйста.
 

С.

Продвинутый новичок
Все очень очевидно. Надо поискать в других сессиях такой же login и если найдется, то удалить данные той сессии.

Либо второй вариант - записывать в учетную запись пользователя ID сессии при логине. Затем пускать только если текущая сессия с ней совпадает.
 

panika

Новичок
Автор оригинала: С.
Надо поискать в других сессиях такой же login и если найдется, то удалить данные той сессии.
Вот именнно это я и имел хочу сделать, но каким образом это сделать не представляю. даже гугл не помогает, если кто знает функцию, напишите.

З.Ы, второй вариант оставляю на 2 план, потому что ищу более оптимальный.
 

ps2007

Новичок
Re: DElET SESSIOn from Server

Автор оригинала: panika
я хочу чтобы сессия с этим логином удалялась с сервера, чтобы тот человек который перед этим был залогинен перестал существовать в сессиях.
Как вы себе представляете залогиненного пользователя без использования сессий ?
 

С.

Продвинутый новичок
Ты, подруга, еще не представляешь себе, какой из этих вариантов более оптимальным окажется.

Для первого варианта функцию знаю: unlink() называется.
 

dimagolov

Новичок
С., а может ты помолчишь?
panika, во-первых http://phpfaq.ru/session

Если кто-либо авторизвываеться, я хачу чтобы сессия с этим логином удалялась с сервера, чтобы тот человек который перед этим был залогинен перестал существовать в сессиях.
значит в базу нужно записывать SID текущего пользователя, а если там уже есть другой SID для этого пользователя, то просить авторизоваться по-новому (снимать авторизацию в сессии, удлять "авторизующие" переменные). при этом о сессионных файлах думать не стоит, о них сам пхп думает.
 

С.

Продвинутый новичок
dimagolov, недостаточной молчаливостью я не страдаю. А тебе обязанности завуча на себя брать не стоит. Дай человеку самому осознать почему вариант, который он в данный момент крутит у себя в голове полон недостатков.
 

Фанат

oncle terrible
Команда форума
Боюсь, с осознанием тут будет туго.
и к тому же вряд ли это подруга :)
 

panika

Новичок
dimagolov
ничего нового я там не узнал.
*****
ты прав я не подруга.

-~{}~ 13.12.09 11:29:

остаеться как сказал dimagolov
использовать SID. спасибо за ответы.

-~{}~ 13.12.09 12:15:

Написал Class:
PHP:
class Logout {
    var $mysqlhost = 'localhost';
    var $mysqluser = 'root';
    var $mysqlpass = '';
    var $mysqldatabase = 'db';
    var $mysqltable = 'users';
	var $sessionvar = 'login';
	
    function _construct($host,$user,$password,$database,$table = ''){
        $this->mysqlhost = $host;
        $this->mysqluser = $user;
        $this->mysqlpass = $password;
        $this->mysqldatabase = $database;
		if($table!=''){
			$this->mysqltable=$table;
		}
        return;
    }
	
    function _destruct(){
        return true;
    }
	
    function update(){
		if(array_key_exists($this->sessionvar, $_SESSION)){
			$login = $_SESSION[$this->sessionvar];
			$mysqli = new mysqli($this->mysqlhost,$this->mysqluser,$this->mysqlpass,$this->mysqldatabase);
			$sid = session_id();
			if($result = $mysqli->query("SELECT `sid` FROM `".$this->mysqltable."` WHERE `login`='".$login."' AND `sid`='$sid' LIMIT 1")){
				if($result->num_rows == 0){
					session_destroy();
				}
			}
			
			$mysqli->close();
		}
        return;
    }
}
Запускаю его в конфиге:
PHP:
$logout = new Logout($h_server,$h_user,$h_pass,$h_db,$table_users);
$logout->update();
Выдает ошибку, мол я не правильно указал БД. видимо функция _construct не прокатывает и переменная не записываеться. Что я не так делаю?
 
Сверху