PHP學習記錄(session與cookie)

session

什麼是sessionphp

  • session在計算機中,尤爲在網絡應用中,稱爲"會話控制";具體到web中的session指的就是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所通過的這段時間,也就是用戶瀏這個網站所花費的時間。所以從上述的定義中能夠看到,session是一個特定的時間概念。

爲何要使用sessionweb

  • HTTP協議是一種無狀態的協議,即同一個客戶端的本次請求和上次請求沒有對應關係,http服務器並不知道這兩個請求來自同一個客戶端;優勢在於減輕服務器的壓力,缺點在於每次請求會傳輸大量重複的內容信息
  • session提供在PHP腳本中定義全局變量的方法,使得這個全局變量在同一個session中對於全部的PHP腳本文本內都有效。因此,session是基於HTTP服務器的用於保持狀態的方法;
  • session容許經過將數據存儲到HTTP服務器中,以在整個用戶會話過程當中保持該數據;因此,session不只是一個時間概念,還包括了特定的用戶和服務器;

session的工做原理sql

  • 會話由一個惟一標識符標識,可以使用session_id函數讀取此標識符。爲PHP應用程序啓用會話狀態時,將檢查應用程序中每一個頁面請求是否有瀏覽器發送的sessionID值。若是未提供任何sessionID值,則PHP將啓動一個新會話,並將該會話的sessionID值隨響應一塊兒發送到瀏覽器。
  • 默認狀況下,sessionID值存儲在cookie中,也能夠實如今URL中存儲sessionID
    只要一直使用相同的sessionID值來發送請求,會話就被視爲活動的,若是特定會話的請求間隔超過指定的超時值(以秒爲單位),則該會話被視爲已過時。若是使用過時的sessionID值發送的請求將生成一個新的會話

session相關的函數chrome

/*
 * session_start
 * 描述:啓動新會話或者重用現有會話
 * 語法:bool session_start([array $options = []])
 * ---在服務器上建立了一個sessionID,並建立了一個存儲session的文件
 * 說明:
 * A. $options參數是一個關聯數組,若是提供的話,則會用其中的項目覆蓋"會話配置"中的配置選項;
 * B. 若是經過GET或者POST方式,或者使用cookie提交了會話ID,則會重用現有會話
 *
 * session_id
 * 描述:獲取/設置當前會話ID
 * 語法:string session_id([string $id])
 * 說明:
 * A. 若是指定$id參數的值,則使用指定值做爲會話ID
 * B. 若是設置$id參數的值,必須在調用session_start()函數以前調用session_id()函數
 *
 * session_name
 * 描述:讀取/設置會話名稱
 * 語法:string session_name([string $name])
 * 說明:
 * A. 若是指定$name參數,session_name()函數會更新會話名稱,並返回原來的會話名稱;
 * B. 若是指定$name參數,必須在調用session_start函數以前調用session_name()函數
 *
 * session_destroy
 * 描述:銷燬一個會話中的所有數據
 * 語法:bool session_destroy()
 *
 * chrome瀏覽器cookies存儲地:
 * ~/Library/Application Support/Google/Chrome/Default/Cookies
 * 將Cookies加擴展名sqlite,而後用sqlite工具打開Cookies
 */

PHP配置中session片斷數組

/*
 * 在/Applications/XAMPP/etc/php.ini文件中能夠查看下列片斷:
 *
 * session.auto_start(boolean)
 * 描述:session.auto_start指定會話模塊是否在請求開始時自動啓動,默認爲0(不啓動),通常不進行修改該配置;
 *
 * session.name(string)
 * 描述:指定會話名以用作cookid的名字,只能由字母數字組成,默認爲'PHPSESSID';
 *
 * session.save_handler(string)
 * 描述:定義用來存儲和獲取與會話關聯的數據的處理器的名字,默認爲files,即文件;
 *
 * session.save_path(string)
 * 描述:定義傳遞給存儲處理器的參數,若是選擇默認的files文件處理器,則值則是文件的路徑;
 *
 * session.gc_maxlifetime(integer)
 * 描述:指定過了多少秒以後數據就會被視爲"垃圾"並被清除;
 *
 * session.gc_probability(integer)、session.gc_divisor(integer)
 * 描述:定義在每一個會話初始化時啓動gc進程的機率,此機率經過gc_probability/gc_divisor計算,值爲1000,表示爲千分之一
 *
 */

cookie

什麼是cookie瀏覽器

  • HTTP cookie也叫Web cookie或者瀏覽器cookie,是服務器發送到用戶瀏覽器並保存在瀏覽器上的數據,它會在瀏覽器下一次發起請求時被攜帶併發送到服務器上;
  • HTTP cookieHTTP標頭的組成部分;
  • session是存儲在服務器端,cookie是存儲在瀏覽器端

cookie的做用服務器

  1. 會話狀態管理(如用戶登陸狀態、購物車):如十天自動登陸
  2. 個性化設置(如用戶自定義設置)
  3. 瀏覽器行爲跟蹤(如跟蹤分析用戶信息)

cookie相關的函數cookie

/*
 * setcookie函數
 * 描述:設置cookie
 * 語法:bool setcookie(string $name[, string $value = ""[, int $expire = 0[, string $path = ""[, string $domain = ""]]]])
 * 說明:
 * A. $name參數用於指定cookie名稱;
 * B. $value參數用於設置cookie值;
 * C. $expire參數用於設置cookie的生命週期(Unix時間戳);
 * D. $path參數用於設置服務器上可用cookie的路徑;若是設置爲"/",則表明在整個域名內都有效,
 *    若是設置爲"/foo/",則僅表明在域名內的/foo目錄及其子目錄內有效;
 * E. $domain參數用於設置cookie可用的域名範圍(包含子域名);
 *
 * 注意:會話期cookie是指瀏覽器關閉以後會被自動刪除,也就是它僅在會話期間有效;
 *      會話期cookie不須要指定過時時間(Expire);
 *
 * 持久cookie:指定一個特定的過時時間(Expire);
 *
 */
相關文章
相關標籤/搜索