# 開發指導
商城培訓內容
一、目錄結構(MVC模式)
(1)視圖(View)
存放在views文件夾下,主要存放顯示頁面的php文件
(2)模型(Model)
存放在models文件夾下,存放對數據庫表的操作方法
(3)控制(Controller)
存放在controllers文件夾下,存放控制方法。從用戶接受請求,講模型與視圖匹配在一起,共同完成用戶的請求。
(4)其他文件
config文件夾:存放商城的備置文件。例如數據庫文件(db.ini.php),備置文件(config.ini.php)等。
api文件夾:存放接口文件。例如快遞接口文件(logistic.php)。
static文件夾:存放css文件,js文件,圖片。
task文件夾:存放計劃任務文件。
二、查找文件
例子:根據 `http://shop.yuanfeng.com/index.php?ctl=Buyer_Cart&met=cart` 地址查找文件
`index.php` 是入口文件。
`ctl=Buyer_Cart` 控制器文件路徑 `shop/controllers/Buyer/CartCtl.php`
`met=cart` 是 `CartCtl.php` 中的`cart`方法。
```
<pre class="calibre14">```
public <span class="token2">function</span> <span class="token3">cart</span><span class="token1">(</span><span class="token1">)</span><span class="token1">{</span>
$data <span class="token">=</span> $this<span class="token">-</span><span class="token">></span><span class="token3">getCart</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$this<span class="token">-</span><span class="token">></span>data<span class="token">-</span><span class="token">></span><span class="token3">addBody</span><span class="token1">(</span><span class="token">-</span><span class="token6">140</span><span class="token1">,</span> $data<span class="token1">)</span><span class="token1">;</span>
<span class="token2">if</span> <span class="token1">(</span>$this<span class="token">-</span><span class="token">></span>typ <span class="token">==</span> <span class="token4">'json'</span><span class="token1">)</span> <span class="token1">{</span>
$new_data <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$sum <span class="token">=</span> <span class="token6">0</span><span class="token1">;</span>
$count <span class="token">=</span> $data<span class="token1">[</span><span class="token4">'count'</span><span class="token1">]</span><span class="token1">;</span>
<span class="token3">unset</span><span class="token1">(</span>$data<span class="token1">[</span><span class="token4">'count'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">;</span>
$new_data<span class="token1">[</span><span class="token4">'count'</span><span class="token1">]</span> <span class="token">=</span> $count<span class="token1">;</span>
$cart_list <span class="token">=</span> <span class="token3">array_values</span><span class="token1">(</span>$data<span class="token1">)</span><span class="token1">;</span>
$new_data<span class="token1">[</span><span class="token4">'cart_list'</span><span class="token1">]</span> <span class="token">=</span> $cart_list<span class="token1">;</span>
<span class="token2">if</span> <span class="token1">(</span> <span class="token">!</span><span class="token3">empty</span><span class="token1">(</span>$cart_list<span class="token1">)</span> <span class="token1">)</span> <span class="token1">{</span>
foreach <span class="token1">(</span>$cart_list as $key <span class="token">=</span><span class="token">></span> $val<span class="token1">)</span> <span class="token1">{</span>
foreach <span class="token1">(</span>$val<span class="token1">[</span><span class="token4">'goods'</span><span class="token1">]</span> as $k <span class="token">=</span><span class="token">></span> $v<span class="token1">)</span> <span class="token1">{</span>
$sum <span class="token">+</span><span class="token">=</span> $v<span class="token1">[</span><span class="token4">'goods_num'</span><span class="token1">]</span> <span class="token">*</span> $v<span class="token1">[</span><span class="token4">'now_price'</span><span class="token1">]</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span>
<span class="token1">}</span>
$new_data<span class="token1">[</span><span class="token4">'sum'</span><span class="token1">]</span> <span class="token">=</span> $sum<span class="token1">;</span>
$this<span class="token">-</span><span class="token">></span>data<span class="token">-</span><span class="token">></span><span class="token3">addBody</span><span class="token1">(</span><span class="token">-</span><span class="token6">140</span><span class="token1">,</span> $new_data<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span><span class="token2">else</span><span class="token1">{</span>
include $this<span class="token">-</span><span class="token">></span>view<span class="token">-</span><span class="token">></span><span class="token3">getView</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span>
$this<span class="token">-</span><span class="token">></span>data<span class="token">-</span><span class="token">></span><span class="token3">addBody</span><span class="token1">(</span><span class="token">-</span><span class="token6">140</span><span class="token1">,</span>$new_data<span class="token1">)</span><span class="token1">;</span> <span class="token5">//返回數據</span>
include $this<span class="token">-</span><span class="token">></span>view<span class="token">-</span><span class="token">></span><span class="token3">getView</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span> <span class="token5">//加載頁面</span>
<span class="token1">}</span>
```
```
如果是加載頁面,則頁面的路徑為 `shop/views/default/Buyer/CartCtl/cart.php`
在文件中有幾種表示路徑的方法:
```
<pre class="calibre14">```
<span class="token"><</span><span class="token">?</span><span class="token">=</span>$this<span class="token">-</span><span class="token">></span>view<span class="token">-</span><span class="token">></span>js<span class="token">?</span><span class="token">></span><span class="token">/</span>cart<span class="token1">.</span>js <span class="token5">//對應文件 shop/static/default/js/cart.js</span>
<span class="token"><</span><span class="token">?</span><span class="token">=</span> $this<span class="token">-</span><span class="token">></span>view<span class="token">-</span><span class="token">></span>js_com <span class="token">?</span><span class="token">></span><span class="token">/</span>sppl<span class="token1">.</span>js <span class="token5">//shop/static/common/js/sppl.js</span>
<span class="token"><</span><span class="token">?</span><span class="token">=</span> $this<span class="token">-</span><span class="token">></span>view<span class="token">-</span><span class="token">></span>css <span class="token">?</span><span class="token">></span><span class="token">/</span>tips<span class="token1">.</span>css <span class="token5">//shop/static/default/css/tips.css</span>
<span class="token"><</span><span class="token">?</span><span class="token">=</span>$this<span class="token">-</span><span class="token">></span>view<span class="token">-</span><span class="token">></span>img<span class="token">?</span><span class="token">></span><span class="token">/</span>mask<span class="token1">.</span>png <span class="token5">//shop/static/default/images/mask.png</span>
```
```
三、model方法(對數據表的操作)
例子:
```
<pre class="calibre14">```
shop<span class="token">/</span>models<span class="token">/</span>Cart<span class="token1">.</span>php
shop<span class="token">/</span>models<span class="token">/</span>CartModel<span class="token1">.</span>php
```
```
`Cart.php`與`CartModel.php`這兩個文件都是對購物車表進行操作的文件。Cart.php文件主要定義了增刪改查這四個方法。
```
<pre class="calibre14">```
<span class="token"><</span><span class="token">?</span>php <span class="token2">if</span> <span class="token1">(</span><span class="token">!</span><span class="token3">defined</span><span class="token1">(</span><span class="token4">'ROOT_PATH'</span><span class="token1">)</span><span class="token1">)</span>
<span class="token1">{</span>
<span class="token3">exit</span><span class="token1">(</span><span class="token4">'No Permission'</span><span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token5">/**
*
*
* @category Framework
* @package __init__
* @author Yf <service@yuanfeng.cn>
* @copyright Copyright (c) 2010, 朱羽婷
* @version 1.0
* @todo
*/</span>
class <span class="token3">Cart</span> extends <span class="token3">Yf_Model</span>
<span class="token1">{</span>
public $_cacheKeyPrefix <span class="token">=</span> <span class="token4">'c|Cart|'</span><span class="token1">;</span>
public $_cacheName <span class="token">=</span> <span class="token4">'cart'</span><span class="token1">;</span>
public $_tableName <span class="token">=</span> <span class="token4">'cart'</span><span class="token1">;</span>
public $_tablePrimaryKey <span class="token">=</span> <span class="token4">'cart_id'</span><span class="token1">;</span>
<span class="token5">/**
* @param string $user User Object
* @var string $db_id 指定需要連接的數據庫Id
* @return void
*/</span>
public <span class="token2">function</span> <span class="token3">__construct</span><span class="token1">(</span><span class="token">&</span>$db_id <span class="token">=</span> <span class="token4">'shop'</span><span class="token1">,</span> <span class="token">&</span>$user <span class="token">=</span> <span class="token2">null</span><span class="token1">)</span>
<span class="token1">{</span>
$this<span class="token">-</span><span class="token">></span>_tableName <span class="token">=</span> TABEL_PREFIX <span class="token1">.</span> $this<span class="token">-</span><span class="token">></span>_tableName<span class="token1">;</span>
parent<span class="token1">:</span><span class="token1">:</span><span class="token3">__construct</span><span class="token1">(</span>$db_id<span class="token1">,</span> $user<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token5">/**
* @param int $config_key 主鍵值
* @return array $rows 返回的查詢內容
* @access public
*/</span>
public <span class="token2">function</span> <span class="token3">getCart</span><span class="token1">(</span>$cart_id <span class="token">=</span> <span class="token2">null</span><span class="token1">,</span> $sort_key_row <span class="token">=</span> <span class="token2">null</span><span class="token1">)</span>
<span class="token1">{</span>
$rows <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$rows <span class="token">=</span> $this<span class="token">-</span><span class="token">></span><span class="token3">get</span><span class="token1">(</span>$cart_id<span class="token1">,</span> $sort_key_row<span class="token1">)</span><span class="token1">;</span>
<span class="token2">return</span> $rows<span class="token1">;</span>
<span class="token1">}</span>
<span class="token5">/**
* 插入
* @param array $field_row 插入數據信息
* @param bool $return_insert_id 是否返回inset id
* @param array $field_row 信息
* @return bool 是否成功
* @access public
*/</span>
public <span class="token2">function</span> <span class="token3">addCart</span><span class="token1">(</span>$field_row<span class="token1">,</span> $return_insert_id <span class="token">=</span> <span class="token6">false</span><span class="token1">)</span>
<span class="token1">{</span>
$add_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span><span class="token3">add</span><span class="token1">(</span>$field_row<span class="token1">,</span> $return_insert_id<span class="token1">)</span><span class="token1">;</span>
<span class="token5">//$this->removeKey($config_key);</span>
<span class="token2">return</span> $add_flag<span class="token1">;</span>
<span class="token1">}</span>
<span class="token5">/**
* 根據主鍵更新表內容
* @param mix $config_key 主鍵
* @param array $field_row key=>value數組
* @return bool $update_flag 是否成功
* @access public
*/</span>
public <span class="token2">function</span> <span class="token3">editCart</span><span class="token1">(</span>$cart_id <span class="token">=</span> <span class="token2">null</span><span class="token1">,</span> $field_row <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">,</span> $flag <span class="token">=</span> <span class="token6">true</span><span class="token1">)</span>
<span class="token1">{</span>
$update_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span><span class="token3">edit</span><span class="token1">(</span>$cart_id<span class="token1">,</span> $field_row<span class="token1">,</span> $flag<span class="token1">)</span><span class="token1">;</span>
<span class="token2">return</span> $update_flag<span class="token1">;</span>
<span class="token1">}</span>
public <span class="token2">function</span> <span class="token3">editCartNum</span><span class="token1">(</span>$cart_id <span class="token">=</span> <span class="token2">null</span><span class="token1">,</span> $field_row <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">)</span>
<span class="token1">{</span>
$update_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span><span class="token3">edit</span><span class="token1">(</span>$cart_id<span class="token1">,</span> $field_row<span class="token1">)</span><span class="token1">;</span>
<span class="token2">return</span> $update_flag<span class="token1">;</span>
<span class="token1">}</span>
<span class="token5">/**
* 更新單個字段
* @param mix $config_key
* @param array $field_name
* @param array $field_value_new
* @param array $field_value_old
* @return bool $update_flag 是否成功
* @access public
*/</span>
public <span class="token2">function</span> <span class="token3">editCartSingleField</span><span class="token1">(</span>$cart_id<span class="token1">,</span> $company<span class="token1">)</span>
<span class="token1">{</span>
$update_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span><span class="token3">editSingleField</span><span class="token1">(</span>$cart_id<span class="token1">,</span> $company<span class="token1">)</span><span class="token1">;</span>
<span class="token2">return</span> $update_flag<span class="token1">;</span>
<span class="token1">}</span>
<span class="token5">/**
* 刪除操作
* @param int $config_key
* @return bool $del_flag 是否成功
* @access public
*/</span>
public <span class="token2">function</span> <span class="token3">removeCart</span><span class="token1">(</span>$cart_id<span class="token1">)</span>
<span class="token1">{</span>
$del_flag <span class="token">=</span> $this<span class="token">-</span><span class="token">></span><span class="token3">remove</span><span class="token1">(</span>$cart_id<span class="token1">)</span><span class="token1">;</span>
<span class="token5">//$this->removeKey($config_key);</span>
<span class="token2">return</span> $del_flag<span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span>
<span class="token">?</span><span class="token">></span>
```
```
*商城中只能單表查詢,不能多表聯查。
*`Cart.php`只寫最基本的增刪改查方法,最好不要把其他的方法寫入這個文件。
* editCart方法中的第3個參數表示的是修改數字符號為“+=” 還是“=”,例如editCart(1,array(goods\_num=>3),true)),表示的是goods\_num = goods\_num + 3。editCart(1,array(goods\_num=>3),false)),表示的是goods\_num = 3。
幾種經常使用的查找方法
`listByWhere` 返回帶分頁的數據
`getOne` 根據主鍵查找數據
`getByWhere` 根據條件查找數據
更多方法可以在`libraries/Yf/Model.php`中查找。
四、controller方法
例子:獲取當前用戶的購物車數據
地址為:`http://shop.bbc-builder.com/index.php?ctl=Buyer_Cart&met=cart`
CartCtl.php中定義的cart方法上面已經寫出。其中`$data = $this->getCart();`的getCart()方法如下:
```
<pre class="calibre14">```
<span class="token5">/**
* 獲取購物車列表
*
* @author Zhuyt
*/</span>
public <span class="token2">function</span> <span class="token3">getCart</span><span class="token1">(</span><span class="token1">)</span>
<span class="token1">{</span>
$user_id <span class="token">=</span> Perm<span class="token1">:</span><span class="token1">:</span>$row<span class="token1">[</span><span class="token4">'user_id'</span><span class="token1">]</span><span class="token1">;</span>
$Goods_BaseModel <span class="token">=</span> <span class="token2">new</span> <span class="token3">Goods_BaseModel</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$cord_row <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$order_row <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$cond_row <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token4">'user_id'</span> <span class="token">=</span><span class="token">></span> $user_id<span class="token1">)</span><span class="token1">;</span>
$order_row<span class="token1">[</span><span class="token4">'cart_id'</span><span class="token1">]</span> <span class="token">=</span> <span class="token4">'DESC'</span><span class="token1">;</span>
$data <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>cartModel<span class="token">-</span><span class="token">></span><span class="token3">getCardList</span><span class="token1">(</span>$cond_row<span class="token1">,</span> $order_row<span class="token1">)</span><span class="token1">;</span>
foreach <span class="token1">(</span>$data as $key <span class="token">=</span><span class="token">></span> $value<span class="token1">)</span> <span class="token1">{</span>
$goods_detail <span class="token">=</span> $Goods_BaseModel<span class="token">-</span><span class="token">></span><span class="token3">getGoodsDetailInfoByGoodId</span><span class="token1">(</span>$value<span class="token1">[</span><span class="token4">'goods'</span><span class="token1">]</span><span class="token1">[</span><span class="token6">0</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'goods_id'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">;</span>
<span class="token2">if</span> <span class="token1">(</span><span class="token">!</span><span class="token3">empty</span><span class="token1">(</span>$goods_detail<span class="token1">[</span><span class="token4">'common_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'common_spec_name'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">)</span> <span class="token1">{</span>
<span class="token5">//商品規格顏色圖</span>
<span class="token2">if</span> <span class="token1">(</span><span class="token">!</span><span class="token3">empty</span><span class="token1">(</span>$goods_detail<span class="token1">[</span><span class="token4">'common_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'common_spec_value_color'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">)</span> <span class="token1">{</span>
$data<span class="token1">[</span>$key<span class="token1">]</span><span class="token1">[</span><span class="token4">'goods'</span><span class="token1">]</span><span class="token1">[</span><span class="token6">0</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'goods_image'</span><span class="token1">]</span> <span class="token">=</span> $goods_detail<span class="token1">[</span><span class="token4">'common_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'common_spec_value_color'</span><span class="token1">]</span><span class="token1">[</span>$value<span class="token1">[</span><span class="token4">'goods'</span><span class="token1">]</span><span class="token1">[</span><span class="token6">0</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'color_id'</span><span class="token1">]</span><span class="token1">]</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span>
<span class="token1">}</span>
<span class="token2">if</span> <span class="token1">(</span>$data<span class="token1">)</span> <span class="token1">{</span>
$status <span class="token">=</span> <span class="token6">200</span><span class="token1">;</span>
$msg <span class="token">=</span> <span class="token3">__</span><span class="token1">(</span><span class="token4">'success'</span><span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span> <span class="token2">else</span> <span class="token1">{</span>
$status <span class="token">=</span> <span class="token6">250</span><span class="token1">;</span>
$msg <span class="token">=</span> <span class="token3">__</span><span class="token1">(</span><span class="token4">'failure'</span><span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
$this<span class="token">-</span><span class="token">></span>data<span class="token">-</span><span class="token">></span><span class="token3">addBody</span><span class="token1">(</span><span class="token">-</span><span class="token6">140</span><span class="token1">,</span> $data<span class="token1">,</span> $msg<span class="token1">,</span> $status<span class="token1">)</span><span class="token1">;</span>
<span class="token2">return</span> $data<span class="token1">;</span>
<span class="token1">}</span>
```
```
使用model方法先實例化對象。
```
<pre class="calibre14">```
$this<span class="token">-</span><span class="token">></span>cartModel <span class="token">=</span> <span class="token2">new</span> <span class="token3">CartModel</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
```
```
獲取數據后根據實際需求決定是返回數據還是加載頁面。
五、view中顯示數據
例子:購物車頁面
```
<pre class="calibre14">```
<span class="token"><</span>div class<span class="token">=</span><span class="token4">"cart_goods"</span><span class="token">></span>
<span class="token"><</span>ul class<span class="token">=</span><span class="token4">'cart_goods_head clearfix'</span><span class="token">></span><span class="token"><</span>li class<span class="token">=</span><span class="token4">"done"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'操作'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>li<span class="token">></span>
<span class="token"><</span>li class<span class="token">=</span><span class="token4">"price_all"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'小計'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token1">(</span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token1">(</span>Web_ConfigModel<span class="token1">:</span><span class="token1">:</span><span class="token3">value</span><span class="token1">(</span><span class="token4">'monetary_unit'</span><span class="token1">)</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token1">)</span><span class="token"><</span><span class="token">/</span>li<span class="token">></span>
<span class="token"><</span>li class<span class="token">=</span><span class="token4">"goods_num"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'數量'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>li<span class="token">></span>
<span class="token"><</span>li class<span class="token">=</span><span class="token4">"goods_price"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'單價'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token1">(</span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token1">(</span>Web_ConfigModel<span class="token1">:</span><span class="token1">:</span><span class="token3">value</span><span class="token1">(</span><span class="token4">'monetary_unit'</span><span class="token1">)</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token1">)</span><span class="token"><</span><span class="token">/</span>li<span class="token">></span>
<span class="token"><</span>li class<span class="token">=</span><span class="token4">"goods_name"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'商品'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>li<span class="token">></span>
<span class="token"><</span>li class<span class="token">=</span><span class="token4">"cart_goods_all cart-checkbox "</span> style<span class="token">=</span><span class="token4">"float:left;"</span><span class="token">></span><span class="token"><</span>input class<span class="token">=</span><span class="token4">"checkall"</span> type<span class="token">=</span><span class="token4">"checkbox"</span> data<span class="token">-</span>type<span class="token">=</span><span class="token4">"all"</span><span class="token">></span><span class="token"><</span>div class<span class="token">=</span><span class="token4">"select_all"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'全選'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>div<span class="token">></span><span class="token"><</span><span class="token">/</span>li<span class="token">></span>
<span class="token"><</span><span class="token">/</span>ul<span class="token">></span>
<span class="token"><</span>form id<span class="token">=</span><span class="token4">"form"</span> action<span class="token">=</span><span class="token4">"?ctl=Buyer_Cart&met=confirm"</span> method<span class="token">=</span><span class="token4">'post'</span><span class="token">></span>
<span class="token"><</span>ul class<span class="token">=</span><span class="token4">"cart_goods_list clearfix"</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span>php <span class="token3">foreach</span><span class="token1">(</span>$data as $key<span class="token">=</span><span class="token">></span>$val<span class="token1">)</span><span class="token1">{</span><span class="token">?</span><span class="token">></span>
<span class="token"><</span>li class<span class="token">=</span><span class="token4">"carts_content"</span><span class="token">></span>
<span class="token"><</span>div class<span class="token">=</span><span class="token4">"bus_imfor clearfix"</span><span class="token">></span>
<span class="token"><</span>p class<span class="token">=</span><span class="token4">"bus_name"</span><span class="token">></span>
<span class="token"><</span>input class<span class="token">=</span><span class="token4">"checkshop checkitem"</span> type<span class="token">=</span><span class="token4">"checkbox"</span> data<span class="token">-</span>type<span class="token">=</span><span class="token4">"all"</span><span class="token">></span>
<span class="token"><</span>span<span class="token">></span><span class="token"><</span>i class<span class="token">=</span><span class="token4">"iconfont icon-icoshop"</span><span class="token">></span><span class="token"><</span><span class="token">/</span>i<span class="token">></span><span class="token"><</span>a href<span class="token">=</span><span class="token4">"<?= Yf_Registry::get('url') ?>?ctl=Shop&met=index&id=<?=($key)?>"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token1">(</span>$val<span class="token1">[</span><span class="token4">'shop_name'</span><span class="token1">]</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>a<span class="token">></span><span class="token"><</span><span class="token">/</span>span<span class="token">></span>
<span class="token"><</span><span class="token">/</span>p<span class="token">></span>
<span class="token"><</span><span class="token">/</span>div<span class="token">></span>
<span class="token"><</span>table id<span class="token">=</span><span class="token4">"table_list"</span> class<span class="token">=</span><span class="token4">"table_list"</span><span class="token">></span>
<span class="token"><</span>tbody class<span class="token">=</span><span class="token4">"rel_good_infor"</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span>php <span class="token3">foreach</span><span class="token1">(</span>$val<span class="token1">[</span><span class="token4">'goods'</span><span class="token1">]</span> as $k<span class="token">=</span><span class="token">></span>$v<span class="token1">)</span><span class="token1">{</span> <span class="token">?</span><span class="token">></span>
<span class="token"><</span>tr class<span class="token">=</span><span class="token4">"row_line"</span><span class="token">></span>
<span class="token"><</span>td class<span class="token">=</span><span class="token4">"goods_sel cart-checkbox"</span><span class="token">></span>
<span class="token"><</span>p<span class="token">></span>
<span class="token"><</span>input class<span class="token">=</span><span class="token4">"checkitem"</span> type<span class="token">=</span><span class="token4">"checkbox"</span> name<span class="token">=</span><span class="token4">"product_id[]"</span> value<span class="token">=</span><span class="token4">"<?=($v['cart_id'])?>"</span> <span class="token"><</span><span class="token">?</span>php <span class="token2">if</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'IsHaveBuy'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">{</span><span class="token">?</span><span class="token">></span>disabled<span class="token">=</span><span class="token4">""</span> title<span class="token">=</span><span class="token4">"您已達限購數量"</span> <span class="token"><</span><span class="token">?</span>php <span class="token1">}</span><span class="token">?</span><span class="token">></span> <span class="token">></span>
<span class="token"><</span><span class="token">/</span>p<span class="token">></span>
<span class="token"><</span><span class="token">/</span>td<span class="token">></span>
<span class="token"><</span>td class<span class="token">=</span><span class="token4">"goods_img"</span><span class="token">></span><span class="token"><</span>img src<span class="token">=</span><span class="token4">"<?=($v['goods_base']['goods_image'])?>"</span><span class="token">/</span><span class="token">></span><span class="token"><</span><span class="token">/</span>td<span class="token">></span>
<span class="token"><</span>td class<span class="token">=</span><span class="token4">"goods_name_reset"</span><span class="token">></span>
<span class="token"><</span>a target<span class="token">=</span><span class="token4">"_blank"</span> href<span class="token">=</span><span class="token4">"<?= Yf_Registry::get('url') ?>?ctl=Goods_Goods&met=goods&gid=<?=($v['goods_base']['goods_id'])?>"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'goods_name'</span><span class="token1">]</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>a<span class="token">></span>
<span class="token"><</span><span class="token">?</span>php <span class="token2">if</span><span class="token1">(</span><span class="token3">isset</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'promotion_type'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">)</span><span class="token1">:</span> <span class="token">?</span><span class="token">></span>
<span class="token"><</span>p class<span class="token">=</span><span class="token4">"sal_price"</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span>php <span class="token2">if</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'promotion_type'</span><span class="token1">]</span> <span class="token">==</span> <span class="token4">'groupbuy'</span> <span class="token">&&</span> $v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'down_price'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">:</span> <span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'團購,直降:'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">format_money</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'down_price'</span><span class="token1">]</span><span class="token1">)</span><span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span>php endif<span class="token1">;</span><span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span>php <span class="token2">if</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'promotion_type'</span><span class="token1">]</span> <span class="token">==</span> <span class="token4">'xianshi'</span> <span class="token">&&</span> $v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'down_price'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">:</span> <span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'限時折扣,直降:'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">format_money</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'down_price'</span><span class="token1">]</span><span class="token1">)</span><span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span>php endif<span class="token1">;</span><span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">/</span>p<span class="token">></span>
<span class="token"><</span><span class="token">?</span>php endif<span class="token1">;</span> <span class="token">?</span><span class="token">></span>
<span class="token"><</span>p<span class="token">></span>
<span class="token"><</span><span class="token">?</span>php <span class="token2">if</span><span class="token1">(</span><span class="token">!</span><span class="token3">empty</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'spec'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">)</span><span class="token1">{</span><span class="token3">foreach</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'spec'</span><span class="token1">]</span> as $sk <span class="token">=</span><span class="token">></span> $sv<span class="token1">)</span><span class="token1">{</span> <span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token1">(</span>$sv<span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token">&</span>nbsp<span class="token1">;</span><span class="token">&</span>nbsp<span class="token1">;</span>
<span class="token"><</span><span class="token">?</span>php <span class="token1">}</span><span class="token1">}</span><span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">/</span>p<span class="token">></span>
<span class="token"><</span><span class="token">/</span>td<span class="token">></span>
<span class="token"><</span>td class<span class="token">=</span><span class="token4">"goods_price"</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span>php <span class="token2">if</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'old_price'</span><span class="token1">]</span> <span class="token">></span> <span class="token6">0</span><span class="token1">)</span><span class="token1">{</span><span class="token">?</span><span class="token">></span><span class="token"><</span>p class<span class="token">=</span><span class="token4">"ori_price"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'old_price'</span><span class="token1">]</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>p<span class="token">></span><span class="token"><</span><span class="token">?</span>php <span class="token1">}</span><span class="token">?</span><span class="token">></span>
<span class="token"><</span>p class<span class="token">=</span><span class="token4">"now_price"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'now_price'</span><span class="token1">]</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>p<span class="token">></span>
<span class="token"><</span><span class="token">/</span>td<span class="token">></span>
<span class="token"><</span>td class<span class="token">=</span><span class="token4">"goods_num"</span><span class="token">></span>
<span class="token"><</span><span class="token">?</span>php
<span class="token2">if</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'buy_limit'</span><span class="token1">]</span> <span class="token">&&</span> <span class="token">!</span>$v<span class="token1">[</span><span class="token4">'IsHaveBuy'</span><span class="token1">]</span><span class="token1">)</span>
<span class="token1">{</span>
$data_max <span class="token">=</span> $v<span class="token1">[</span><span class="token4">'buy_residue'</span><span class="token1">]</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token2">else</span>
<span class="token1">{</span>
$data_max <span class="token">=</span> $v<span class="token1">[</span><span class="token4">'goods_base'</span><span class="token1">]</span><span class="token1">[</span><span class="token4">'goods_stock'</span><span class="token1">]</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token">?</span><span class="token">></span>
<span class="token"><</span>a class<span class="token">=</span><span class="token4">"<?php if($v['goods_num'] == 1){?>no_<?php }?>reduce"</span> <span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'-'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>a<span class="token">></span><span class="token"><</span>input id<span class="token">=</span><span class="token4">"nums"</span> data<span class="token">-</span>id<span class="token">=</span><span class="token4">"<?=($v['cart_id'])?>"</span> data<span class="token">-</span>max<span class="token">=</span><span class="token4">"<?=($data_max)?>"</span> value<span class="token">=</span><span class="token4">"<?=($v['goods_num'])?>"</span><span class="token">></span><span class="token"><</span>a class<span class="token">=</span><span class="token4">"<?php if($data_max <= 1){?>no_<?php }?>add"</span> <span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'+'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>a<span class="token">></span>
<span class="token"><</span><span class="token">/</span>td<span class="token">></span>
<span class="token"><</span>td class<span class="token">=</span><span class="token4">"price_all cell<?=($v['cart_id'])?>"</span><span class="token">></span>
<span class="token"><</span>span class<span class="token">=</span><span class="token4">"subtotal"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token1">(</span>$v<span class="token1">[</span><span class="token4">'sumprice'</span><span class="token1">]</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>span<span class="token">></span>
<span class="token"><</span><span class="token">/</span>td<span class="token">></span>
<span class="token"><</span>td class<span class="token">=</span><span class="token4">"done del"</span><span class="token">></span><span class="token"><</span>a data<span class="token">-</span>param<span class="token">=</span><span class="token4">"{'ctl':'Buyer_Cart','met':'delCartByCid','id':'<?=($v['cart_id'])?>'}"</span><span class="token">></span><span class="token"><</span><span class="token">?</span><span class="token">=</span><span class="token3">_</span><span class="token1">(</span><span class="token4">'刪除'</span><span class="token1">)</span><span class="token">?</span><span class="token">></span><span class="token"><</span><span class="token">/</span>a<span class="token">></span><span class="token"><</span><span class="token">/</span>td<span class="token">></span>
<span class="token"><</span><span class="token">/</span>tr<span class="token">></span>
<span class="token"><</span><span class="token">?</span>php <span class="token1">}</span><span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">/</span>tbody<span class="token">></span>
<span class="token"><</span><span class="token">/</span>table<span class="token">></span>
<span class="token"><</span><span class="token">/</span>li<span class="token">></span>
<span class="token"><</span><span class="token">?</span>php <span class="token1">}</span><span class="token">?</span><span class="token">></span>
<span class="token"><</span><span class="token">/</span>ul<span class="token">></span>
<span class="token"><</span><span class="token">/</span>form<span class="token">></span>
```
```
五、其他
(1)在shop中調用其他項目的方法 `get_url_with_encrypt`
定義方法的文件:`libraries\__init__.php`
```
<pre class="calibre14">```
<span class="token5">//可以判斷請求時間是否超過某個期限</span>
<span class="token2">function</span> <span class="token3">get_url_with_encrypt</span><span class="token1">(</span>$key<span class="token1">,</span> $url<span class="token1">,</span> $formvars <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">,</span> $typ <span class="token">=</span> <span class="token4">'JSON'</span><span class="token1">,</span> $method <span class="token">=</span> <span class="token4">'POST'</span><span class="token1">)</span>
<span class="token1">{</span>
$formvars<span class="token1">[</span><span class="token4">'rtime'</span><span class="token1">]</span> <span class="token">=</span> <span class="token3">get_time</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$hash_row <span class="token">=</span> $formvars<span class="token1">;</span>
<span class="token3">array_multiksort</span><span class="token1">(</span>$hash_row<span class="token1">,</span> SORT_STRING<span class="token1">)</span><span class="token1">;</span>
$hash_row<span class="token1">[</span><span class="token4">'key'</span><span class="token1">]</span> <span class="token">=</span> $key<span class="token1">;</span>
$tmp_str <span class="token">=</span> <span class="token3">http_build_query</span><span class="token1">(</span>$hash_row<span class="token1">)</span><span class="token1">;</span>
Yf_Log<span class="token1">:</span><span class="token1">:</span><span class="token3">log</span><span class="token1">(</span><span class="token4">'$tmp_str:'</span> <span class="token1">.</span> $tmp_str<span class="token1">,</span> Yf_Log<span class="token1">:</span><span class="token1">:</span>INFO<span class="token1">,</span> <span class="token4">'get_url_with_encrypt'</span><span class="token1">)</span><span class="token1">;</span>
Yf_Log<span class="token1">:</span><span class="token1">:</span><span class="token3">log</span><span class="token1">(</span><span class="token4">'$url:'</span> <span class="token1">.</span> $url<span class="token1">,</span> Yf_Log<span class="token1">:</span><span class="token1">:</span>INFO<span class="token1">,</span> <span class="token4">'get_url_with_encrypt'</span><span class="token1">)</span><span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">"token"</span><span class="token1">]</span> <span class="token">=</span> <span class="token3">md5</span><span class="token1">(</span>$tmp_str<span class="token1">)</span><span class="token1">;</span>
Yf_Log<span class="token1">:</span><span class="token1">:</span><span class="token3">log</span><span class="token1">(</span>$hash_row<span class="token1">,</span> Yf_Log<span class="token1">:</span><span class="token1">:</span>INFO<span class="token1">,</span> <span class="token4">'get_url_with_encrypt'</span><span class="token1">)</span><span class="token1">;</span>
Yf_Log<span class="token1">:</span><span class="token1">:</span><span class="token3">log</span><span class="token1">(</span>$formvars<span class="token1">,</span> Yf_Log<span class="token1">:</span><span class="token1">:</span>INFO<span class="token1">,</span> <span class="token4">'get_url_with_encrypt'</span><span class="token1">)</span><span class="token1">;</span>
$rs <span class="token">=</span> <span class="token3">get_url</span><span class="token1">(</span>$url<span class="token1">,</span> $formvars<span class="token1">,</span> $typ<span class="token1">,</span> $method<span class="token1">)</span><span class="token1">;</span>
Yf_Log<span class="token1">:</span><span class="token1">:</span><span class="token3">log</span><span class="token1">(</span>$rs<span class="token1">,</span> Yf_Log<span class="token1">:</span><span class="token1">:</span>INFO<span class="token1">,</span> <span class="token4">'get_url_with_encrypt'</span><span class="token1">)</span><span class="token1">;</span>
<span class="token2">return</span> $rs<span class="token1">;</span>
<span class="token1">}</span>
```
```
例如:
在shop中調用paycenter中的用戶信息。
```
<pre class="calibre14">```
<span class="token5">//會員的錢</span>
$key <span class="token">=</span> Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'shop_api_key'</span><span class="token1">)</span><span class="token1">;</span>
$formvars <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$user_id <span class="token">=</span> Perm<span class="token1">:</span><span class="token1">:</span>$userId<span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'user_id'</span><span class="token1">]</span> <span class="token">=</span> $user_id<span class="token1">;</span>
$formvars<span class="token1">[</span><span class="token4">'app_id'</span><span class="token1">]</span> <span class="token">=</span> Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'shop_app_id'</span><span class="token1">)</span><span class="token1">;</span>
$money_row <span class="token">=</span> <span class="token3">get_url_with_encrypt</span><span class="token1">(</span>$key<span class="token1">,</span> <span class="token3">sprintf</span><span class="token1">(</span><span class="token4">'%sindex.php?ctl=Api_User_Info&met=getUserResourceInfo&typ=json'</span><span class="token1">,</span>
Yf_Registry<span class="token1">:</span><span class="token1">:</span><span class="token3">get</span><span class="token1">(</span><span class="token4">'paycenter_api_url'</span><span class="token1">)</span><span class="token1">)</span><span class="token1">,</span> $formvars<span class="token1">)</span><span class="token1">;</span>
```
```
在shop中驗證接口合法性的方法`check_url_with_encrypt`
定義方法的文件:`libraries\__init__.php`
```
<pre class="calibre14">```
<span class="token2">function</span> <span class="token3">check_url_with_encrypt</span><span class="token1">(</span>$key<span class="token1">,</span> $formvars <span class="token">=</span> <span class="token3">array</span><span class="token1">(</span><span class="token1">)</span><span class="token1">)</span>
<span class="token1">{</span>
Yf_Log<span class="token1">:</span><span class="token1">:</span><span class="token3">log</span><span class="token1">(</span>$formvars<span class="token1">,</span> Yf_Log<span class="token1">:</span><span class="token1">:</span>INFO<span class="token1">,</span> <span class="token4">'check_url_with_encrypt'</span><span class="token1">)</span><span class="token1">;</span>
$token <span class="token">=</span> $formvars<span class="token1">[</span><span class="token4">'token'</span><span class="token1">]</span><span class="token1">;</span>
<span class="token3">unset</span><span class="token1">(</span>$formvars<span class="token1">[</span><span class="token4">'token'</span><span class="token1">]</span><span class="token1">)</span><span class="token1">;</span>
$hash_row <span class="token">=</span> $formvars<span class="token1">;</span>
<span class="token3">array_multiksort</span><span class="token1">(</span>$hash_row<span class="token1">,</span> SORT_STRING<span class="token1">)</span><span class="token1">;</span>
$hash_row<span class="token1">[</span><span class="token4">'key'</span><span class="token1">]</span> <span class="token">=</span> $key<span class="token1">;</span>
$tmp_str <span class="token">=</span> <span class="token3">http_build_query</span><span class="token1">(</span>$hash_row<span class="token1">)</span><span class="token1">;</span>
Yf_Log<span class="token1">:</span><span class="token1">:</span><span class="token3">log</span><span class="token1">(</span><span class="token4">'$tmp_str:'</span> <span class="token1">.</span> $tmp_str<span class="token1">,</span> Yf_Log<span class="token1">:</span><span class="token1">:</span>INFO<span class="token1">,</span> <span class="token4">'check_url_with_encrypt'</span><span class="token1">)</span><span class="token1">;</span>
Yf_Log<span class="token1">:</span><span class="token1">:</span><span class="token3">log</span><span class="token1">(</span><span class="token4">'md5-key:'</span> <span class="token1">.</span> <span class="token3">md5</span><span class="token1">(</span>$tmp_str<span class="token1">)</span><span class="token1">,</span> Yf_Log<span class="token1">:</span><span class="token1">:</span>INFO<span class="token1">,</span> <span class="token4">'check_url_with_encrypt'</span><span class="token1">)</span><span class="token1">;</span>
<span class="token5">//可以判斷請求時間是否超過某個期限, 1分鐘內</span>
<span class="token2">if</span> <span class="token1">(</span><span class="token1">(</span><span class="token3">get_time</span><span class="token1">(</span><span class="token1">)</span> <span class="token">-</span> $hash_row<span class="token1">[</span><span class="token4">'rtime'</span><span class="token1">]</span> <span class="token"><</span> <span class="token6">60000</span><span class="token1">)</span> <span class="token">&&</span> $token <span class="token">==</span> <span class="token3">md5</span><span class="token1">(</span>$tmp_str<span class="token1">)</span><span class="token1">)</span> <span class="token1">{</span>
<span class="token2">return</span> <span class="token6">true</span><span class="token1">;</span>
<span class="token1">}</span> <span class="token2">else</span> <span class="token1">{</span>
<span class="token2">return</span> <span class="token6">false</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span>
```
```
例如:`shop\controllers\Api\Controller.php`
```
<pre class="calibre14">```
<span class="token2">if</span> <span class="token1">(</span><span class="token">!</span><span class="token3">check_url_with_encrypt</span><span class="token1">(</span>$key<span class="token1">,</span> $data<span class="token1">)</span><span class="token1">)</span><span class="token1">{</span>
$this<span class="token">-</span><span class="token">></span>data<span class="token">-</span><span class="token">></span><span class="token3">setError</span><span class="token1">(</span><span class="token3">__</span><span class="token1">(</span><span class="token4">'API接口有誤,請確保APP KEY及APP ID正確'</span><span class="token1">)</span><span class="token1">,</span> <span class="token6">301</span><span class="token1">)</span><span class="token1">;</span> $d <span class="token">=</span> $this<span class="token">-</span><span class="token">></span>data<span class="token">-</span><span class="token">></span><span class="token3">getDataRows</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$protocol_data <span class="token">=</span> Yf_Data<span class="token1">:</span><span class="token1">:</span><span class="token3">encodeProtocolData</span><span class="token1">(</span>$d<span class="token1">)</span><span class="token1">;</span>
echo $protocol_data<span class="token1">;</span> <span class="token3">exit</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
```
```
底層防SQL注入:
```
<pre class="calibre14">```
<span class="token5">/**
* 轉義字符函數
*
* @param mixed $content contents should be addslashes
*
* @return mixed $content
*
*/</span>
<span class="token2">function</span> <span class="token3">quotes</span><span class="token1">(</span><span class="token">&</span>$content<span class="token1">)</span>
<span class="token1">{</span>
<span class="token2">if</span> <span class="token1">(</span><span class="token3">is_array</span><span class="token1">(</span>$content<span class="token1">)</span><span class="token1">)</span> <span class="token1">{</span>
foreach <span class="token1">(</span>$content as $key <span class="token">=</span><span class="token">></span> $value<span class="token1">)</span> <span class="token1">{</span>
$content<span class="token1">[</span>$key<span class="token1">]</span> <span class="token">=</span> <span class="token3">quotes</span><span class="token1">(</span>$value<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span> <span class="token2">else</span> <span class="token1">{</span>
$content <span class="token">=</span> <span class="token3">addslashes</span><span class="token1">(</span>$content<span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token2">return</span> $content<span class="token1">;</span>
<span class="token1">}</span>
```
```
在`libraries\Yf\Model.php`文件的174行
```
<pre class="calibre15">```
$value <span class="token">=</span> <span class="token3">htmlspecialchars</span><span class="token1">(</span>$value<span class="token1">)</span><span class="token1">;</span>
```
```
- 序言
- 系統要求
- 版本更新日志
- 遠豐商城技術對接說明
- 開發指導
- 框架內容
- 基礎
- 開發規范
- 目錄結構
- 架構
- 架構總覽
- 數據庫
- 數據庫連接
- 基本使用
- 緩存
- 配置
- 路由
- 數據字典
- ucenter
- shop
- paycenter
- ucenter_admin
- shop_admin
- paycenter_admin
- 通訊內容
- 商家中心
- 頂部導航欄
- 店鋪信息欄
- 店鋪及商品提示欄
- 交易提示欄
- 銷售情況統計欄
- 單品銷量排行欄
- 店鋪運營推廣欄
- 平臺聯系方式欄
- 訂單物流
- 商品
- 商品列表
- 商品詳情
- 商品發布與編輯
- 分銷商品
- 關聯版式
- 商品規格
- 圖片空間
- 淘寶導入
- 訂單流程
- 交易訂單
- 訂單退款/退貨
- 促銷
- 團購管理
- 加價購
- 限時折扣
- 滿即送
- 代金券管理
- 分銷
- 店鋪
- 店鋪設置
- 自銷產品供應商
- 實體店鋪
- 品牌申請
- 店鋪信息
- 消費者保障服務
- 門店賬號
- 分銷商--產品供應商
- 分銷明細
- 批發市場
- 售后服務
- 咨詢管理
- 投訴管理
- 退款管理
- 退貨管理
- 云方案架構
- 負載集群
- 云存儲
- 接口
- Api接口說明
- 品牌
- 商品規格
- 商品類型
- 商品分類
- 商品
- 訂單
- 商品/店鋪收藏
- 足跡
- 退款及退貨
- 商家店鋪
- 會員
- 入駐協議
- 訂單接口
- 商品接口
- 訂單物流接口
- 商家中心接口
- 促銷接口
- 快遞鳥物流接口
- 代金券接口
- 首頁版塊
- 團購
- 平臺紅包
- 限時折扣接口
- 拼團接口
- wap首頁模板
- 雜項
- 遠程上傳圖片
- JS
- 銀聯支付
- 多語言
- 商品評分
- 圖片加載
- 買家申請退款退貨
- 商家退款退貨
- 平臺退款退貨
- 添加發票
- 提交訂單
- 確認訂單
- 運費銷售區域
- 獲取會員地址
- 充值
- 導出XLS
- 商城系統集成
- 多語言實現
- 三級分銷推廣鏈接發展推廣員
- app.ini.php
- 去分銷
- 版本更新
- 物流支持
- 運營人員建議
- 業務邏輯
- 統計結算
- 客服消息
- 賬號
- 三級分銷
- IM
- 配置
- 平臺帳號
- 活動數據表說明