PHP實例:一個比較完善的購物車類_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:PHP4.3.10以下版本出現嚴重漏洞
      受影響系統: PHP 5.0.2 PHP 5.0.1 PHP 5.0.0 PHP 4.3.9 PHP 4.3.8 PHP 4.3.7 PHP 4.3.6 不受影響系統: PHP 5.0.3 PHP 4.3.10 描述: PHP存在輸入驗證漏洞,遠程攻擊者可以利用這個漏洞讀取系統文件內容及進行目錄遍歷攻擊。 問題一是addslashes()存在問題

      前不久做到一個項目需要用到購物車,考慮到可能經常用到,所以把它封裝成一個類,以便以后調用。你可以簡單的把這個類稍微修改一下就可以用在自己的程序里了,具體使用請見。

      /*****************************************************************************/
      /* */
      /* file type: 包含文件,建議后綴為.inc */
      /* */
      /* file name: cart.inc */
      /* */
      /* Description: 定義一個購車類 */
      /* */
      /* Func list : class cart */
      /* */
      /* author : bigeagle */
      /* */
      /* date : 2000/12/24 */
      /* */
      /* History: 2000/12/24 finished */
      /* */
      /*****************************************************************************/

      //定義本文件常量
      define("_CART_INC_" , "exists") ;

      /*購物車類*/
      class TCart
      {

      var SortCount; //商品種類數
      var TotalCost; //商品總價值

      var Id; //每類商品的ID(數組)
      var Name; //每類商品的名稱(數組)
      var Price; //每類商品的價格(數組)
      var Discount; //商品的折扣(數組)
      var GoodPrice ; //商品的優惠價格(數組)
      var Count; //每類商品的件數(數組)
      var MaxCount ; //商品限量(數組)

      //******構造函數
      function TCart()
      {
      this->SortCount=0;

      session_start(); //初始化一個session
      session_register('sId');
      session_register('sName');
      session_register('sPrice');
      session_register('sDiscount');
      session_register('sGoodPrice') ;
      session_register('sCount') ;
      session_register('sMaxCount') ;

      this->Update();
      this->Calculate();
      }

      //********私有,根據session的值更新類中相應數據
      function Update()
      {
      global sId,sName,sPrice,sCount,sDiscount,sMaxCount,sGoodPrice;

      if(!isset(sId) or !isset(sName) or !isset(sPrice)
      or !isset(sDiscount) or !isset(sMaxCount)
      or !isset(sGoodPrice) or !isset(sCount)) return;

      this->Id =sId;
      this->Name =sName;
      this->Price =sPrice;
      this->Count =sCount;
      this->Discount = sDiscount ;
      this->GoodPrice = sGoodPrice ;
      this->MaxCount = sMaxCount ;

      //計算商品總數
      this->SortCount=count(sId);

      }

      //********私有,根據新的數據計算每類商品的價值及全部商品的總價
      function Calculate()
      {
      for(i=0;i<this->SortCount;i )
      {
      /*計算每件商品的價值,如果折扣是0 ,則為優惠價格*/
      GiftPrice = (this->Discount[i] == 0 ? this->GoodPrice :
      ceil(this->Price[i] * this->Discount[i])/100 );
      this->TotalCost = GiftPrice * this->Count[i] ;
      }
      }


      //**************以下為接口函數

      //*** 加一件商品
      // 判斷是否藍中已有,如有,加count,否則加一個新商品
      //首先都是改session的值,然后再調用update() and calculate()來更新成員變量
      function Add(a_ID , a_Name , a_Price , a_Discount ,
      a_GoodPrice , a_MaxCount , a_Count)
      {
      global sId , sName , sCount , sPrice , sDiscount ,
      sGoodPrice , sMaxCount ;

      k=count(sId);
      for (i=0; i<k; i )
      { //先找一下是否已經加入了這種商品
      if(sId[i]==a_ID)
      {
      sCount[i] = a_Count ;
      break;
      }
      }
      if(i >= k)
      { //沒有則加一個新商品種類
      sId[] = a_ID;
      sName[] = a_Name;
      sPrice[] = a_Price;
      sCount[] = a_Count;
      sGoodPrice[] = a_GoodPrice ;
      sDiscount[] = a_Discount ;
      sMaxCount[] = a_MaxCount ;
      }

      this->Update(); //更新一下類的成員數據
      this->Calculate();
      }

      //移去一件商品
      function Remove(a_ID)
      {
      global sId , sName , sCount , sPrice , sDiscount ,
      sGoodPrice , sMaxCount ;

      k = count(sId);
      for(i=0; i < k; i )
      {
      if(sId[i] == a_ID)
      {
      sCount[i] = 0 ;
      break;
      }
      }

      this->Update();
      this->Calculate();
      }

      //改變商品的個數
      function ModifyCount(a_i,a_Count)
      {
      global sCount;

      sCount[a_i] = a_Count ;
      this->Update();
      this->Calculate();
      }


      /***************************
      清空所有的商品
      *****************************/
      function RemoveAll()
      {
      session_unregister('sId');
      session_unregister('sName');
      session_unregister('sPrice');
      session_unregister('sDiscount');
      session_unregister('sGoodPrice') ;
      session_unregister('sCount') ;
      session_unregister('sMaxCount') ;
      this->SortCount = 0 ;
      this->TotalCost = 0 ;
      }


      //是否某件商品已在藍內,參數為此商品的ID
      function Exists(a_ID)
      {
      for(i=0; i<this->SortCount; i )
      {
      if(this->Id[i]==a_ID) return TRUE;
      }
      return FALSE;
      }

      //某件商品在藍內的位置
      function IndexOf(a_ID)
      {
      for(i=0; i<this->SortCount; i )
      {
      if(this->Id[i]==id) return i;
      }
      return 0;
      }

      //取一件商品的信息,主要的工作函數
      //返回一個關聯數組,
      function Item(i)
      {
      Result[id] = this->Id[i];
      Result[name] = this->Name[i];
      Result[price] = this->Price[i];
      Result[count] = this->Count[i];
      Result[discount] = this->Discount[i] ;
      Result[goodprice] = this->GoodPrice[i] ;
      Result[maxcount] = this->MaxCount[i] ;
      return Result;
      }

      //取總的商品種類數
      function CartCount()
      {
      return this->SortCount;
      }

      //取總的商品價值
      function GetTotalCost()
      {
      return this->TotalCost;
      }
      }

      來源:網絡

      分享:php中include文件報錯解決方法
      經常當php頁面中利用include, require, require_once包含了一些其他位置的頁面時,會出現錯誤,比如沒有發現次頁面,或者權限不允許等,可以根據以下方法來排除 1. 出現“未找到文件“類似的錯誤時候,檢查include文件的位置是否正確,下面引用php手冊頁面的

      來源:模板無憂//所屬分類:PHP教程/更新時間:2012-06-09
      相關PHP教程