国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > PHP > 正文

深入PHP購(gòu)物車(chē)模塊功能分析(函數(shù)講解,附源碼)

2020-03-22 20:01:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
一,購(gòu)物車(chē)概述
購(gòu)物車(chē)是為消費(fèi)者在網(wǎng)上購(gòu)物中提供一個(gè)臨時(shí)存儲(chǔ)商品的地方。其主要功能包括:添加商品、刪除商品、更改商品數(shù)量、商品金額小計(jì)、商品金額總計(jì)和清空購(gòu)物車(chē);還包括生成訂單、訂單打印、訂單預(yù)覽、提交訂單和取消購(gòu)物等。
購(gòu)物車(chē)的操作流程:首先,登錄到網(wǎng)站中瀏覽商品;然后,購(gòu)買(mǎi)指定的商品,進(jìn)入購(gòu)物車(chē)頁(yè)面中,在該頁(yè)面可以實(shí)現(xiàn)更改商品數(shù)量、刪除商品、清空購(gòu)物車(chē)、繼續(xù)購(gòu)物等;最后,填寫(xiě)收貨人信息,生成訂單,訂單打印、預(yù)覽,提交訂單等操作。二,熱點(diǎn)關(guān)鍵技術(shù)
1,Smarty模塊的安裝配置
smarty是一個(gè)使用PHP寫(xiě)出來(lái)的PHP模板引擎,它將一個(gè)html' target='_blank'>應(yīng)用程序分成兩部分實(shí)現(xiàn):視圖和邏輯控制。即將UI和PHP代碼分離。PHP沒(méi)有內(nèi)置Smarty模板類,需要單獨(dú)下載和配置,而且Smarty要求服務(wù)器上PHP版本最低為4.0.6。PHP Smarty可以在http://www.smarty.net/download下載。將壓縮包解壓,其中有一個(gè)libs目錄,包含Smarty類庫(kù)的所有核心文件。包括smarty.class.php、smarty_Compiler.class.php、config_File.class.php和debug.tpl 4個(gè)文件,還有internals和plug-ins兩個(gè)目錄。
復(fù)制libs目錄到服務(wù)器根目錄下,并重命名。這里將libs目錄重新命名為smarty。到此Smarty模板安裝完畢。
2,Smarty模板的配置
(1)首先確定Smarty目錄的位置。因?yàn)镾marty類庫(kù)是通用的,每一個(gè)項(xiàng)目基本都會(huì)使用,為了調(diào)用方便,習(xí)慣將smarty放置在根目錄下。

(2)新建4個(gè)目錄templates、templates_c、configs和cache,用于存儲(chǔ)不同的文件。新建的4個(gè)目錄位置是可以選擇的,只要配置文件路徑設(shè)置正確就可以了。

(3)創(chuàng)建配置文件。只要應(yīng)用Smarty模板,那么就一定要包含Smarty類庫(kù)和相關(guān)信息。每個(gè)頁(yè)面都寫(xiě)一遍配置是不現(xiàn)實(shí)的,最好的方法就是將這些配置信息都寫(xiě)到一個(gè)文件中,通過(guò)include來(lái)調(diào)用配置文件。配置文件創(chuàng)建完成后保存在根目錄下。本模塊配置文件config.php代碼如下:
復(fù)制代碼 代碼如下:
?php
/* 定義服務(wù)器的絕對(duì)路徑 */
define('BASE_PATH','E:/PHPservices//');
/* 定義Smarty目錄的絕地你路徑 */
define('SMARTY_PATH','SourceCode/12/01//');
/* 加載Smarty類庫(kù)文件 */
require BASE_PATH.SMARTY_PATH.'smarty/Smarty.class.php';
/* 實(shí)例化一個(gè)Smarty對(duì)象 */
$smarty = new Smarty;
/* 定義各個(gè)目錄的路徑 */
$smarty- template_dir = BASE_PATH.SMARTY_PATH.'./';
$smarty- compile_dir = BASE_PATH.SMARTY_PATH.'templates_c/';
$smarty- config_dir = BASE_PATH.SMARTY_PATH.'configs/';
$smarty- cache_dir = BASE_PATH.SMARTY_PATH.'cache/';
/* 定義定界符 */
$smarty- left_delimiter = '
$smarty- right_delimiter = '}
/* 使用Smarty賦值方法將一對(duì)兒名稱/方法發(fā)送到模板中 */
?

3,smarty模板動(dòng)靜分離
smarty模板最大的特點(diǎn)就是實(shí)現(xiàn)應(yīng)用程序的動(dòng)靜分離,即將UI和PHP代碼分離。下面介紹Smarty模板在實(shí)現(xiàn)動(dòng)靜分離的過(guò)程中常用的技術(shù)。
(1)在UI中獲取PHP代碼中模板變量的值
首先要確定Smarty模板的界定符,這里使用的是' {'和'} '。另外還應(yīng)用到一些Smarty的內(nèi)建函數(shù)section、php、if、elseif、else等。
a)section函數(shù)用于遍歷數(shù)組中的數(shù)據(jù)。每個(gè){section}標(biāo)簽必須與閉合標(biāo)簽{/section}成對(duì)出現(xiàn),參數(shù)name和loop為必選項(xiàng)。
名稱name是包含字母、數(shù)字和下劃線的任意組合,可以嵌套但必須保證嵌套的name唯一。
變量loop(通常是數(shù)組)決定循環(huán)執(zhí)行的次數(shù),例如需要在section循環(huán)內(nèi)輸出變量時(shí),必須在變量后加上中括號(hào),中括號(hào)內(nèi)包含name變量。
例如:
復(fù)制代碼 代碼如下:
{section name=data loop=$myrow }
tr
td width="125" bgcolor="#FFFFFF" {$myrow[data].tb_commodity_name} /td
td bgcolor="#FFFFFF" {$myrow[data].tb_commodity_price} /td
/tr
{/section} b)php標(biāo)簽的作用是直接在模板中嵌入PHP腳本,標(biāo)簽的格式是" {php} "和" {/php} ".
c)在Smarty的模板中同樣也支持if、else語(yǔ)句,而且還增加了幾個(gè)特性以適應(yīng)模板引擎。if與/if必須成對(duì)出現(xiàn);可以使用else和elseif字句;可使用以下條件修飾詞:eq、ne、neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、div by、even by、odd by、===、!=、 、 、 =、 =。在使用修飾詞時(shí)必須和變量或者常量用空格分隔開(kāi)來(lái)。示例如下:
{if $isShow=="F" }
tr
td height="22" colspan="5" bgcolor="#FFFFFF" div align="center" 對(duì)不起,您的購(gòu)物車(chē)中暫無(wú)商品信息! /div /td
/tr
{else}
{section name=data loop=$myrow }
tr
td height="22" align="center" bgcolor="#FFFFFF" {$myrow[data].tb_commodity_name} /td
td height="22" bgcolor="#FFFFFF" div align="center" {$myrow[data].tb_commodity_price} /div /td
/tr
{/section}
{/if}

(2)在PHP代碼中定義模板變量,為模板變量賦值
UI中的數(shù)據(jù)是來(lái)自于PHP代碼中定義的模板變量。在PHP代碼中,完成PHP代碼的編寫(xiě),將要輸出的值賦給一個(gè)模板變量,最后制定模板頁(yè)進(jìn)行輸出。
a)為模板變量賦值通過(guò)自定義函數(shù)assign()來(lái)完成,其中第一個(gè)參數(shù)是被賦值的變量名,第二個(gè)參數(shù)是賦給變量的值。應(yīng)用assign()函數(shù)的關(guān)鍵代碼如下:
$smarty- assign("myrow",$array);//通過(guò)assign方法將數(shù)組$array中的數(shù)據(jù)寫(xiě)入到myrow中b)模板頁(yè)的指定是通過(guò)display方法來(lái)完成的,其語(yǔ)法如下:
void display(string template[,string cache_id[,string compile_id]])
該方法用于指定模板頁(yè),其中第一個(gè)必選參數(shù)是指定一個(gè)合法模板資源的類型和路徑;第2個(gè)可選參數(shù)指定一個(gè)緩存號(hào);第3個(gè)可選參數(shù)指定一個(gè)編譯號(hào),再把一個(gè)模板編譯成不同版本時(shí)使用。display方法應(yīng)用的關(guān)鍵代碼如下:
$smarty- display("index.tpl");//指定要輸出的模板頁(yè)3,Session購(gòu)物車(chē)的創(chuàng)建
Session購(gòu)物車(chē)主要應(yīng)用Session變量來(lái)實(shí)現(xiàn)。而所謂的購(gòu)物車(chē)就是通過(guò)session_register()函數(shù)創(chuàng)建的2個(gè)Session變量;其中g(shù)oodsid存儲(chǔ)商品的ID,goodsnum存儲(chǔ)商品的數(shù)量。Session購(gòu)物車(chē)創(chuàng)建的代碼如下:
復(fù)制代碼 代碼如下:
?php
session_start();//初始化session變量
session_register("goodsid");//定義session變量用于存儲(chǔ)商品ID
session_register("goodsnum");//定義session變量用于存儲(chǔ)購(gòu)買(mǎi)商品的數(shù)量
?

session_register()函數(shù),在整個(gè)域范圍內(nèi)增加一個(gè)Session變量。語(yǔ)法:boolean session_register(string name);
參數(shù)name用于指定新Session變量的名稱。
4,通過(guò)數(shù)組函數(shù)判斷購(gòu)物車(chē)是否存在指定商品
為了避免在購(gòu)物車(chē)中出現(xiàn)商品的重復(fù)添加,要對(duì)添加的商品與購(gòu)物車(chē)中存儲(chǔ)的商品進(jìn)行判斷。
a)應(yīng)用explode()函數(shù),將goodsid變量中存儲(chǔ)的字符串以@為分隔符轉(zhuǎn)換到數(shù)組中。
explode()函數(shù),返回由字符串組成的數(shù)組,其中的每個(gè)元素都是由separator作為邊界點(diǎn)分割出來(lái)的子字符串。
語(yǔ)法:array explode(string separator,string string,[ing limit])
參數(shù)說(shuō)明:
separator:必須,規(guī)定在哪里分割字符串。不能為空字符串,否則explode()返回FALSE
string:必須,要分割的字符串。limit:可選,規(guī)定所返回的數(shù)組元素的最大數(shù)目。如果設(shè)置了limit參數(shù),則返回的數(shù)組包含最多l(xiāng)imit個(gè)元素,而最后那個(gè)元素將包含string的剩余部分。如果limit參數(shù)是負(fù)數(shù),則返回除了最后的-limit個(gè)元素之外的所有元素。

b)in_array()函數(shù)判斷數(shù)組中是否存在指定的商品ID,如果存在,則說(shuō)明商品已經(jīng)在購(gòu)物車(chē)中;否則商品不存在,則將商品的ID添加到購(gòu)物車(chē)中。

in_inarray()函數(shù)在數(shù)組中搜索給定的值。如果找到則返回True,否則返回False。
語(yǔ)法:bool in_array(mixed value,array array[,bool type])
參數(shù)說(shuō)明:
value:必須,規(guī)定要在數(shù)組中搜索的值
array:必須,規(guī)定要搜索的數(shù)組。
type:可選,如果設(shè)置為true,則檢查搜索的數(shù)據(jù)與數(shù)組的類型是否相同。
在購(gòu)物車(chē)模塊中,判斷購(gòu)物車(chē)中是否存在指定的商品的代碼如下:
復(fù)制代碼 代碼如下:
?php
session_start();//初始化session變量
session_register("goodsid");//定義session變量用于存儲(chǔ)商品ID
session_register("goodsnum");//定義session變量用于存儲(chǔ)購(gòu)買(mǎi)商品的數(shù)量
if($_SESSION["goodsid"]=="" && $_SESSION["goodsnum"]==""){//判斷session變量是否為空
$_SESSION["goodsid"]=$_GET["id"]."@";//如果session變量為空,則為其賦值為商品的ID,并以@分隔
$_SESSION["goodsnum"]="1@";//如果session變量為空,則為其賦值為1,并以@分隔
}else{//如果session變量不為空
$array=explode("@",$_SESSION["goodsid"]);//則以@為分隔符,將session變量中的數(shù)據(jù)寫(xiě)入到數(shù)組中
if(in_array($_GET["id"],$array)){//如果判讀數(shù)組中是否存在指定的ID
echo " script alert('該商品已經(jīng)被放入購(gòu)物車(chē)!');history.back(); /script
exit;
}
//如果數(shù)組中不存在指定的ID,則說(shuō)明該商品還沒(méi)有放入購(gòu)物車(chē)中
$_SESSION["goodsid"].=$_GET["id"]."@";//將該商品添加到購(gòu)物車(chē)中
$_SESSION["goodsnum"].="1@";//更改商品數(shù)量
}
echo " script window.location.href='shopping_car.php'; /script
?

5,驗(yàn)證輸入商品數(shù)量值是否有效
在preg_match()函數(shù)中,判斷提交的商品數(shù)量的值是否符合正則表達(dá)式的標(biāo)準(zhǔn),如果符合則有效,否則將給出提示信息。程序關(guān)鍵代碼如下:
復(fù)制代碼 代碼如下:
$id=$_POST["id"];//獲取商品id
$num=$_POST["goodsnum"];//獲取商品數(shù)量
$preg="/^[0-9]*[0-9]$|^[0-9]*[0-9]$/";//編寫(xiě)正則表達(dá)式
if($num==""){//判斷提交的值是否為空
echo " script alert('數(shù)量不能為空!');history.back(); /script
exit;
}else if(!preg_match($preg,$num,$str)){//判斷提交的數(shù)據(jù)是否是正整數(shù)
echo " script alert('數(shù)量只能為正整數(shù)!');history.back(); /script
exit;
}

preg_match()函數(shù),在字符串中搜索所有與給出的正則表達(dá)式匹配的內(nèi)容,如果存在則返回True,否則返回False。語(yǔ)法如下:
語(yǔ)法:int preg_match(string pattern,string sbuject[,array matches[,int flags]])
參數(shù)說(shuō)明:
pattern:必要參數(shù),需要匹配的正則表達(dá)式
subject:必要參數(shù),輸入的字符串matches:可選參數(shù)。輸出的搜索結(jié)果的數(shù)組,例如$out[0]將包含與整個(gè)模式匹配的結(jié)果,$out[1]將包含與第一個(gè)捕獲的括號(hào)中的子模式所匹配的結(jié)果,一次類推
flags:可選參數(shù),標(biāo)記:PREG_OFFSET_CAPTURE,對(duì)每個(gè)出現(xiàn)的匹配結(jié)果頁(yè)同時(shí)返回共附屬的字符串偏移量三,函數(shù)實(shí)現(xiàn)過(guò)程
1,添加商品功能
添加商品功能的實(shí)現(xiàn)原理是:首先創(chuàng)建一個(gè)購(gòu)物車(chē),然后以商品展示頁(yè)中“購(gòu)買(mǎi)”鏈接傳遞的商品ID($_GET[id])為依據(jù),向購(gòu)物車(chē)中添加商品(商品ID),并且不允許重復(fù)添加。向購(gòu)物車(chē)中添加商品的操作通過(guò)by_commodity.php文件來(lái)完成。
首先,創(chuàng)建一個(gè)購(gòu)物車(chē)。
然后,判斷購(gòu)物車(chē)中是否為空,如果為空,則將商品的ID和數(shù)量添加到購(gòu)物車(chē)中;如果不為空,則要判斷添加商品的ID是否在購(gòu)物車(chē)中已經(jīng)存在,如果存在則不能重復(fù)添加,否則將商品ID添加到購(gòu)物車(chē)中。
添加商品程序代碼如下:
復(fù)制代碼 代碼如下:
?php
header("Content-type:text/html;charset= utf-8");
session_start();//初始化session變量
session_register("goodsid");//定義session變量用于存儲(chǔ)商品ID
session_register("goodsnum");//定義session變量用于存儲(chǔ)購(gòu)買(mǎi)商品的數(shù)量
if($_SESSION["goodsid"]=="" && $_SESSION["goodsnum"]==""){//判斷session變量是否為空
$_SESSION["goodsid"]=$_GET["id"]."@";//如果session變量為空,則為其賦值為商品的ID,并以@分隔
$_SESSION["goodsnum"]="1@";//如果session變量為空,則為其賦值為1,并以@分隔
}else{//如果session變量不為空
$array=explode("@",$_SESSION["goodsid"]);//則以@為分隔符,將session變量中的數(shù)據(jù)寫(xiě)入到數(shù)組中
if(in_array($_GET["id"],$array)){//如果判讀數(shù)組中是否存在指定的ID
echo " script alert('該商品已經(jīng)被放入購(gòu)物車(chē)!');history.back(); /script
exit;
}
//如果數(shù)組中不存在指定的ID,則說(shuō)明該商品還沒(méi)有放入購(gòu)物車(chē)中
$_SESSION["goodsid"].=$_GET["id"]."@";//將該商品添加到購(gòu)物車(chē)中
$_SESSION["goodsnum"].="1@";//更改商品數(shù)量
}
echo " script window.location.href='shopping_car.php'; /script
?

2,刪除購(gòu)物車(chē)中商品功能的實(shí)現(xiàn)
刪除購(gòu)物車(chē)中商品的操作是根據(jù)“刪除該項(xiàng)”超級(jí)鏈接中傳遞的商品ID($_GET[id])執(zhí)行的。在delete_commodity.php文件中,根據(jù)$_GET[id]傳遞的值,執(zhí)行刪除購(gòu)物車(chē)中商品的操作。
首先,獲取$_GET[id]傳遞的值。然后,應(yīng)用explode()函數(shù),將Session變量中存儲(chǔ)的商品ID和數(shù)量的數(shù)據(jù)寫(xiě)入數(shù)組,并以@作為分隔符。
接著,應(yīng)用array_search()函數(shù),獲取數(shù)組中指定ID商品的鍵名,并根據(jù)獲取的鍵名將數(shù)組中指定的數(shù)據(jù)賦值為空。
最后,將數(shù)組中重新賦值的空數(shù)據(jù)寫(xiě)入購(gòu)物車(chē)中,從而完成刪除購(gòu)物車(chē)中指定商品的操作。
復(fù)制代碼 代碼如下:
?php
session_start();//初始化session變量
require("config.php");//連接smarty模板
$id=$_GET["id"];//獲取要?jiǎng)h除商品的ID
$arrayid=explode("@",$_SESSION["goodsid"]);//將購(gòu)物車(chē)中存儲(chǔ)的商品ID的字符串轉(zhuǎn)換到數(shù)組中
$arraynum=explode("@",$_SESSION["goodsnum"]);//將購(gòu)物車(chē)中存儲(chǔ)的商品數(shù)量的字符串轉(zhuǎn)換到數(shù)組中
$key=array_search($id,$arrayid);//獲取到數(shù)組中指定的數(shù)據(jù),并返回鍵名
$arrayid[$key]="";//根據(jù)返回的鍵名,將數(shù)組中的數(shù)據(jù)賦值為空
$arraynum[$key]="";//根據(jù)返回的鍵名,將數(shù)組中的數(shù)據(jù)賦值為空
$_SESSION["goodsid"]=implode("@",$arrayid);//重新將數(shù)組中的數(shù)據(jù)添加到購(gòu)物車(chē)中
$_SESSION["goodsnum"]=implode("@",$arraynum);//重新將數(shù)組中的數(shù)據(jù)添加到購(gòu)物車(chē)中
echo " script window.location.href='shopping_car.php'; /script
$smarty- display("shopping_car.tpl");
?

刪除前$_SESSION["goodsid"]的值為"3@2@5@",刪除$id=5后$_SESSION["goodsid"]的值為"3@2@@";這樣Session中存在多余的數(shù)據(jù)@。
解決方法:
復(fù)制代碼 代碼如下:
?php
session_register("goods"); //創(chuàng)建session數(shù)組
$id=$_GET['id'];
$arraygoods=$_SESSION["goods"];
if($_SESSION["goods"]==""){
$_SESSION["goods"][$id]="$id,1"; //根據(jù)商品ID保存商品,鍵名為$id,鍵值為$id,1(商品ID和購(gòu)買(mǎi)商品數(shù)量,默認(rèn)購(gòu)買(mǎi)數(shù)量為1)
}else{
if(array_key_exists($id,$_SESSION["goods"])){
echo " script alert('該商品已經(jīng)被放入購(gòu)物車(chē)!');history.back(); /script
exit;
}
$_SESSION["goods"][$id]="$id,1";
}
?

商品信息以數(shù)組形式保存,[4] = 4,4。鍵名為商品ID,值為鍵名和購(gòu)買(mǎi)商品數(shù)量。添加刪除商品只需要根據(jù)ID號(hào)找到對(duì)應(yīng)商品修改信息即可。
復(fù)制代碼 代碼如下:
Array
(
[4] = 4,4
[3] = 3,5
[1] = 1,10
[2] = 2,1
)

3,生成訂單功能的實(shí)現(xiàn)
生成訂單功能就是從數(shù)據(jù)庫(kù)中讀取出填寫(xiě)的訂單信息,對(duì)其內(nèi)容進(jìn)行重新整合,形成一個(gè)訂單模式,并且實(shí)現(xiàn)訂單打印和訂單預(yù)覽的功能。訂單生成的操作通過(guò)兩個(gè)文件來(lái)完成,一個(gè)是從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),將所需的數(shù)據(jù)賦值給指定的Smarty模板變量,并指定模板頁(yè)。
復(fù)制代碼 代碼如下:
?php
session_start();
header("Content-type:text/html;charset= utf-8");
require_once("conn.php");
require_once("config.php");
$array=array();//定義一個(gè)空數(shù)組
$ddnumber=base64_decode($_GET["ddno"]);
mysql_query("set names utf8");
$sql=mysql_query("select * from tb_commodity_order_form where ddnumber='".$ddnumber."'",$conn);
$info=mysql_fetch_array($sql);
array_push($array,$info);//將獲取的數(shù)組值寫(xiě)入到新的數(shù)組中
$smarty- assign("info",$array);
$array=explode("@",$info["spc"]);
$arraynum=explode("@",$info["slc"]);
$totalprice=0;//定義價(jià)格變量
$arrayinfo=array();//創(chuàng)建數(shù)組
for($i=0;$i count($array);$i++){
if($array[$i]!=""){
$sqlcart=mysql_query("select * from tb_commodity where tb_commodity_id='".$array[$i]."'",$conn);
$infocart=mysql_fetch_array($sqlcart);//讀取數(shù)據(jù)庫(kù)中數(shù)據(jù)
$totalprices=$infocart["tb_commodity_price"]*$arraynum["$i"];//計(jì)算總的價(jià)格
array_push($infocart,$arraynum["$i"]); //將購(gòu)買(mǎi)數(shù)量的數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)中返回的數(shù)組中
array_push($infocart,$totalprices); //將購(gòu)買(mǎi)數(shù)量的數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)中返回的數(shù)組中
array_push($arrayinfo,$infocart); //將整理的數(shù)據(jù)壓入到創(chuàng)建的新數(shù)組中
$totalprice+=$infocart["tb_commodity_price"]*$arraynum["$i"];//計(jì)算總的價(jià)格
}
}
session_unregister("goods");
if(count($arrayinfo) 0){//判斷數(shù)組是否為空
$gnum=count($arrayinfo);
$smarty- assign("isShow","T");
$smarty- assign("gnum",$gnum);
$smarty- assign("myrow",$arrayinfo);
$smarty- assign("totalprice",$totalprice);
}else{
$smarty- assign("isShow","F");
}
$smarty- display("shopping_dd.tpl");
?

另一個(gè)是shopping_dd.tpl模板頁(yè),輸出模板變量中存儲(chǔ)的數(shù)據(jù),生成一個(gè)訂單。四,源代碼下載:點(diǎn)擊下載
PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
96精品视频| 狠狠操视频网站| 人人干在线视频| 97视频在线观看网站| 国产无遮挡又黄又爽免费网站| www.五月色.com| xxx国产精品| 黄色网址在线免费播放| 免费看av大片| 国产一卡2卡3卡免费网站| 国产秀色在线www免费观看| 国产天堂视频| 国产福利电影在线观看| 国产精品被窝福利一区 | 国产叼嘿网站免费观看不用充会员| 国产性网软件大全| 91精品大全| 国产主播福利在线| 国产成人综合亚洲欧美在| 天天操中文字幕视频| 成年网站免费入口在线观看| 国产黄色免费网| 日本成人网址| 国产高清一级片| 亚洲私人影吧| 国产精品视频h| www.久草.com| 国产二级c片l毛片| 精品亚洲综合| 精品中文字幕不卡在线视频| 国产丝袜精品丝袜| 久草在线资源福利| 日本视频在线观看一区二区三区| 国产探花在线观看| 国产毛片在线| 福利视频网站导航| baoyu777.永久免费视频| 国产高清自拍视频在线观看 | 国产丝袜精品丝袜| 国产在线资源| 日本卡一卡2卡3卡4精品卡网站| 国产经典三级在线| 国产欧美在线观看视频| 狠狠狠狠狠狠操| 免费特级黄毛片| 亚洲精品男人| 免费黄色网页在线观看| 亚洲人在线播放| www.操.com| 成人欧美日韩| 国产精品久久一区二区三区不卡| 国产美女自拍视频| 黄色国产网站在线播放| 黄网站app在线观看下载视频大全官网| 思思99精品视频在线观看| 国产精品入口麻豆电影| 国产高清在线| 操人视频91| 中文字幕亚洲免费| 中文字幕高清av| 国产激情自拍| 欧美性猛交xxxxbbbb| 国产自产视频| 99色在线视频| 国产高清免费视频| 四虎成人精品在永久在线观看| www.av在线| 国产一级在线观看www色| 国产99re| 黄色片大全在线观看| 国产美女视频一区二区三区| 精品视频二区| 国产在线高潮| av在线官网| 国产精品秘入口| 久久一本精品| 99爱视频在线观看| 五月亚洲综合| 欧美高清视频| 在线中文资源天堂| 久草视频国产| av亚洲男人天堂| 日本最新在线视频| www.操操操.com| 精品国产二区三区| 狠狠操视频网| 在线视频观看你懂的| 丁香视频免费观看| 四虎成人欧美精品在永久在线| 国产小视频免费在线网址| 欧美啪啪精品| 亚洲欧洲成人| 在线看黄网址| 四虎国产精品永久地址998| 国产小黄视频| 天堂中文在线观看| 国产乱子视频| gogogo影视剧免费观看在线观看| 九九久久久2| www.av在线| 在线视频中文字幕| 91在线视频免费看| 国产www网站| 国产黄色网页| 97一区二区三区| 亚洲图区综合| 青青草免费在线观看| jlzzjlzz欧美大全| 天天干天天摸| 天堂在线看视频| 国产欧美在线观看视频| 国产香蕉尹人视频在线| 国产秀色在线www免费观看| 天堂在线免费观看| 高潮白浆视频| 国产免费黄色| 国产三区在线观看| 精品国内自产拍在线视频| 伊人av免费在线观看| av在线免费播放| 成人无遮挡免费网站视频在线观看| 国产麻豆精品视频一区二区 | 国产精品一区二三区| 最近中文字幕在线中文视频| 国产视频三区| 一级二级在线观看| 欧美日韩久久中文字幕| 国产麻豆综合视频在线观看| 国产一二三在线观看| 国产福利在线播放| 日本片在线看| 在线91av| 四虎一区二区三区| 自拍av在线| 亚洲精品国自产拍在线观看| 国产在线一二三| 97在线免费| 久草亚洲一区| 在线天堂av| 国产理论片免费观看| 中文在线观看视频| 中文在线官网天堂| 国产精品臀控福利在线观看| 国产videos| 国产区视频在线播放| 免费看成年人视频在线观看| 国产黄色免费网| 久久精品国产麻豆| 亚洲私人影吧| 国产女主播在线| 福利视频在线看| 国产精品爱久久久久久久小说| 免费观看久久久久| www.夜夜操.com| 国产三级做爰在线观看| a视频在线观看免费| 国产一级二级在线| 欧美a免费在线| 欧美xxxxx性| 欧美日韩国产亚洲沙发| a视频在线看| av亚洲男人天堂| 香蕉视频免费在线播放| 国产成人精品男人的天堂538| 天天操天天操天天色天天要| 国产精选在线观看| 午夜av在线播放| 中文字幕国产欧美| 国产午夜视频| 国产精品国精产品一二| 国产偷窥老熟盗摄视频| 青青九九免费视频在线| 91桃色在线| 欧美黑人乱大交| 久久精品视频观看| 国产中文在线视频| 香蕉视频在线观看网站| 亚洲精品乱码电影在线观看| 在线视频观看你懂的| sm国产在线调教视频| а天堂8中文最新版在线官网| 亚洲人成电影| 黄色网址在线免费播放| 激情丁香婷婷| 国产一区二区三区福利| 国产黄在线看| 国产精品久久在线| 在线免费观看你懂的| 欧美午夜电影一区二区三区| 国产美女在线观看| 9999在线视频| 国产精品亚洲第五区在线| 国产馆av播放| www.91在线播放| 国产午夜电影| 日本不卡影院| 99中文字幕一区| 国产视频资源| 欧美a免费在线| 中文天堂av|