【分享】新式購物車做法

edited 五月 2014 in PHP新手區
因為原本認為將購物車內容儲存於資料庫較好
但剛好發生讀不出來的情況
分頁類別是正確的(在其他地方使用均正常)
就只是讀取購物車內容會發生問題
畫面結果是錯誤但PHP訊息是警告 XD
程式遇到這種情況頗無奈就是
越是新手越不容易遇到

後來想到直接儲存在SESSION裡就好了
然後剛好之前發生過SESSION儲存陣列會有問題
曾經發生過將陣列內容直接儲存於SESSION有錯誤
所以就又想到那甘脆先把購物車陣列內容轉成json格式字串
然後再用單純的變數與字串形式儲存於SESSION之中
一試果然行的通
而且還蠻好寫的

只是購物車內容就變成每次都要重選
沒辦法先記錄
要記錄就只能靠其他形式去記錄(追蹤商品之類的)

註:測試環境是httpd 2.4.7+PHP 5.5.11+MariaDB 10.0.10

評論

  • 先讀session ,如果讀不到資料再去讀db
  • 如果是會員的 SESSION 資料,也許在一段時間後就該寫到檔案或資料庫備存,因為 SESSION 中斷的情況還蠻常見的 ;)
  • edited 五月 2014
    json應該不太容易出包(很多語言都在用這格式)

    所有重點就集中在session了
    反正session出問題(如:登入後變成別人帳號)
    大概也只能關站休息一陣子了

    提外話:我等這個bug修好很多年了,始終還是會有,一直都沒被改掉。
  • 在不同電腦使用的情況下.什麼狀況下登入後會登成別人帳號?
  • php 是以 session id 區分不同身份的 user。
    session id 會重複的可能性非常非常低
    php 使用 md5 或是 sha1 演算法去產生session id 可以藉由修改 php.ini

    session.hash_function = 0|1 0:md5, 1:sha1

    但不管哪一種演算法幾乎不太可能發生碰撞就是了。
    會發生登入後變成別人的帳號,那應該是出在程式邏輯問題比較大。
  • edited 五月 2014
    在某些討論區會看到這情況
    該檢討的不知是誰就是了
    可能是網頁程式
    也可能是伺服器部份的問題

    連Facebook都有這情況了
    我的FB帳號因為被盜帳號
    而被鎖起來
    幸好我FB帳號不止一個。。。
    (還要你跪下去求,帳號才拿的回來,瞧不起會員嗎,竟然還想要永續經營 XD)

    Facebook根本和無名小站是同一等級的!
    所以我絕不讓使用Facebook帳號的人登入自己的網站系統
  • 推論一:
    session id 產生的種子, 是依client 端時間,
    所以當client 端時間太慢,有可能會取得已產生的 session id,
    所以就發生了
  • 說:


    Facebook根本和無名小站是同一等級的!
    所以我絕不讓使用Facebook帳號的人登入自己的網站系統

    難得看到這樣的評論
  • 對於購物車的作法來說。
    我後來就直接使用HTML5的storage來處理了。
    只有在進行交易的時候。
    才會去跟資料庫比對訂購的內容是不是符合資料的內容。(如產品、單價、可訂數量)
    最主要直接存入server的session會有伺服器請求的時間延遲。
    尤其網路不穩或是伺服器連線速度慢時,可能光是改個購物車數量就有點擊不同調的情形。
    順道一提,約莫一年前,據說chrome的storage儲存容量能達到2.1M,現在是多少我就不清楚了。
    各家瀏覽器的容量都不盡相同但是~~~~應該不致於讓你購物車爆表……
Sign In or Register to comment.