『壹』 cookie怎麼實現實現購物車
目前購物車的實現主要是通過cookie、session或結合資料庫的方式。下面分析一下它們的機制及作用。
1. cookie
cookie是由伺服器產生,存儲在客戶端的一段信息。它定義了一種Web伺服器在客戶端存儲和返回信息的機制,cookie文件它包含域、路徑、生存期、和由伺服器設置的變數值等內容。當用戶以後訪問同一個Web伺服器時,瀏覽器會把cookie原樣發送給伺服器。通過讓伺服器讀取原先保存到客戶端的信息,網站能夠為瀏覽者提供一系列的方便,例如在線交易過程中標識用戶身份、安全要求不高的場合避免用戶重復輸入名字和密碼、門戶網站的主頁定製、有針對性地投放廣告等等。利用cookie的特性,大大擴展了WEB應用程序的功能,不僅可以建立伺服器與客戶機的聯系,因為cookie可以由伺服器定製,因此還可以將購物信息生成cookie值存放在客戶端,從而實現購物車的功能。用基於cookie的方式實現伺服器與瀏覽器之間的會話或購物車,有以下特點:
n cookie存儲在客戶端,且佔用很少的資源,瀏覽器允許存放300個cookie,每個cookie的大小為4KB,足以滿足購物車的要求,同時也減輕了伺服器的負荷;
n cookie為瀏覽器所內置,使用方便。即使用戶不小心關閉了瀏覽器窗口,只要在cookie定義的有效期內,購物車中的信息也不會丟失;
n cookie不是可執行文件,所以不會以任何方式執行,因此也不會帶來病毒或攻擊用戶的系統;
n 基於cookie的購物車要求用戶瀏覽器必須支持並設置為啟用cookie,否則購物車則失效;
n 存在著關於cookie侵犯訪問者隱私權的爭論,因此有些用戶會禁止本機的cookie功能。
2. session
session是實現購物車的另一種方法。session提供了可以保存和跟蹤用戶的狀態信息的功能,使當前用戶在session中定義的變數和對象能在頁面之間共享,但是不能為應用中其他用戶所訪問,它與cookie最重大的區別是,session將用戶在會話期間的私有信息存儲在伺服器端,提高了安全性。在伺服器生成session後,客戶端會生成一個sessionid識別號保存在客戶端,以保持和伺服器的同步。這個sessionid是只讀的,如果客戶端禁止cookie功能,session會通過在URL中附加參數,或隱含在表單中提交等其他方式在頁面間傳送。因此利用session實施對用戶的管理則更為安全、有效。
同樣,利用session也能實現購物車,這種方式的特點是:
n session用新的機制保持與客戶端的同步,不依賴於客戶端設置;
n 與cookie相比,session是存儲在伺服器端的信息,因此顯得更為安全,因此可將身份標示,購物等信息存儲在session中;
n session會佔用伺服器資源,加大伺服器端的負載,尤其當並發用戶很多時,會生成大量的session,影響伺服器的性能;
n 因為session存儲的信息更敏感,而且是以文件形式保存在伺服器中,因此仍然存在著安全隱患。
3. 結合資料庫的方式
這也是目前較普遍的模式,在這種方式中,資料庫承擔著存儲購物信息的作用,session或cookie則用來跟蹤用戶。這種方式具有以下特點:
n 資料庫與cookie分別負責記錄數據和維持會話,能發揮各自的優勢,使安全性和伺服器性能都得到了提高;
n 每一個購物的行為,都要直接建立與資料庫的連接,直至對表的操作完成後,連接才釋放。當並發用戶很多時,會影響資料庫的性能,因此,這對資料庫的性能提出了更高的要求;
n 使cookie維持會話有賴客戶端的支持。
各種方式的選擇:
雖然cookie可用來實現購物車,但必須獲得瀏覽器的支持,再加上它是存儲在客戶端的信息,極易被獲取,所以這也限制了它存儲更多,更重要的信息。所以一般cookie只用來維持與伺服器的會話,例如國內最大的當當網路書店就是用cookie保持與客戶的聯系,但是這種方式最大的缺點是如果客戶端不支持 cookie就會使購物車失效。
Session 能很好地與交易雙方保持會話,可以忽視客戶端的設置。在購物車技術中得到了廣泛的應用。但session的文件屬性使其仍然留有安全隱患。
結合資料庫的方式雖然在一定程度上解決了上述的問題,但從上面的例子可以看出:在這種購物流程中涉及到對資料庫表的頻繁操作,尤其是用戶每選購一次商品,都要與資料庫進行連接,當用戶很多的時候就加大了伺服器與資料庫的負荷
這裡面說的確實很詳細
我們公司採用的是資料庫的方式
1、用戶瀏覽系統,獲取用戶機器的MAC地址
2、如果用戶購買物品,添加到資料庫裡面,同時插入機器的MAC地址,也是用戶的ID標示
3、如果用戶登錄系統,用用戶真實的ID,更新當前機器的MAC對應的記錄。
4、如果結帳的話,更新用戶的id,刪除購物車裡面的東西
5、用戶沒有登錄,購物車記錄根據MAC讀取記錄,如果登錄系統根據用戶的ID,讀取記錄
『貳』 asp.net mvc通過cookie實現簡單的購物車功能
1.整個商品表,購物車表
2.點擊購買
沒登陸情況下把商品Id(或是其他能標識唯一商品的值)存入版Cookies 在購物車頁面根據Cookies里存的權id集合讀取商品信息列出來 此時購物車頁面讀取的是cookies里商品id對應的信息
登錄後把cookies里存的數據加到購物車表 點擊購買直接存入購物車表 此時購物車頁面數據讀取的是資料庫中商品數據
商品信息都有了 計算價格就簡單了
這是比較簡單的實現方式了
『叄』 我也出現當當登錄後不停刷新的情況,且刷新後自動重置為未登錄狀態,清空歷史記錄及cookie後,依然沒改變
您好抄,經測試,我們可以襲正常提交訂單,建議您進入瀏覽器操作欄 「工具」 >>「Internet選項」 >>「常規」>> 「刪除Internet的臨時文件(cookie )」 並「刪除歷史記錄」嘗試操作。同時提醒您:如您購物車中有商品,此操作會導致清空未登錄的購物車中商品。謝謝! 1、更換瀏覽器,建議使用沒有插件的IE瀏覽器,不要使用360之類的瀏覽器2、向運營商尋求解決方法
『肆』 購物車中記錄用戶的問題
你這個問題,來不是自技術問題。是一個方案問題。
1、購物車的東西,根本沒有必要存到表裡面,應該放到session或者cookies里。現在放在cookies居多,但是國外也有大網站放在session里。
2、沒有訂單那個步驟,這些東西我不存儲到資料庫。
3、還有就是做類似於暫存架的功能,用戶沒有提交訂單的商品,我放到那個裡面。然後在用戶購物車總提示暫存架里的商品,刺激他消費。
其實都是字元串的操作。
1、首先設計一個結構,例如:商品id,數量#
2、用戶點加入購物車:
'購物車里添加id=15的商品2個。
Response.Cookies("proctList") = Request.Cookies("proctList")&"15,2#"
3、獲取購物車內容:
slist = Request.Cookies("proctList")
然後使用split把所有商品分割出來,再把數量分割出來就可以了。
4、如果刪除商品和更改數量就是對字元串的子串進行操作了。
『伍』 登錄用戶 實現購物車cookie怎麼寫
處理cookie思路。。
//以用戶的用戶名和密碼創建cokie
CookienameCookie=newCookie("name",java.net.URLEncoder.encode(name.trim(),"utf-8"));
CookiepasswordCookie=newCookie("password",java.net.URLEncoder.encode(password.trim(),"utf-8"));
//設置cookie的實效時間
nameCookie.setMaxAge(7*24*60*60);
passwordCookie.setMaxAge(7*24*60*60);
//設置Cookie的父路徑
nameCookie.setPath(request.getContextPath()+"/");
passwordCookie.setPath(request.getContextPath()+"/");
//放入Cookie到響應頭
HttpServletResponseresponse=ServletActionContext.getResponse();
response.addCookie(nameCookie);
response.addCookie(passwordCookie);
『陸』 登陸時我用cookie保存用戶ID,有效期一年,然後怎麼退出登錄呢,我這樣不行
HttpCookie cookie = Request.Cookies["myCookie"];
cookie.Expires = DateTime.Now.AddDays(-1);
『柒』 如何從cookie中取出當前用戶的會話id
什麼是會話
會話ID是一種唯一標識當前訪問伺服器的客戶的只讀值。在經典的ASP環境下,會話ID是按照順序方式被分配的,也就是說,會話ID 706616433之後跟著會話 ID 706616434等等。傳統的ASP會話ID以加密的、非持久存在的cookie形式保存在客戶機上。例如,會話ID 706616434就可能作為cookie ASPSESSIONIDGQQGQGCS=JHMBOBKCBINEHLPKJHOPABBE保存在客戶機上。
ASP.NET下的會話ID有所變化。在使用 ASP.NET 時,會話ID是由URL合法ASCII字元組成的一個120位字元串。根據微軟文檔的說明,產生會話 ID 值採用了保證其唯一性的演算法,從而避免出現兩個客戶試圖採用同一ID時出現的會話沖突。另外,會話ID的隨機性使得確定現有會話的ID變得非常困難從而帶來了額外的安全性。同傳統ASP一樣,ASP.NET的會話ID通常也作為非持久保存的cookie存儲在客戶機上。這種cookie的格式同傳統ASP相比稍有變化,例如,asp.net_sessionid=jhmbobkcbinehlpkjhopabbe。
除了維持狀態的傳統型的、非持久保存的cookie的方法之外,ASP.NET還支持一種不採用cookie的會話狀態維持模式。在啟用無cookie模式的情況下,ASP.NET在發送回客戶機的URL中嵌入會話ID。這樣就為使用不支持cookie或禁用cookie瀏覽器的客戶提供了會話狀態堅持。考慮到利用cookie跟蹤客戶信息的舉動,我們有理由對無Cookie模式保持高度的關注。
如何使用會話ID
客戶每發出一個請求,包含加密會話ID的cookie在存在的情況下即被發送給伺服器。伺服器隨後確定cookie所關聯的會話ID並恢復關聯該客戶的所有會話變數。如果cookie不存在就會生成一個新的會話ID,同時加密的會話ID cookie則被發送給客戶機。這樣就能讓ASP跟蹤訪問網站的單個客戶了。同時,以上機制還促使ASP建立伺服器方會話變數同單一會話的關聯關系。
『捌』 如何根據cookie獲得對應的用戶id
登錄的時候設置COOKIE,再用$_COOKIE獲取
『玖』 關於使用cookie設計購物車
說說我的思路 沒有代碼
我的思路是採用臨時cookie ,未登錄的前提下添加商品,就將該商品代內號保存容到cookie商品的values中去,再買就繼續增加value,未登錄情況查看購物車,伺服器讀取臨時cookie的values,根據商品代號顯示具體信息,登錄後檢查cookie是否為空,將商品保存到資料庫。繼續添加商品就通過session判斷用戶保存到資料庫,用不到cookie了
用戶離開,關閉網站 臨時cookie丟失 B用戶購物不受影響
此時B用戶完成了自己的操作離開,A用戶回來了想繼續完成之前的操作,又該如何解決
如果之前A在未登錄的狀態下,由於cookie數據丟掉,不可能獲取先前的信息了
即便你用cookie用戶名 cookie商品代號 設置期限 B用戶一樣會佔用的 換句話說A回來cookie里的數據也是B的,但是不是說不可實現,只是我的水平不會實現而已!!
『拾』 用戶登錄中,將用戶名username存儲在sesssion中,可是做購物車的時候如何根據session中的用戶名獲取用戶ID
個人認為方法有倆種:
1.你登陸驗證用戶的時候,把用戶ID也取到放到session當中。會占內存版,並發量大的時權候必須要考慮。
2.你需要用ID的時候根據session當中username的值去資料庫獲取不就好了。頻繁的資料庫操作會給資料庫伺服器較大的壓力。
看你自己比較側重那一種了。