2014-02-07 22 views
0

我把數據放到會話:會議destructrion和更新時,會話到期

session_start(); 
$_SESSION['color']='green'; 

下一次,當我收到查詢會話過期。會發生什麼?舊會話數據是否會被銷燬,並且會使用session_start()創建新會話?我能否訪問從previos請求中存儲的數據?

回答

1

session_start()開始一個新的會話或使用現有之一。

因此,如果會話在$_SESSION[]之前沒有銷燬,變量仍然存在。

$_SESSION['color']的值是 '綠色',直到:

  • 在瀏覽器關閉
  • 會話未設置/銷燬
  • 的變量沒有設置

到那裏訪問$_SESSION[]變量必須是頁面頂部的session_start(),該頁面應該訪問$_SESSION[]變量。

+0

謝謝,所以你說的是會話過期日期不受服務器控制?你知道任何關於PHP會話的好消息嗎? –

+0

當然,在php.ini文件中配置的服務器是有限制的。但每次調用session_start()時,時間都會被重置。你可以(例如)看看[這裏](http://www.sitepoint.com/php-sessions/) - 但在互聯網上有很多關於這方面的**信息。 –

+0

謝謝!所以直到我明確銷燬會話,它不會被PHP機制破壞,對吧? (除了在php.ini中配置的之外) –

1

會發生什麼?舊會話數據是否會被破壞,並使用session_start()創建新會話 ?

在瀏覽器關閉或您隱式呼叫session_destroy();之前,會話變量仍然存在,您可以在任何頁面上訪問它們。

我可以訪問從previos請求中存儲的數據嗎?

是的,你可以。只需在您的PHP代碼的頂部添加session_start();,並且您可以像echo $_SESSION['color'];

+1

謝謝,你現在已經說清楚了。 –

1

那樣訪問它。如果以前啓動了會話,Session_start()將恢復現有會話。所以,你的代碼只是罰款

0

更好的你這樣做:接連命中,否則

if (session_id() == "") { 
    session_start(); 
} 

&你的價值,也不會改變太多