亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求教大神一個關于PHP問題,session與cookie的區別?

求教大神一個關于PHP問題,session與cookie的區別?

慕工程0101907 2019-11-11 14:10:18
php中session與cookie的區別?
查看完整描述

3 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

cookie是網站保存在本地的信息,可以通過瀏覽器清除cookie來清除
session可以理解為在服務器的cookie,不會隨用戶清除一般數據而消失,session失效一般為三種情況:
第一種是會話結束
第二種是服務器設置了session的失效時間
第三種為用戶清除了特征數據,如保存在cookie中的sessionID,導致服務器認為這是一個新用戶,分配了一個新的session,從而導致了原session失效
總而言之,cookie是存放在用戶本地的,session是存放在服務器的,所以cookie可以節省服務器資源,但是安全性不如session,session更加安全,但是會占用服務器資源

查看完整回答
反對 回復 2019-11-17
?
MM們

TA貢獻1886條經驗 獲得超2個贊

這兩者,區別和聯系其實也挺深奧的,總是了解一些皮毛,每次都得上網查,今天寫下來,每隔段時間就看看,加深記憶。
Session是由應用服務器維持的一個服務器端的存儲空間,用戶在連接服務器時,會由服務器生成一個唯一的SessionID,用該SessionID 為標識符來存取服務器端的Session存儲空間。而SessionID這一數據則是保存到客戶端,用Cookie保存的,用戶提交頁面時,會將這一 SessionID提交到服務器端,來存取Session數據。這一過程,是不用開發人員干預的。所以一旦客戶端禁用Cookie,那么Session也會失效。

服務器也可以通過URL重寫的方式來傳遞SessionID的值,因此不是完全依賴Cookie。如果客戶端Cookie禁用,則服務器可以自動通過重寫URL的方式來保存Session的值,并且這個過程對程序員透明。

可以試一下,即使不寫Cookie,在使用request.getCookies();取出的Cookie數組的長度也是1,而這個Cookie的名字就是JSESSIONID,還有一個很長的二進制的字符串,是SessionID的值。

大家都知道,http是無狀態的協議,客戶每次讀取web頁面時,服務器都打開新的會話,而且服務器也不會自動維護客戶的上下文信息,那么要怎么才能實現網上商店中的購物車呢,session就是一種保存上下文信息的機制,它是針對每一個用戶的,變量的值保存在服務器端,通過SessionID來區分不同的客戶,session是以cookie或URL重寫為基礎的,默認使用cookie來實現,系統會創造一個名為JSESSIONID的輸出cookie,叫做session cookie,以區別persistent cookies,也就是通常所說的cookie,注意session cookie是存儲于瀏覽器內存中的,并不是寫到硬盤上的,這也就是剛才看到的JSESSIONID,通常情是看不到JSESSIONID的,但是當把瀏覽器的cookie禁止后,web服務器會采用URL重寫的方式傳遞Sessionid,就可以在地址欄看到sessionid=KWJHUG6JJM65HS2K6之類的字符串。

明白了原理,就可以很容易的分辨出persistent cookies和session cookie的區別了,網上那些關于兩者安全性的討論也就一目了然了,session cookie針對某一次會話而言,會話結束session cookie也就隨著消失了,而persistent cookie只是存在于客戶端硬盤上的一段文本(通常是加密的),而且可能會遭到cookie欺騙以及針對cookie的跨站腳本攻擊,自然不如session cookie安全了。

通常session cookie是不能跨窗口使用的,新開了一個瀏覽器窗口進入相同頁面時,系統會賦予一個新的sessionid,這樣信息共享的目的就達不到了,此時可以先把sessionid保存在persistent cookie中,然后在新窗口中讀出來,就可以得到上一個窗口SessionID了,這樣通過session cookie和persistent cookie的結合就實現了跨窗口的session tracking(會話跟蹤)。

在一些web開發的書中,往往只是簡單的把Session和cookie作為兩種并列的http傳送信息的方式,session cookies位于服務器端,persistent cookie位于客戶端,可是session又是以cookie為基礎的,明白的兩者之間的聯系和區別,就不難選擇合適的技術來開發web service了。



查看完整回答
反對 回復 2019-11-17
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

  session與cookie的區別:
  1: session的內容存在文件里的話,文件在哪兒?
  答: 由 session.save_path = "D:/tmp",
  如果不指定, 默認放在 C:/windows/temp, Linux下默認在 "/tmp"目錄
  2: cookie和session的關系
  答:cookie可以用來存儲 session_id
  tangram_guid_1357433851419 思路: 如果cookie被瀏覽器禁用,又怎么辦?
  3: session.use_cookies = 1
  這個選項是告訴服務器: 用cookie存儲session_id
  session.use_only_cookies = 0 ,是否只用cookie來傳session_id
  session.use_trans_sid = 1 // 設置地址欄session_id
  4: cookie與session的關系
  答:cookie用來存儲和傳遞session_id
  如果禁用了cookie,可不可以用session?
  答:可以, 其次,我們可以通過javascript再檢測瀏覽器是否支持cookie,并提示用戶打開cookie
  5:session的默認生命周期是多久?
  答:關閉瀏覽器就失效 原因:因為session_id存在于cookie,而默認情況,cookie關閉瀏覽器即失敗.
  6: 如何設置session生命周期為30分鐘呢?
  答:session.cookie_lifetime = 1800 php.ini來設置
  7:http://localhost/0415/set.php , 設置session,
  請問,該session值在哪些路徑下生效??
  答: 傳session_id用的cookie在哪生效,session就在哪兒生效
  7.5:傳session_id的cookie又在哪兒生效呢?
  答: 默認是在'/'目錄下生效
  區別: cookie默認在設置的目錄下生效,而session默認在/目錄下生效
  8: 如果設置傳session_id的cookie的有效路徑呢?
  答:session.cookie_path = /, 這兒可以設置



查看完整回答
反對 回復 2019-11-17
  • 3 回答
  • 0 關注
  • 554 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號