像是 PHP 提供的 Session 的基本運作原理是透過 Cookie 設定一串十六進位的數字給 PHPSESSID,然後在
/tmp
下放對應的 sess_[PHPSESSID]
檔案,檔案裡就放 Session Variable。舉個例子來說,User Login 後我們會通常會這樣寫:
// 假設前面已經確認身份了
session_start();
$_SESSION['user'] = $username; // 設定 $username 到 Session 裡
然後在其他檔案這樣檢查:
session_start();
if (isset($_SESSION['user'])) {
// 如果有 user 這個變數的話 blah blah...
}
對於小規模的 Web server 這樣做相當完美,因為使用者的 PHPSESSID 只是一個亂數對應到
/tmp
下的某個真正存放 Session 的檔案,使用者沒有辦法隨便亂改。同時使用者也沒有辦法猜出其他的人使用的 PHPSESSID。(當然這裡的前提是 PHP 的 Sessoion 模組寫的夠好,不會讓人用其他方法「猜」出來)但當網站不斷的成長後,就會遭遇到一個問題:假設我有兩台 PHP server,這兩台存放 PHP Session 資料的
/tmp
當然是分開的。如果使用者在 web1 登入後,下一個連線是到 web2 上面,在 web2 上的 PHP 就沒辦法認出使用者登入過了。這些問題留在下一篇提出一些解法。
1 則留言:
South Koreais the most recent nation to see a major new gaming development after it permitted the development of its first foreign-owned casino. These are among Korea’s hottest video games which may be accessed from any Korean on-line casino. There are transport and other leisure costs that come 1xbet with physical gaming. A lot of time is also be|can be} spent finding one of the best outfit for hitting the casino and traveling to the actual casino, which makes on-line casino gaming the best option|the best choice|the most suitable choice} as is not a|there is not any} specified costume code or venue to play. One of the most significant developments in the international gaming trade is the introduction of on-line casino gaming.
張貼留言