您好 我有去下載您提供的檔案了 對wfcart類別的運作有比較了解了
但對於物件的值是怎麼由product.php傳到cart.php再傳到checkout.php還有些不了解的地方 目前只知道使用$cart->add_item()方法後 商品資訊會被帶到物件中 能在瀏覽器關閉之前 能一直維持購物車內的商品資訊
啟動session的標準格式: session_start(); $cart =& $_SESSION['cart']; if(!is_object($cart)) $cart = new myCart();
1. 為什麼建立物件語法if(!is_object($cart)) $cart = new myCart(); 要寫在$cart =& $_SESSION['cart'];之後呢? 是因為變數是由上往下傳遞的關係嗎? 還是它們之間完全沒有關係一個為變數 一個為物件
2. 書本第16-10頁第31行$_SESSION["loginMember"] = $username 將會員的帳號變數$username儲存在$_SESSION["loginMember"]之中 跟 $cart =& $_SESSION['cart']; 將購物車的值設定為session 我想知道兩者的差別是在那邊?
3. 我試過將product.php裡的$cart =& $_SESSION['cart']; 顛倒過來改成$_SESSION['cart'] =& $cart; =是將右方的值存到左方的變數中 但卻沒有影響到程式的運作是為什麼? 還是其實兩者的意義是不同的 還有"&"在$_SESSION['cart']跟$cart之前會產生的意義 是否也是不同的?
4. 在cart.php和checkout.php若移除 $cart =& $_SESSION['cart']; if(!is_object($cart)) $cart = new myCart(); 這兩句程式碼似乎不影響購物車物件的運作?為什麼?還有必要加嗎?
5. 之所以要設定$cart =& $_SESSION['cart']; 是因為要將$cart物件的值存在session裡 才能夠讓使用者在真正未結帳以前能夠到處瀏覽商品並將每一筆商品資訊保留起來嗎? 所以在product.php使用$cart->add_item()方法後 商品資訊變成物件的屬性值 傳到屬性的array()裡面是不能被保留下來的!? 因為由類別產生了$cart物件 又將$cart物件的值存在session裡 所以所有的商品資訊都在$_SESSION['cart']裡面了嗎? 當頁面被header()到cart.php的時候就已經是取用$_SESSION['cart']裡面的商品資訊了嗎? 包含我們wfcart跟mycart類別裡面也都是在取用$_SESSION['cart']裡面的資訊!? 而不是類別屬性裡的array()的資料嗎? 若上面敘述正確的話 cart.php 裡所使用的 $cart->deliverfee 跟 $cart->grandtotal怎麼知道要到$_SESSION['cart']裡面抓值?
6. 能夠有方法能echo $_SESSION['cart']裡面儲存的資料來看嗎? 我試著在加入商品後在cart.php上輸入
foreach($_SESSION['cart'] as $value=>$value2){ echo $value." ".$value2."<br />"; } 得到結果為 deliverfee 0 grandtotal 0 total 0 itemcount 0 items Array itemprices Array itemqtys Array iteminfo Array 只能顯示屬性值的部份出來 而不能得知items 裡面的陣列資料 要如何能讓$_SESSION['cart'] 清楚的顯示出來呢? 讓我知道它到底做了些什麼
7. 書上在10-10頁的10.3.1有說 sessionID 以Cookie的方式儲存在用戶端來紀錄狀態 意思是$_SESSION['cart']的資料也是像cookie一樣存在temp files資料夾裡面嗎? 但我找不到它 它是用戶端能看到的嗎?
|