亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

YII Framework學習之request與response用法(基于CHttpRequest響應)

2020-03-22 18:23:52
字體:
來源:轉載
供稿:網友
PHP YII Framework學習之request與response用法(基于CHttpRequest響應)
本文實例講述了YII Framework學習之request與response用法。分享給大家供大家參考,具體如下:YII中提供了CHttpRequest,封裝了請求常用的方法。具體代碼如下:html' target='_blank'>class CHttpRequest extends CApplicationComponent public $enableCookieValidation=false; public $enableCsrfValidation=false; public $csrfTokenName='YII_CSRF_TOKEN'; public $csrfCookie; private $_requestUri; private $_pathInfo; private $_scriptFile; private $_scriptUrl; private $_hostInfo; private $_baseUrl; private $_cookies; private $_preferredLanguage; private $_csrfToken; private $_deleteParams; private $_putParams; public function init() parent::init(); $this- normalizeRequest(); protected function normalizeRequest() // normalize request if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) if(isset($_GET)) $_GET=$this- stripSlashes($_GET); if(isset($_POST)) $_POST=$this- stripSlashes($_POST); if(isset($_REQUEST)) $_REQUEST=$this- stripSlashes($_REQUEST); if(isset($_COOKIE)) $_COOKIE=$this- stripSlashes($_COOKIE); if($this- enableCsrfValidation) Yii::app()- attachEventHandler('onBeginRequest',array($this,'validateCsrfToken')); public function stripSlashes(&$data) return is_array($data) array_map(array($this,'stripSlashes'),$data):stripslashes($data); public function getParam($name,$defaultValue=null) return isset($_GET[$name]) $_GET[$name] : (isset($_POST[$name]) $_POST[$name] : $defaultValue); public function getQuery($name,$defaultValue=null) return isset($_GET[$name]) $_GET[$name] : $defaultValue; public function getPost($name,$defaultValue=null) return isset($_POST[$name]) $_POST[$name] : $defaultValue; public function getDelete($name,$defaultValue=null) if($this- _deleteParams===null) $this- _deleteParams=$this- getIsDeleteRequest() $this- getRestParams() : array(); return isset($this- _deleteParams[$name]) $this- _deleteParams[$name] : $defaultValue; public function getPut($name,$defaultValue=null) if($this- _putParams===null) $this- _putParams=$this- getIsPutRequest() $this- getRestParams() : array(); return isset($this- _putParams[$name]) $this- _putParams[$name] : $defaultValue; protected function getRestParams() $result=array(); if(function_exists('mb_parse_str')) mb_parse_str(file_get_contents('php://input'), $result); else parse_str(file_get_contents('php://input'), $result); return $result; public function getUrl() return $this- getRequestUri(); public function getHostInfo($schema='') if($this- _hostInfo===null) if($secure=$this- getIsSecureConnection()) $http='https'; else $http='http'; if(isset($_SERVER['HTTP_HOST'])) $this- _hostInfo=$http.'://'.$_SERVER['HTTP_HOST']; else $this- _hostInfo=$http.'://'.$_SERVER['SERVER_NAME']; $port=$secure $this- getSecurePort() : $this- getPort(); if(($port!==80 && !$secure) || ($port!==443 && $secure)) $this- _hostInfo.=':'.$port; if($schema!=='') $secure=$this- getIsSecureConnection(); if($secure && $schema==='https' || !$secure && $schema==='http') return $this- _hostInfo; $port=$schema==='https' $this- getSecurePort() : $this- getPort(); if($port!==80 && $schema==='http' || $port!==443 && $schema==='https') $port=':'.$port; else $port=''; $pos=strpos($this- _hostInfo,':'); return $schema.substr($this- _hostInfo,$pos,strcspn($this- _hostInfo,':',$pos+1)+1).$port; else return $this- _hostInfo; public function setHostInfo($value) $this- _hostInfo=rtrim($value,'/'); public function getBaseUrl($absolute=false) if($this- _baseUrl===null) $this- _baseUrl=rtrim(dirname($this- getScriptUrl()),'///'); return $absolute $this- getHostInfo() . $this- _baseUrl : $this- _baseUrl; public function setBaseUrl($value) $this- _baseUrl=$value; public function getScriptUrl() if($this- _scriptUrl===null) $scriptName=basename($_SERVER['SCRIPT_FILENAME']); if(basename($_SERVER['SCRIPT_NAME'])===$scriptName) $this- _scriptUrl=$_SERVER['SCRIPT_NAME']; else if(basename($_SERVER['PHP_SELF'])===$scriptName) $this- _scriptUrl=$_SERVER['PHP_SELF']; else if(isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME'])===$scriptName) $this- _scriptUrl=$_SERVER['ORIG_SCRIPT_NAME']; else if(($pos=strpos($_SERVER['PHP_SELF'],'/'.$scriptName))!==false) $this- _scriptUrl=substr($_SERVER['SCRIPT_NAME'],0,$pos).'/'.$scriptName; else if(isset($_SERVER['DOCUMENT_ROOT']) && strpos($_SERVER['SCRIPT_FILENAME'],$_SERVER['DOCUMENT_ROOT'])===0) $this- _scriptUrl=str_replace('//','/',str_replace($_SERVER['DOCUMENT_ROOT'],'',$_SERVER['SCRIPT_FILENAME'])); else throw new CException(Yii::t('yii','CHttpRequest is unable to determine the entry script URL.')); return $this- _scriptUrl; public function setScriptUrl($value) $this- _scriptUrl='/'.trim($value,'/'); public function getPathInfo() if($this- _pathInfo===null) $pathInfo=$this- getRequestUri(); if(($pos=strpos($pathInfo,' '))!==false) $pathInfo=substr($pathInfo,0,$pos); $pathInfo=urldecode($pathInfo); $scriptUrl=$this- getScriptUrl(); $baseUrl=$this- getBaseUrl(); if(strpos($pathInfo,$scriptUrl)===0) $pathInfo=substr($pathInfo,strlen($scriptUrl)); else if($baseUrl==='' || strpos($pathInfo,$baseUrl)===0) $pathInfo=substr($pathInfo,strlen($baseUrl)); else if(strpos($_SERVER['PHP_SELF'],$scriptUrl)===0) $pathInfo=substr($_SERVER['PHP_SELF'],strlen($scriptUrl)); else throw new CException(Yii::t('yii','CHttpRequest is unable to determine the path info of the request.')); $this- _pathInfo=trim($pathInfo,'/'); return $this- _pathInfo; public function getRequestUri() if($this- _requestUri===null) if(isset($_SERVER['HTTP_X_REWRITE_URL'])) // IIS $this- _requestUri=$_SERVER['HTTP_X_REWRITE_URL']; else if(isset($_SERVER['REQUEST_URI'])) $this- _requestUri=$_SERVER['REQUEST_URI']; if(isset($_SERVER['HTTP_HOST'])) if(strpos($this- _requestUri,$_SERVER['HTTP_HOST'])!==false) $this- _requestUri=preg_replace('/^/w+:////[^//]+/','',$this- _requestUri); else $this- _requestUri=preg_replace('/^(http|https):////[^//]+/i','',$this- _requestUri); else if(isset($_SERVER['ORIG_PATH_INFO'])) // IIS 5.0 CGI $this- _requestUri=$_SERVER['ORIG_PATH_INFO']; if(!empty($_SERVER['QUERY_STRING'])) $this- _requestUri.=' '.$_SERVER['QUERY_STRING']; else throw new CException(Yii::t('yii','CHttpRequest is unable to determine the request URI.')); return $this- _requestUri; public function getQueryString() return isset($_SERVER['QUERY_STRING']) $_SERVER['QUERY_STRING']:''; public function getIsSecureConnection() return isset($_SERVER['HTTPS']) && !strcasecmp($_SERVER['HTTPS'],'on'); public function getRequestType() return strtoupper(isset($_SERVER['REQUEST_METHOD']) $_SERVER['REQUEST_METHOD']:'GET'); public function getIsPostRequest() return isset($_SERVER['REQUEST_METHOD']) && !strcasecmp($_SERVER['REQUEST_METHOD'],'POST'); public function getIsDeleteRequest() return isset($_SERVER['REQUEST_METHOD']) && !strcasecmp($_SERVER['REQUEST_METHOD'],'DELETE'); public function getIsPutRequest() return isset($_SERVER['REQUEST_METHOD']) && !strcasecmp($_SERVER['REQUEST_METHOD'],'PUT'); public function getIsAjaxRequest() return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest'; public function getServerName() return $_SERVER['SERVER_NAME']; public function getServerPort() return $_SERVER['SERVER_PORT']; public function getUrlReferrer() return isset($_SERVER['HTTP_REFERER']) $_SERVER['HTTP_REFERER']:null; public function getUserAgent() return isset($_SERVER['HTTP_USER_AGENT']) $_SERVER['HTTP_USER_AGENT']:null; public function getUserHostAddress() return isset($_SERVER['REMOTE_ADDR']) $_SERVER['REMOTE_ADDR']:'127.0.0.1'; public function getUserHost() return isset($_SERVER['REMOTE_HOST']) $_SERVER['REMOTE_HOST']:null; public function getScriptFile() if($this- _scriptFile!==null) return $this- _scriptFile; else return $this- _scriptFile=realpath($_SERVER['SCRIPT_FILENAME']); public function getBrowser($userAgent=null) return get_browser($userAgent,true); public function getAcceptTypes() return isset($_SERVER['HTTP_ACCEPT']) $_SERVER['HTTP_ACCEPT']:null; private $_port; public function getPort() if($this- _port===null) $this- _port=!$this- getIsSecureConnection() && isset($_SERVER['SERVER_PORT']) (int)$_SERVER['SERVER_PORT'] : 80; return $this- _port; public function setPort($value) $this- _port=(int)$value; $this- _hostInfo=null; private $_securePort; public function getSecurePort() if($this- _securePort===null) $this- _securePort=$this- getIsSecureConnection() && isset($_SERVER['SERVER_PORT']) (int)$_SERVER['SERVER_PORT'] : 443; return $this- _securePort; public function setSecurePort($value) $this- _securePort=(int)$value; $this- _hostInfo=null; public function getCookies() if($this- _cookies!==null) return $this- _cookies; else return $this- _cookies=new CCookieCollection($this); public function redirect($url,$terminate=true,$statusCode=302) if(strpos($url,'/')===0) $url=$this- getHostInfo().$url; header('Location: '.$url, true, $statusCode); if($terminate) Yii::app()- end(); public function getPreferredLanguage() if($this- _preferredLanguage===null) if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && ($n=preg_match_all('/([/w/-_]+)/s*(;/s*q/s*=/s*(/d*/./d*)) /',$_SERVER['HTTP_ACCEPT_LANGUAGE'],$matches)) 0) $languages=array(); for($i=0;$i ++$i) $languages[$matches[1][$i]]=empty($matches[3][$i]) 1.0 : floatval($matches[3][$i]); arsort($languages); foreach($languages as $language= $pref) return $this- _preferredLanguage=CLocale::getCanonicalID($language); return $this- _preferredLanguage=false; return $this- _preferredLanguage; public function sendFile($fileName,$content,$mimeType=null,$terminate=true) if($mimeType===null) if(($mimeType=CFileHelper::getMimeTypeByExtension($fileName))===null) $mimeType='text/plain'; header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-type: $mimeType"); if(ini_get("output_handler")=='') header('Content-Length: '.(function_exists('mb_strlen') mb_strlen($content,'8bit') : strlen($content))); header("Content-Disposition: attachment; filename=/"$fileName/""); header('Content-Transfer-Encoding: binary'); if($terminate) // clean up the application first because the file downloading could take long time // which may cause timeout of some resources (such as DB connection) Yii::app()- end(0,false); echo $content; exit(0); else echo $content; public function xSendFile($filePath, $options=array()) if(!is_file($filePath)) return false; if(!isset($options['saveName'])) $options['saveName']=basename($filePath); if(!isset($options['mimeType'])) if(($options['mimeType']=CFileHelper::getMimeTypeByExtension($filePath))===null) $options['mimeType']='text/plain'; if(!isset($options['xHeader'])) $options['xHeader']='X-Sendfile'; header('Content-type: '.$options['mimeType']); header('Content-Disposition: attachment; filename="'.$options['saveName'].'"'); header(trim($options['xHeader']).': '.$filePath); if(!isset($options['terminate']) || $options['terminate']) Yii::app()- end(); return true; public function getCsrfToken() if($this- _csrfToken===null) $cookie=$this- getCookies()- itemAt($this- csrfTokenName); if(!$cookie || ($this- _csrfToken=$cookie- value)==null) $cookie=$this- createCsrfCookie(); $this- _csrfToken=$cookie- value; $this- getCookies()- add($cookie- name,$cookie); return $this- _csrfToken; protected function createCsrfCookie() $cookie=new CHttpCookie($this- csrfTokenName,sha1(uniqid(mt_rand(),true))); if(is_array($this- csrfCookie)) foreach($this- csrfCookie as $name= $value) $cookie- $name=$value; return $cookie; public function validateCsrfToken($event) if($this- getIsPostRequest()) // only validate POST requests $cookies=$this- getCookies(); if($cookies- contains($this- csrfTokenName) && isset($_POST[$this- csrfTokenName])) $tokenFromCookie=$cookies- itemAt($this- csrfTokenName)- value; $tokenFromPost=$_POST[$this- csrfTokenName]; $valid=$tokenFromCookie===$tokenFromPost; else $valid=false; if(!$valid) throw new CHttpException(400,Yii::t('yii','The CSRF token could not be verified.'));request操作的相關方法,一目了然。public function init() parent::init(); $this- normalizeRequest();protected function normalizeRequest() // normalize request if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) if(isset($_GET)) $_GET=$this- stripSlashes($_GET); if(isset($_POST)) $_POST=$this- stripSlashes($_POST); if(isset($_REQUEST)) $_REQUEST=$this- stripSlashes($_REQUEST); if(isset($_COOKIE)) $_COOKIE=$this- stripSlashes($_COOKIE); if($this- enableCsrfValidation) Yii::app()- attachEventHandler('onBeginRequest',array($this,'validateCsrfToken'));public function stripSlashes(&$data) return is_array($data) array_map(array($this,'stripSlashes'),$data):stripslashes($data);可以看到yii對$_GET/$_POST/$_REQUEST/$_COOKIE進行了必要的過濾處理,所以可以放心的使用數據。常用的有如下方法:獲取get參數public function getParam($name,$defaultValue=null)獲取get參數public function getQuery($name,$defaultValue=null)獲取post數據public function getPost($name,$defaultValue=null)獲取請求的urlpublic function getUrl()獲取主機信息public function getHostInfo($schema='')設置public function setHostInfo($value)獲取根目錄public function getBaseUrl($absolute=false)獲取當前urlpublic function getScriptUrl()獲取請求的urlpublic function getRequestUri()獲取querystringpublic function getQueryString()判斷是否是httpspublic function getIsSecureConnection()獲取請求類型public function getRequestType()是否是post請求public function getIsPostRequest()是否是ajax請求public function getIsAjaxRequest()獲取服務器名稱public function getServerName()獲取服務端口public function getServerPort()獲取引用路徑public function getUrlReferrer()獲取用戶ip地址public function getUserHostAddress()獲取用戶主機名稱public function getUserHost()獲取執行腳本名稱public function getScriptFile()獲取cookiepublic function getCookies()重定向public function redirect($url,$terminate=true,$statusCode=302)設置下載文件頭public function sendFile($fileName,$content,$mimeType=null,$terminate=true)if($mimeType===null)if(($mimeType=CFileHelper::getMimeTypeByExtension($fileName))===null)$mimeType='text/plain';header('Pragma: public');header('Expires: 0');header('Cache-Control: must-revalidate, post-check=0, pre-check=0');header("Content-type: $mimeType");if(ini_get("output_handler")=='')header('Content-Length: '.(function_exists('mb_strlen') mb_strlen($content,'8bit') : strlen($content)));header("Content-Disposition: attachment; filename=/"$fileName/"");header('Content-Transfer-Encoding: binary');if($terminate)// clean up the application first because the file downloading could take long time// which may cause timeout of some resources (such as DB connection)Yii::app()- end(0,false);echo $content;exit(0);echo $content;public function xSendFile($filePath, $options=array())if(!is_file($filePath))return false;if(!isset($options['saveName']))$options['saveName']=basename($filePath);if(!isset($options['mimeType']))if(($options['mimeType']=CFileHelper::getMimeTypeByExtension($filePath))===null)$options['mimeType']='text/plain';if(!isset($options['xHeader']))$options['xHeader']='X-Sendfile';header('Content-type: '.$options['mimeType']);header('Content-Disposition: attachment; filename="'.$options['saveName'].'"');header(trim($options['xHeader']).': '.$filePath);if(!isset($options['terminate']) || $options['terminate'])Yii::app()- end();return true;為了防止csrf,yii提供了相應的方法

CSRF(Cross-site request forgery),中文名稱:跨站請求偽造,也被稱為:one click attack/session riding,縮寫為:CSRF/XSRF。
《CSRF的攻擊方式詳解 黑客必備知識》
)public function getCsrfToken()if($this- _csrfToken===null)$cookie=$this- getCookies()- itemAt($this- csrfTokenName);if(!$cookie || ($this- _csrfToken=$cookie- value)==null)$cookie=$this- createCsrfCookie();$this- _csrfToken=$cookie- value;$this- getCookies()- add($cookie- name,$cookie);return $this- _csrfToken;protected function createCsrfCookie()$cookie=new CHttpCookie($this- csrfTokenName,sha1(uniqid(mt_rand(),true)));if(is_array($this- csrfCookie))foreach($this- csrfCookie as $name= $value)$cookie- $name=$value;return $cookie;public function validateCsrfToken($event)if($this- getIsPostRequest())// only validate POST requests$cookies=$this- getCookies();if($cookies- contains($this- csrfTokenName) && isset($_POST[$this- csrfTokenName]))$tokenFromCookie=$cookies- itemAt($this- csrfTokenName)- value;$tokenFromPost=$_POST[$this- csrfTokenName];$valid=$tokenFromCookie===$tokenFromPost;$valid=false;if(!$valid)throw new CHttpException(400,Yii::t('yii','The CSRF token could not be verified.'));對于$_GET的使用,不僅僅可以使用$_GET和以上提供的相關方法,在action中,可以綁定到action的方法參數。http://www.yiiframework.com/doc/guide/1.1/zh_cn/basics.controller這里就一并羅列官方給出的說明。從版本 1.1.4 開始,Yii 提供了對自動動作參數綁定的支持。 就是說,控制器動作可以定義命名的參數,參數的值將由 Yii 自動從 $_GET 填充。為了詳細說明此功能,假設我們需要為 PostController 寫一個 create 動作。此動作需要兩個參數:category: 一個整數,代表帖子(post)要發表在的那個分類的ID。
language: 一個字符串,代表帖子所使用的語言代碼。
從 $_GET 中提取參數時,我們可以不再下面這種無聊的代碼了:class PostController extends CController public function actionCreate() if(isset($_GET['category'])) $category=(int)$_GET['category']; else throw new CHttpException(404,'invalid request'); if(isset($_GET['language'])) $language=$_GET['language']; else $language='en'; // ... fun code starts here ...現在使用動作參數功能,我們可以更輕松的完成任務:class PostController extends CController public function actionCreate($category, $language='en') $category=(int)$category; // ... fun code starts here ...注意我們在動作方法 actionCreate 中添加了兩個參數。 這些參數的名字必須和我們想要從 $_GET 中提取的名字一致。 當用戶沒有在請求中指定 $language 參數時,這個參數會使用默認值 en 。 由于 $category 沒有默認值,如果用戶沒有在 $_GET 中提供 category 參數, 將會自動拋出一個 CHttpException (錯誤代碼 400) 異常。 Starting from version 1.1.5, Yii also supports array type detection for action parameters. This is done by PHP type hinting using the syntax like the following:class PostController extends CController public function actionCreate(array $categories) // Yii will make sure $categories be an arrayThat is, we add the keyword array in front of $categories in the method parameter declaration. By doing so, if $_GET['categories'] is a simple string, it will be converted into an array consisting of that string.Note: If a parameter is declared without the array type hint, it means the parameter must be a scalar (i.e., not an array). In this case, passing in an array parameter via $_GET would cause an HTTP exception.request的使用你只要保持和以前在php中的使用方式一樣,在yii中是不會出錯的更多關于Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产丝袜美女| 久久久精品久久| 国产福利精品在线| 久99久在线视频| 欧美中文字幕精品| 久久伊人精品一区二区三区| 日韩av电影在线网| 性色av一区二区三区红粉影视| 中文字幕亚洲天堂| 久久精品成人一区二区三区| 国产98色在线| 欧美精品久久久久久久| 久久精品99国产精品酒店日本| 91精品国产高清久久久久久久久| 国产午夜精品免费一区二区三区| 亚洲一区二区三区久久| 久久久av一区| 成人国产精品色哟哟| 欧美精品videossex88| 中文字幕日韩高清| 中文字幕亚洲色图| 国产成人精品电影久久久| 亚洲精品国产精品自产a区红杏吧| 久久的精品视频| 久久99久久亚洲国产| 欧美日韩中文字幕综合视频| 欧美午夜精品久久久久久浪潮| 国产精品国产三级国产aⅴ9色| 中文字幕亚洲激情| 欧美日韩国产激情| 热re91久久精品国99热蜜臀| 精品夜色国产国偷在线| 欧美日韩一区二区精品| 欧美wwwxxxx| 国产综合在线视频| 国内偷自视频区视频综合| 中文字幕一区二区精品| 久久国产精品影视| 国产精品444| 韩国福利视频一区| 亚洲天堂免费观看| 欧美日韩精品在线观看| 欧美视频在线观看 亚洲欧| 亚洲视频在线免费观看| 欧美大片在线看| 日韩电影在线观看免费| 亚洲自拍高清视频网站| 久久精品色欧美aⅴ一区二区| 国产v综合ⅴ日韩v欧美大片| 日本91av在线播放| 亚洲第一级黄色片| 美女性感视频久久久| 亚洲国产精品国自产拍av秋霞| 日本欧美爱爱爱| 国产精品久久久久久久av电影| 成人信息集中地欧美| 亚洲精品456在线播放狼人| 91在线免费观看网站| 亚洲视频第一页| 亚洲丝袜av一区| 成人免费视频97| 欧美性猛交xxxx乱大交3| 7777免费精品视频| 亚洲综合国产精品| 九九久久精品一区| 成人中心免费视频| 日本精品中文字幕| 中文字幕一区电影| 亚洲欧美激情另类校园| 色青青草原桃花久久综合| 国产精品视频不卡| 欧美精品激情在线观看| 最新日韩中文字幕| 久久久久久噜噜噜久久久精品| 亚洲自拍偷拍第一页| 亚洲人成在线观| 欧美另类老肥妇| 久久久久久久久久av| 国产精品无av码在线观看| 亚洲一区二区自拍| 91中文字幕在线观看| 国产精品91久久| 国产不卡精品视男人的天堂| 欧美在线视频一二三| 成人黄色av网站| 国产热re99久久6国产精品| 在线观看精品国产视频| 久久久91精品国产一区不卡| 亚洲欧美制服另类日韩| 精品国产乱码久久久久酒店| 91精品视频免费看| 亚洲欧美一区二区三区四区| 欧亚精品中文字幕| 久久精品电影网站| 国产精品久久久久久久久久ktv| 亚洲黄页视频免费观看| 欧美日韩国产精品一区二区不卡中文| 久久久精品在线| 尤物tv国产一区| 亚洲xxxx做受欧美| 日本久久精品视频| 57pao成人国产永久免费| 777精品视频| 日韩一区二区三区在线播放| 午夜精品久久久久久久白皮肤| 欧美在线免费视频| 亚洲wwwav| 日韩成人激情在线| 中文精品99久久国产香蕉| 亚洲欧美激情视频| 91精品国产综合久久香蕉| 亚洲视频一区二区三区| 日韩专区在线播放| 欧美日韩免费网站| 亚洲激情视频在线观看| 日本午夜在线亚洲.国产| 日韩亚洲国产中文字幕| 亚洲国产精品va在线看黑人动漫| 最近2019好看的中文字幕免费| 亚洲国产日韩一区| 91av视频在线观看| 尤物九九久久国产精品的特点| 亚洲第一中文字幕在线观看| 欧美风情在线观看| 91久久夜色精品国产网站| 亚洲欧美日韩中文视频| 国产日本欧美一区二区三区| 国产精品电影在线观看| 在线观看久久av| 中文字幕自拍vr一区二区三区| 欧美亚洲国产成人精品| 国内伊人久久久久久网站视频| 69av在线播放| 国产精品成人品| 欧美激情视频在线免费观看 欧美视频免费一| 欧美激情精品久久久久久蜜臀| 亚洲日本欧美日韩高观看| www.久久久久久.com| 色与欲影视天天看综合网| 国产精品三级美女白浆呻吟| 97久久精品人人澡人人爽缅北| 欧美日韩第一页| 国产精品999999| 亚洲欧美在线一区二区| 91精品国产自产91精品| 日韩有码视频在线| 91精品国产高清久久久久久91| 亚洲精品丝袜日韩| 亚洲天堂2020| 成人妇女淫片aaaa视频| 亚洲欧洲日产国产网站| 国产视频精品在线| 热久久视久久精品18亚洲精品| 亚洲无限乱码一二三四麻| 国产精品福利在线观看网址| 国产精品一区=区| 亚洲精品电影网| 97香蕉超级碰碰久久免费的优势| 伦伦影院午夜日韩欧美限制| 欧美性猛交xxxx免费看久久久| 日韩在线视频免费观看高清中文| 亚洲精品久久久久久久久久久久久| 国产在线精品一区免费香蕉| 国产精品精品视频|