長沙發上的對話(一) - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 長沙發上的對話(一) (http://www.webasp.net/article/12/11620.htm) |
| -- 作者:未知 -- 發佈日期: 2004-07-04 |
| 開始治療
心理醫生: 好。你今天感覺怎麼樣,維克多? 病人: 不太好,醫生。我近來感到有點憂鬱... 心理醫生: 那是為什麼,維克多? 病人: 我不知道,醫生。我睡眠不太好,而且我一點胃口也沒有。有一天我們去一個意大利餐館,要了通心 面 -- 但時當他們把它端上來的時候,我一點也吃不下去。我就一直看著它,在我的頭裡一直迴盪著「女高 音」的主題曲... 心理醫生: 家裡怎麼樣? 病人: 都很好,我想。Marge大部分時間都在廚房,試她從網上下載的菜譜。孩子們每天很早就出去了,一 般在吃飯時才看得見他們,但是現在他們開始在Burger King吃了。那我也不能責備他們。 心理醫生: 工作 - 都很好吧? 病人: 不太好 - 我有一個虐待成性的魔鬼老闆,他打算打我的生活變成象Dilbert Zone一樣! 心理醫生: 跟我說一說他吧。 病人: 好,你知道我是做什麼的 - 我是一個在Used Socks. Inc.的web程序員。下個星期我們的新網站就要 使用了,我們正在做著完全不同的東西 -- 一個在線商店,供人們出售他們的舊物。我們得到了一些好心人 的投資 - 6百萬元,如果我們成為在web最受歡迎的舊物門戶,我們還可得到更多的投資。 心理醫生: 聽上去對你不錯嘛。 病人: 你說的對。但是,然後有一天老闆進來,他說他交給我一項開發在線商店購物車的工作。他明確地要 求我用什麼叫「session」的東西。當然,只不過讓事情變得有趣,他說他想在兩天內做完並能運行...虐待 狂、變態! 心理醫生: 有問題嗎? 病人: 有,特別是首先我根本不知道「session」是什麼,或怎麼去用它。我意思是說,我原以為一個session 就是對一個病人的短期治療 - 有一點像我們正在做的一樣。 心理醫生: 哦, 維克多, 維克多...這就是麻煩你的事嗎?我想我可能有東西能幫助你... 西雅圖無狀態 開低級玩笑的人為了給能聽到談話的年輕女性留下印象,互相之間最經常說的事情之一就是:「HTTP是 一種無狀態協議,Internet是無狀態開發環境」。用簡單的話來講,HTTP(HyperText Transfer Protocal ) 協議,作為web的骨幹,不能夠記住與一個網站連接用戶的身份,所以對web頁的請求被看作是唯一和獨立的 連接,與在它之前的連接無論如何都沒有關係 -- 這一點與今天很多愛冒險的十幾歲的年輕人的行為很像, 他們每天喝到深夜,第二天早晨醒來對發生過什麼都不記得了,晚上再出去做同樣的事,一遍又一遍... 現在,如果你是漫無目的地從一個站點衝浪到另一個,沒有什麼問題。但是當你想從Amazon.com上買幾 本書會怎麼樣呢?「在一個無狀態的環境中,記住所有在你的購物單上的物品是非常困難的,因為HTTP協議 的這種無狀態的性質使得跟蹤選中物品是不可能的。 因此就要求一種能夠使記住狀態成為可能的方法,能夠跟蹤用戶的連接並且保存連接特定數據的東西。 因此產生了「cookie」,它可以允許Web 站點在客戶系統的一個文件中保存客戶特定信息,並且當任何時候 請求時都可以從文件中取出信息。所以,在上面的購物車例子中,被選中的商品可以加到cookie中,並且在 消費者結帳時,可以被取出並呈現在購物單中。 基於cookie的解決方案存在一個問題,那就是它要求cookie能夠被客戶所接受。所以,有另一種解決辦 法就是使用「session」,當一個客戶訪問一個Web站點時,用它來保存特定的一小塊數據。這個會話 (session)數據在整個訪問期間被保存下來。一個session可以被看成一個信息籃,它保存著主機的變量對。 這些變量對在整個訪間期間都存在,並且可以在任何時刻被處理。這個方法對協議的無狀態的特點提供了一 流的解決辦法,並且在今天很多大型的網站上,可以跟蹤和保存信息,用於個人和商業交易。 每一個被創建的session 都有一個唯一的標識串,這個串被發送到客戶端,同時在服務端也生成了同樣 唯一標識串的入口,或者放在文本文件或者在一個數據庫中。現在就可以註冊任何的session 變量 -- 這些 普通的變量可以保存文本或數值信息,可以通過session 被讀出,或寫入。 現在,如果你已經跟隨著開放源碼運動,你已經知道了PHP ,在這個星球上最熱門的腳本語言。最新的 版本是PHP4,包括了對session 的創建和管理的支持,在下面的幾頁中,我們將向你展示如何使用它。如果 你還在使用PHP3,不要失望 -- 我們也將涉及PHPLIB,它包括一組強大的PHP對象,可以在基於PHP3 的站點 上加入無縫的session管理。 在下面幾頁中,我們假設你已經有一個支持PHP4或PHPLIB的站點。如果還沒有,你應該下載這些包,並 且將它們安裝到你的開發機器上去。PHP4,是一個質量優良的代碼,可以在PHP站點 http://www.php.net找 到,最新的PHPLIB版本可以在http://phplib.netuse.de/找到。 |
| webasp.net |