Posts Tagged ‘ session

[轉載][PHP]PHP 使用無限生命期 Session 的方法

轉載自: 中文 PHP 資訊站


在PHP4.0中加入了對Session的支援,方便了我們很多程式,比如購物車等等。

在很多論壇中,Session也用於處理用戶的登陸,記錄下用戶名和密碼,使得用戶不必每次都輸入自己的用戶名和密碼!但是一般的Session的生命期有限,如果用戶關閉了瀏覽器,就不能保存Session的變數了!那麼怎麼樣可以實現Session的永久生命期呢?

大家知道,Session儲存在伺服器端,根據用戶端提供的SessionID來得到這個用戶的文件,然後讀取文件,取得變數的值,SessionID可 以使用用戶端的Cookie或者Http1.1協定的Query_String(就是訪問的URL的"?"後面的部分)來傳送給伺服器,然後伺服器讀取 Session的目錄……

Read more

Cookie 是什麼?

很多網站在你瀏覽網頁之後,會在你的電腦系統中留下一些小小的檔案,也就是所謂的 Cookie。當你再去瀏覽這些網站時,系統便會去讀取這些 Cookie 再更新一遍。

Cookie 不是「餅乾」,Cookie 是伺服器暫存在你電腦上的一筆資料,好讓伺服器用來辨認你的電腦。就好比是格林童話故事中,沿途撒下麵包屑避免在森林中迷路的小孩。

為什麼需要 Cookie?

HTTP 的協議本身是「無記憶狀態 (Stateless) 」的,無論是用戶端還是網頁伺服器,每一個頁面都沒有關聯,每一次的請求都是單獨的請求。伺服器藉由 Cookie 來讓同一個用戶的各項操作都可以產生關聯。

當你在瀏覽網站的時候,伺服器會先送一小小資料放在你的電腦上,Cookie 會幫你在網站上所打的文字或是一些選擇都紀錄下來。當下次你再光臨同一個網站,網頁伺服器會先查看有沒有上次留下的 Cookie 資料,有的話,就會依據 Cookie 裡的內容來判斷用戶,送出特定的網頁內容給你。

Cookie 的使用很普遍,許多有提供個人化服務的網站,都是利用 Cookie 來識別用戶,以方便送出為用戶量身而做的內容,像是 Web 介面的免費 email 網站,都要用到 Cookie。

Cookie 會不會有危險?其實 Cookie 中記載的資料相有限,Cookie 是安全的。網站不可能經由 Cookie 獲得你的 email 地址或是其他私人資料,更沒有辦法透過 Cookie 來存取底的電腦。

但是如果你實在不喜歡網頁伺服器亂丟餅乾(Cookie)到你家,當然可以讓瀏覽器拒絕網站存放 Cookie 到你的電腦。

IE 瀏覽器從「工具」選單 → Intertnet 選項 → 安全性,按「自訂層級」,到 Cookie 的部分,全都設為關閉,按確定,關閉瀏覽器,再重新啟動瀏覽器即可。

當你關閉 Cookie 之後,很多網站的個人化服務功能很可能也不能再使用了。

IE 的 Cookie 預設存放位置是在:C:\WINDOWS\Temporary Internet Files

你可以直接刪掉這裡面的東西或是利用「Internet 選項」裡的清除檔案按鈕來清除。

Cookie 的內容

大家想不想知道哪個網站有設 Cookie?你的 Cookie 資料又為何?其實,用一行簡單的 JavaScript 指令就可以一清二楚了。

首先,開啟一個網站,例如 http://www.google.com ,一旦網站開啟後,在瀏覽器的位址列中輸入以下的一行 JavaScript 指令:

javascript:alert("Cookie:"+document.cookie)

javascript:document.write(document.cookie)

按下 Enter 後,你會見到跳出一個小警告視窗,上面便會標明出你的 Cookie 資料。試試看吧! 當然,如果你的瀏覽器的 Cookie 功能被關閉,那你當然就見不到囉。

比較新的瀏覽器 Chrome 與 Firefox 都有內建「開發人員工具」,只要按 F12 開啟「開發人員工具」,可以在「Application」或「儲存空間」頁籤看到網站所儲存的 Cookie 內容。

什麼是 Session?

講到 Cookie 就會有人提到 Session。

Session 的資料是存放在 Web 伺服器端。用解釋的不好解釋,我們先來舉個例子...

有一家咖啡店要舉辦咖啡買三送一的活動,若以「Cookie」或「Session」的作法來看:

  • Cookie:
    相當於是店家發給你一張「小卡片」,每次你來買一杯咖啡就在卡片上蓋個印章,集滿三個印章,那咖啡店就會送你一杯免費的咖啡。
    其中,購買咖啡的記錄是留在你攜帶的卡片上,如果卡片遺失你的記錄就不存在了。
  • Session:
    相當於是店家請你加入他們的會員,然後發給你一張「會員卡」(Session ID)。每次你拿會員卡來買咖啡都會在公司的電腦裡留下記錄,買了三杯咖啡就會送你一杯免費的咖啡。
    其中,購買咖啡的記錄是儲存在店家的電腦裡,如果會員卡遺失了可以透過核對會員的資料來重新取得會員卡。未來這張會員卡甚至可能在它的連鎖店使用。

可以說,Cookie 只做一件事,就是存取伺服器暫存在客戶端的資料。而 Session 則是一個涵蓋範圍比較廣、比較完整的保存機制。並且 Session 仍需藉由 Cookie、網址或表單...等三種方式來識別用戶的 Session ID,才能接續之後伺服器要做的事情。

只要「網站是將任何用戶的資料儲存在伺服器,並且用 Cookie、網址或表單來識別單一用戶」,這樣就已經是在實作 Session 了。由於「識別用戶」是很普遍的功能,你所使用的程式框架 (Framework) 有可能在無聲無息之中就已經幫你完成整個機制了,你只要把心思用在程式的其它部份即可。

參考網頁

return top