PHP 之Section與Cookie使用總結

來源:互聯網
上載者:User

SESSION與COOKIE區別:

  Session 將資訊儲存在伺服器上.伺服器在接受到唯一的SESSION_ID後,根據這個ID擷取相關資料,然後將資訊傳遞到用戶端(瀏覽器).
  Cookie 是將所有資訊以文本的形式存在本地檔案,並由用戶端(瀏覽器)進行管理與維護.
因為Session 資料存放區在server端,所以遠程client無法對資料進行修改;而Cookie儲存在client本地,容易被擷取和篡改.所以Session安全性較高.

SESSION 介紹:

  PHP5 後session被設定為全域變數,可以通過 $_SESSION[session_id] 來擷取.當頁面啟動SESSION會話,會在伺服器中產生一個帶唯一id的SESSION,這個SESSION在生命週期結束前一直有效.當關閉網頁或結束生命週期後,session會在伺服器中自動登出.

建立一個session 會話需要經過一下4個步驟:

  a)啟動會話..
    方法有2種: bool session_star(); boolean session_register(string name);
  b)註冊回話.
    會話變數被啟動後,全部保全在$_SESSION數組當中.通過數組$_SESSION建立一個會話變數很簡單,只需要給該數組添加一個變數即可.
  c)使用會話:
    一般操作:判斷對應session_id的SESSION是否存在.不存在建立一個,存在 則通過 $_SESSION[session_id] 使用.
  d)刪除會話.
unset($_SESSION[session_id]);//刪除單個.
    unset([$_SESSION]);//刪除整個,將禁止整個會話功能,切無法恢複.
   $__SESSION=array();//刪除整個,可恢複.
   session_destroy();//結束當前會話..

SESSION的生命週期:

  1.控制session 生命週期的方法:
   一. 前提條件:用戶端支援COOKIE!
    方法:
      a>通過Session來完成.
         void session_set_cookie_params(int lifetime[,string path][,string domain][,bool secure]);
         bool setcookie(string name [,string value] [,int expire] [,string path] [,sting domain] [,secure]);
      b>通過Cookie 來完成.
二. 前提條件:用戶端不支援COOKIE!
     一旦用戶端不支援cookie,SESSION就不能在頁面間傳遞,解決辦法:
     a>.在登陸前提示使用者開啟cookie.
     b>.表單POST/GET方式,來傳遞SESSION_ID.

     c>.設定php.ini檔案中的session.use_trans_sid=1 或編譯時間開啟-enable-trans-sid;
     d>.通過檔案或資料庫方式傳遞SESSION_ID;

伺服器上對SESSION效能最佳化:
  在伺服器中,如果將所有使用者的session都儲存到臨時目錄中,會降低伺服器的安全性與效率.
  解決方案:將SESSION儲存到伺服器上的資料庫或者臨時檔案中.
  臨時檔案:
    string session_save_path(string path);
  資料庫:
    session 儲存在臨時檔案時,當網站瀏覽量很大的時候,將會導致查詢Session的效率很低,推薦資料庫儲存形式.
    bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);//將session_id 儲存與資料庫中的函數.

SESSION 緩衝:

  緩衝即將頁面中的某些資訊儲存到用戶端指定的檔案夾中,且可以設定一定的有效時間.(已經經過第一次訪問,且儲存)在這個有效時間內,當再次訪問頁面,則可直接從緩衝中讀取內容,從而提高頁面瀏覽效率.

  string session_cache_limiter(string cache_limiter); //緩衝函數.
  int session_cache_expire([int new cache_expire]); //有效時間.

COOKIE介紹:

  cookie 是一種遠程用戶端儲存資料和跟蹤識別使用者的機制.是伺服器臨時存放資料在本機使用者的一個文字檔.文字檔格式:"使用者名稱@網站地址[數字].txt"

COOKIE 常見功能:

  a)記錄訪客的某些資訊. b)在頁面間傳遞變數; c)將頁面內容儲存到cookie中提高下次訪問速度.
慎用COOKIE:
  a)不是所有的瀏覽器都支援cookie.
  b)資料是以明文的方式儲存在本地,不適合敏感的資訊,未加密的資訊.
  c)不同類型瀏覽器對cookie 檔案有大小,個數限制:比如最多隻能存300個cookie 檔案,每個大小不超過4KB,每個網域名稱最多支援20個cookie檔案.如果超過顯示,會隨機刪除.
建立COOKIE:
  bool setcookie(string name [,string value] [,int expire] [,string path] [,sting domain] [,secure]);
讀取COOKIE:
  $_COOKIE[];
刪除COOKIE:
  a). setcookie("id", "",time()-1);//值為空白,有效時間小於目前時間.0為直接刪除COOKIE.
  b).手動刪除.在用戶端找到臨時存放cookie的檔案.

setcookie()函數後,要執行重新整理,cookie才能取得資料:
  個人理解是因為session 跟cookie都是在client 跟server之間傳輸,在頁面顯示前,我們就必須擷取到相應的資料.所以一般是在擷取 http:// 或https://時必須帶上session 或cookie..當在執行setcookie()時,僅僅在本機存放區了cookie 但是地址上並沒有帶上cookie..因而需要重新整理,讓伺服器給地址協議帶上cookie發送個用戶端,這樣才能取得到值..

  正是以上session_star(),setcookie()前,html頁面不能有輸出...所以說cookie 或者session認第一,就沒人敢認第二.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.