У меня есть пользователи, которые пишут статьи и когда они оставляют там компьютер некоторое время и возвращаются, затем отправляют сообщение, автор/user_id записывается как значение NULL. Я предполагаю, что сеанс истекает. У меня есть:Проблема с куки-файлом/истекающий сеанс
ob_start();
session_start();
if(isset($_SESSION['user_id'])) {
$ext = time() + 31560000;
setcookie('name', $_SESSION['user_id'], $ext);
}
В верхней части страницы индекса, где пользователь перенаправляется при входе в систему.
Кроме того, это то, что происходит, когда они на самом деле войти:
$user_id = get_user_id($some_variable); // get's the user_id
$username = get_username($some_variable); // get's username
$_SESSION['user_id'] = $user_id;
?>
<script type="text/javascript">
window.location = 'http://site.com/<?php echo $username; ?>';
</script>
<?php
exit();
ли это правильно настроено, и почему сессии пользователя будут истекающие? Они не выходят из браузера, это просто бездействие. Что может быть причиной этого?
Проверьте, что настройки вашей 'php.ini' [session.gc_maxlifetime] (http://www.php.net/manual/en/session.configuration. php # ini.session.gc-maxlifetime) установлено значение. Значение по умолчанию - 1440 секунд или 24 минуты. По истечении этого времени существует вероятность того, что данные сеанса будут удалены старым. – drew010
Будет ли session.gc_maxlifetime = 1000000 (случайное число) правильным способом записать его в php.ini? – Graham
Да, это сделало бы это глобально. Вы также можете использовать [ini_set] (http://php.net/ini_set) из своего сценария, но если вы это сделаете, вы должны убедиться, что ВСЕ ваши скрипты, которые взаимодействуют с сеансами, используют одни и те же значения. Удостоверьтесь, что он достаточно велик для ваших нужд, но не настолько большой, что вы получите массу старых данных сеанса на сервере. – drew010