PHP COOKIE和SESSION操作

PHP COOKIE和SESSION操作

COOKIE

COOKIE概述

1,什麼是COOKIE
    COOKIE 就是服務器暫時存放在你的電腦裏的資料(.txt格式的文本文件),好讓服務器辨認你的計算機
    
    cookie是由服務器段生成,發送給user_agent(一般是瀏覽器),瀏覽器會將cookie的key/value保存
    到某個目錄的文本文件內,下次請求同一網站時就發送改cookie給服務器
    
   
    
2,IE瀏覽器查看COOKIE數據 
    工具欄菜單>>internet選項>>常規選項卡>>瀏覽器歷史記錄>>設置>>查看文件

3,使用cookie的好處
    存放必要性信息
    
    跟蹤統計用戶訪問網站的習慣,什麼時間訪問,訪問了哪些頁面,頁面停留時間等
        爲用戶提供個性化服務,爲網站營銷提供參考

4,cookie的工作原理
    我的電腦(客戶端)               百度網(服務器段)
    寫入相應的                                       
    cookie數據       http請求->     向瀏覽器發送存儲cookie指令
                
                <-http應籤(第一次)指令
                    存儲cookie
    cookie數據
    name=admin
    pass = 123456                
                    
    讀取cookie數據    http請求->            
    併發送到服務器     攜帶cookie數據      獲取並驗證瀏覽器發送的cookie數據
                
                <-http響應(第二次)

COOKIE操作

1,添加cookie數據
    向客戶端發送一個http cookie
    bool setcookie($name,$value,$expire=0,$path,$domain,$secure=false,$httponly=false)
    
    $name:cookie的名稱
    $value:cookie的值
    $expire:cookie的有效期
    $path:cookie的服務器路徑
    $secure:規定是否通過安全的https連接來傳輸cookie
    
    設置成功返回true
    
2,讀取cookie數據
    獲取cookie數據是通過超全局數組$_COOKIE來實現的
    value = $_COOKIE[key];

COOKIE設置

1,cookie過期有效性設置
    1,即時性cookie設置
        默認cookie的有效期時關閉瀏覽器時自動失效,
        bool setcookie($name,$value,$expire=0)
        $expire 指定cookie保存的時間,默認爲0,關閉瀏覽器失效
    
    2,有效性cookie設置
        bool setcookie($name,$value,$expire)
        $expire爲一個時間戳,一般用time()+N表實新的時間戳,在當前時間點
                再加上N秒,產生一個新的時間戳
            
        持久性cookie
        
2,cookie路徑有效性
    設置cookie只能在指定的目錄及其子目錄下有效
    bool setcookie($name,$value,$expire=0,$path)
    
    訪問不同的頁面,攜帶針對性的cookie
    
3,cookie域名有效性
    給一個cookie指定訪問的域名
    setcookie($name,$value,$expire,$path,$domain)
    
    提示:默認情況下,cookie只能在當前域名下有效

4,是否僅htps安全連接才能發送cookie
   bool setcookie($name,$value,$expire=0,$path,$domain,$secure=false)


5,是否只能通過http協議來使用cookie
    客戶端的cookie除了可以通過http之外,還可以使用js來使用cookie
    bool setcookie($name,$value,$expire=0,$path,$domain,$secure=false,$httponly=false)

刪除cookie數據

1,設置cookie有效性爲過去的某個一時間
    setcookie($name,$value,expire);       
    setcookie("username","admin",time()-1)
    
2,設置cookie的值爲false 或空字符串
    setcookie($name,false)
    setcookie($name,"")
    
3,不設置cookie 的值

4,清理瀏覽器緩存

cookie總結

不安全
容量小,大約4kb
數據類型只能是字符串
瀏覽器可禁用cookie

SESSION

SESSION概述

1,什麼是session
    session 對象存儲特定用戶的會話數據
    session 將會話數據存儲在服務器端
    session 是基於cookie 技術的
    session 在整個用戶的會話中,一直存在下去
    一個用戶會話時效,從用戶登錄開始,到用戶登錄結束
    session 存儲的數據量要比cookie大得多
    session 存儲的內容類型,不限於字符串
    session 數據存儲在服務器端,更安全更可靠

2,session的工作原理
    
    瀏覽器端                服務器段
    
            http請求->    php腳本引擎
                            
                            session
    cookie數據區             會話數據區
    session標識符<-http響應   session-id
    phpsessionid=...        session數據

3,開啓session會話功能
    啓動新會話或者重用現有會話
    bool session_start(void)
    提示:$_SESSION 變量默認是不存在的,與$_POST,$_GET,$_FILE不同
        必須先開啓session會話,才能使用$_SESSION變量
    
        每個需要session數據的頁面,都要開啓SESSION功能
    注意:SESSION功能,不能重複開啓,(同一個頁面不能開兩次)
    返回:成功開始會話返回TRUE,反之返回FALSE
    
    提示:session文件的保存位置:c:\window\temp

session 操作

1,添加session數據
    $_SESSION[key]=value
    
    一個網站不管添加多少個SESSION數據,最終在瀏覽器只存儲一個SESSION的ID值
    該ID值是經過加密的,並且永不重複key只能是string類型的數據
    
    session 文件在服務器端的存儲位置:c:\window\temp

2,讀取SESSION數據   
    $value = $_SESSION[key]
    提示:每次SESSION操作,都要先開啓SESSION功能

3,刪除SESSION數據
    使用unset()函數,刪除一個SESSION數據

4,銷燬SESSION文件
    刪除當前的session文件,不影響其他的session文件
    bool session_destroy(void)

SESSION對應COOKIE的配置

 1,SESSION 對應COOKIE過期時間設置
    修改php.ini配置項,session_cookie_lifetime        
    
 2,SESSION對應COOKIE有效路徑設置
    修改php.ini配置項,session.cookie_path
    
 3,SESSION對應COOKIE域名有效性設置
    修改php.ini配置項:session.cookie_domain
    
 4,是否僅限https來發送SESSION對應的COOKIE數據
    修改php.ini配置項:session.cookie_secure
    
 5,是否僅限http來使用SESSION對應的COOKIE數據
    修改php.ini配置項:session.cookie_httponly

SESSION垃圾回收機制

1,什麼是SESSION的垃圾回收機制
    SESSION垃圾回收,就是將過期的SESSION服務器文件刪除的機制
    SESSION會自動刪除那些過期的服務器端session數據區文件

    修改php的配置文件php.ini

2,垃圾回收的週期:session.gc_maxlifetime
    在php.ini中的值 默認是 1440s,也就是24分鐘
    沒24分鐘,清理一次session垃圾文件
    
3,垃圾回收的概率:session.gc_divisor

    回收概率:分子/分母得到一個百分比,達到100%就清理,
            1/1000,每1000人訪問,纔會清理一次
            
    回收週期和回收概率混合使用
        先看有沒有達到24分鐘,然後查看訪問人數是否滿足要求
        若滿足,則清理

總結

cookie和session如果從數據存儲的角度上來書,和小程序中的全局變量有類似的地方,比如:
	存儲用戶的登錄信息
	存儲一些用到的全局數據 等
	
另外	sessionid 是具有唯一性的,其中session文件的存儲也是需要注意的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章