我有寫文章的用戶,當他們離開那裏的計算機一段時間後回來然後提交一篇文章作者/ user_id被記錄爲NULL值。我假設會議即將到期。我有:發佈cookies /到期會話
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 2012-03-27 03:42:15
會議session.gc_maxlifetime = 1000000(隨機數)是正確的方式寫在php.ini? – Graham 2012-03-27 03:44:41
是的,它會在全球範圍內做到這一點。您也可以使用腳本中的[ini_set](http://php.net/ini_set),但如果這樣做,則必須確保所有與會話交互的腳本使用相同的值。確保它的大小足夠滿足你的需求,但不是那麼大,最終會在服務器上產生大量的舊會話數據。 – drew010 2012-03-27 03:46:54