Управляем временем жизни сессии.

sam3000

Создатель
Регистрация
2 Окт 2007
Сообщения
13
Реакции
1
Авторизация реализована на сессиях. Использовал все варианты предложенные гуглем и на сайте/форуме php.net
Пробовал даже указывать время для cookies (сессия это специфические куки же).

Кто-нибудь реализовывал это?
 
Может конечно глупость сморожу, но всё же... если сделать в базе метку времени создания сессии, а в скрипте проверку на срок действия сессии. При окончании срока убивать сессию и перебрасывать пользователя куда нужно...
PHP:
<?php
if(time()>$base['end_session']){//где $base['end_session'] взятая из базы метка времени окончания срока действия сессии
session_destroy();
  foreach($_SESSION as $key=>$val)
    unset($_SESSION[$key]);
  ?>
<script language=javascript>parent.location.href='./index.php';</script>
<?php
}
?>
ну дето так...
 
Авторизация реализована на сессиях. Использовал все варианты предложенные гуглем и на сайте/форуме php.net
Пробовал даже указывать время для cookies (сессия это специфические куки же).

Кто-нибудь реализовывал это?
PHP:
ini_set('session.gc_maxlifetime', 'твое_время_в_секундах');
 
есть несколько вариантов сесии
1- полным ее сохранением и бд или фаиле, для чего для того что бы жестко отслеживать кто когда и что делал, так же и время можно держать, для неактивных сессий, более 10 минут отрубать это уже кроном вычищать.
2- пологатся на встроеный механизм, и делать время жизни сесии, + в добавок в самой сесии хранить время, тем самым если человек поднял старую сессию, то просто отрубить ее.

PHP:
session_cache_expire( 20 ); // 20 минут время жизни кеша сессии
session_start(); 
$inactive = 1200; // 60*20 = минут
if(isset($_SESSION['start']) ) {
	$session_life = time() - $_SESSION['start'];
	if($session_life > $inactive){
		header("Location: user_logout.php");
	}
}
$_SESSION['start'] = time();
 
PHP:
ini_set('session.gc_maxlifetime', 'твое_время_в_секундах');
Пробовал. Может как-то не правильно, но через 20 минут сессия умирала.

dino, эм, мне не это надо.

XSiteCMS, спасибо, такого варианта не видел. Завтра попробую, отпишусь.
 
Пробовал. Может как-то не правильно, но через 20 минут сессия умирала.

dino, эм, мне не это надо.

XSiteCMS, спасибо, такого варианта не видел. Завтра попробую, отпишусь.
Если у тебя сессия хранится в файлах(по умолчанию временная директория temp(или tmp)), то ее содержимое очищается через некоторое время независимо от времени жизни сессии. Попробуй указать свою директорию для хранения сессий.
 
Назад
Сверху