亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? username-password database for tclhttpd.mht

?? TCL的數據庫處理支撐庫及一些示例
?? MHT
?? 第 1 頁 / 共 3 頁
字號:
From: =?gb2312?B?08kgV2luZG93cyBJbnRlcm5ldCBFeHBsb3JlciA3ILGjtOY=?=
Subject: Username/Password Database for Tclhttpd
Date: Fri, 29 Feb 2008 00:32:55 +0800
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0081_01C87A6A.A0310BB0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6000.16545

這是 MIME 格式的多方郵件。

------=_NextPart_000_0081_01C87A6A.A0310BB0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://wiki.tcl.tk/8657

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML lang=3Den><HEAD><TITLE>Username/Password Database for =
Tclhttpd</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dutf-8">
<STYLE type=3Dtext/css media=3Dall>@import url( /wikit.css );
</STYLE>
<LINK title=3DRSS href=3D"/rss.xml" type=3Dapplication/rss+xml =
rel=3Dalternate><!--[if lte IE 6]>=0A=
		<style type=3D'text/css' media=3D'all'>@import 'ie6.css';</style>=0A=
	<![endif]--><!--[if gte IE 7]>
<STYLE type=3Dtext/css media=3Dall>@import url( ie7.css );
</STYLE>
<![endif]-->
<SCRIPT type=3Dtext/javascript>=0A=
	    function init() {=0A=
		// quit if this function has already been called=0A=
		if (arguments.callee.done) return;=0A=
=0A=
		// flag this function so we don't do the same thing twice=0A=
		arguments.callee.done =3D true;=0A=
=0A=
		try {=0A=
		    checkTOC();=0A=
		} catch (err) {=0A=
		    /* nothing */=0A=
		}=0A=
	    };=0A=
=0A=
	    /* for Mozilla */=0A=
	    if (document.addEventListener) {=0A=
		document.addEventListener("DOMContentLoaded", init, false);=0A=
	    }=0A=
=0A=
	    /* for Internet Explorer */=0A=
	    /*@cc_on @*/=0A=
	    /*@if (@_win32)=0A=
	    document.write("<script defer src=3Die_onload.js><\/script>");=0A=
	    /*@end @*/=0A=
	    =0A=
	    /* for other browsers */=0A=
	    window.onload =3D init;=0A=
	</SCRIPT>

<META content=3D"MSHTML 6.00.6000.16609" name=3DGENERATOR></HEAD>
<BODY>
<DIV class=3Dcontainer>
<DIV class=3Dheader>
<DIV class=3Dlogo><A class=3Dlogo =
href=3D"http://wiki.tcl.tk/">wiki.tcl.tk</A> </DIV>
<DIV class=3Dtitle id=3Dtitle><A title=3D"click to see 2 references to =
this page"=20
href=3D"http://wiki.tcl.tk/_ref/8657">Username/Password Database for=20
Tclhttpd</A></DIV>
<DIV class=3Dupdated id=3Dupdated>Updated 2005-06-15 14:21:22 <A =
class=3Ddelta=20
href=3D"http://wiki.tcl.tk/_diff/8657#diff0">=E2=96=B2</A></DIV></DIV>
<DIV id=3Dwrapper>
<DIV id=3Dcontent>
<P>The following example shows a username/password database for <A=20
href=3D"http://wiki.tcl.tk/2085">Tclhttpd</A>. It uses the following</P>
<UL>
  <LI>Metakit for the database=20
  <LI>logic and code from the <A =
href=3D"http://wiki.tcl.tk/6137">formkit</A>=20
  package=20
  <LI><A href=3D"http://wiki.tcl.tk/1070">crypt in pure tcl</A> from the =
wiki for=20
  the passwords=20
  <LI>The Tclhttpd session module for row(record) locking and session=20
  control.</LI></UL>
<P><B>***</B> 10 July 2003 <A href=3D"http://wiki.tcl.tk/6132">Jeff =
Smith</A> <I>A=20
<A href=3D"http://wiki.tcl.tk/3661">Starkit</A> with a few extra =
features can be=20
found at</I> [<A href=3D"http://www.freewebs.com/headsup/userpassdb.htm" =

rel=3Dnofollow>1</A>] <B>***</B></P>
<P>Create a "dbdata" directory under the Doc_Root directory (usually=20
htdocs).</P>
<P><B>The following files are all saved to the custom directory in=20
Tclhttpd.</B></P>
<P>Get the <A href=3D"http://wiki.tcl.tk/1070">crypt in pure tcl</A> =
package and=20
save it to tclcrypt.tcl Change the proc name from crypt to tclcrypt. =
This is to=20
avoid name conflicts as Tclhttpd looks for the unix crypt.</P>
<P>Edit the first line and change it from</P><PRE> proc crypt {password =
salt} {</PRE>
<P>to</P><PRE> proc tclcrypt {password salt} {</PRE>
<P>Save the following</P>
<H4>******** Begin fmkt.tcl =
********************************************</H4><PRE> # This an example =
of a username/password database for the Tclhttpd webserver.
 # It uses Metakit for the database and uses ideas from formkit for
 # row or record locking. It uses the session module from Tclhttpd for =
session
 # control and crypt in pure tclfrom the wiki.

 # Set up the Database

 mk::file open users [Doc_Root]/dbdata/users.dat

 mk::view layout users.details {user longname location phone email pass =
}

 # Register Document type handler.

 Mtype_Add .fmkt application/x-tcl-fmkt

 # Set the start page that is used to launch a new session.

 set Fmkt(startpage) /start.tml

 # Set the time in seconds that a session will last for.

 set Fmkt(age) 300

 proc Doc_application/x-tcl-fmkt {path suffix sock} {
     upvar #0 Httpd$sock data
     global Fmkt

     append data(query) ""
     set queryList [Url_DecodeQuery $data(query)]

     # Destroy any old session that are laying around. In this instance
     # 5 minutes is the setting.

     Session_Reap $Fmkt(age) Fmkt

     # Find the current session (or start a new one if session=3Dnew).

     set session [Session_Match $queryList Fmkt error]

     if {$session =3D=3D {}} {
         Fmkt_ErrorPage $sock "The session no longer exists!  $error"
         return
     }

     # Process the query data from the previous page.

     if [catch {FmktProcess $session $queryList} result] {
         Httpd_ReturnData $sock text/html $result
         return
     }
     # Expand the page in the correct session interpreter, or treat
     # the page as ordinary html if the session has ended.

     switch -exact -- $result {
         0 { Httpd_ReturnFile $sock text/html $path }
         1 { Doc_Subst $sock $path interp$session }
         2 { Fmkt_ErrorPage $sock "This record locked by another user!" =
}
         3 { Fmkt_ErrorPage $sock "Must enter a character!" }
         4 { Fmkt_ErrorPage $sock "Record has been saved!" }
     }
 }

 # The purpose of this procedure is to process the form query data.
 # Based on the query data certain procedures are triggered.
 # Parameters
 #   session:  the session id
 #   query:    a list of names and values produced by Url_DecodeQuery

 proc FmktProcess {session query} {
     global Fmkt
     upvar #0 Session:$session state
     set interp $state(interp)

     # Process each query item.
     # Some items, such as "session" and "user" are treated
     # specially.
     # Upon completion, zero or more of the following may occur:
     #   Variables and values are set in the appropriate slave
     #   interpreter.
     #   The user is defined in the state array.
     #   The session is destroyed.

     foreach {name value} $query {
         if {[string match "user" $name]} {
             set user [string trim $value]
             if {[string match $user ""]} {
                 Session_Destroy $session
                 return 3
             } elseif {![info exist state(user)]} {
                 if {[Fmkt_UserLock $user]} {
                     Session_Destroy $session
                     return 2
                 } else {
                     set state(user) $user
                     interp eval $interp [list set user $user]
                 }
             }
         } elseif {[string match "cancel" $name] &amp;&amp; $value} {
             Session_Destroy $session
             return 0
         } elseif {[string match "save" $name] &amp;&amp; $value} {
             if {[Fmkt_DbSave $session $query]} {
                 Session_Destroy $session
                 return 4
             } else {
                 return 1
             }
         } else {
             # Define variables in the slave interpreter so they are =
there before
             # we do a Doc_Subst on the page!
             interp eval $interp [list set $name $value]
         }
     }
     return 1
 }

 proc Fmkt_ErrorPage {sock error} {
     global Fmkt
     upvar #0 Httpd$sock data
         append result "&lt;META HTTP-EQUIV=3D\"REFRESH\" =
CONTENT=3D\"3;URL=3D$Fmkt(startpage)\"&gt;"
         append result $error&lt;BR&gt;&lt;P&gt;
         append result " This page will redirect to the &lt;A =
HREF=3D$Fmkt(startpage)&gt;start page&lt;/A&gt;"
         Httpd_ReturnData $sock text/html $result
 }

 # Set the Formkit tag and view for the open datafile.
 proc Fmkt_DbView {session db view} {
     upvar #0 Session:$session state
     set state(db) $db
     set state(view) $view
     return ""
 }

 # Check that the row or record is not being edited
 # by another session.

 proc Fmkt_UserLock {user} {
     foreach id [info globals Session:*] {
       upvar #0 $id session
       if {[info exist session(user)]} {
           if {[string match $session(user) $user]} {
                return 1
           }
       }
     }
     return 0
 }

 # Retrieve row based on unique "user" and drop values
 # in the session's slave interpreter

 proc Fmkt_DbLookup {session} {
     upvar #0 Session:$session state
     set interp $state(interp)
     if {[info exists state(errorpass)]} {
         return
     } else {
         set position [mk::select $state(db).$state(view) -exact user =
$state(user)]
         if {[string match "" $position]} {
             foreach name [mk::view info $state(db).$state(view)] {
                if {[string match "user" $name]} {
                    continue
                } else {
                    interp eval $interp [list set $name ""]
                }
             }
         } else {
             set state(pass) [mk::get $state(db).$state(view)!$position =
pass]
             foreach {name value} [mk::get =
$state(db).$state(view)!$position] {
                     interp eval $interp [list set $name $value]
             }
         }
     unset position
     interp eval $interp [list set newpass ""]
     interp eval $interp [list set vfypass ""]
     }
 }

 # Collect all the return values and check if password and verify =
password
 # match. Crypt the password then write the values back to the database.

 proc Fmkt_DbSave {session query} {
     upvar #0 Session:$session state
     set interp $state(interp)
     lappend field_values user $state(user)

     foreach {name value} $query {
              if {[string match "session" $name]} {
                  continue
              } elseif {[string match "save" $name]} {
                  continue
              } elseif {[string match "newpass" $name]} {
                  set $name $value
                  interp eval $interp [list set $name $value]
              } elseif {[string match "vfypass" $name]} {
                  set $name $value
                  interp eval $interp [list set $name $value]
              } else {
                set $name $value
                lappend field_values $name $value
                interp eval $interp [list set $name $value]
              }
     }
     set newpass [string trim $newpass]
     set vfypass [string trim $vfypass]
     if {![info exists state(pass)]} {
         if {[string match $newpass ""]} {
              set state(errorpass) "Must enter a password!"
              return 0
            }
     }
     if {[string compare $newpass $vfypass] !=3D 0} {
          set state(errorpass) "New and Verify Passwords do not match!"
          return 0
     }
     set position [mk::select $state(db).$state(view) -exact user =
$state(user)]
     lappend field_values pass [Fmkt_passCrypt $newpass]
     if {[string match "" $position]} {
         eval mk::row append $state(db).$state(view) $field_values
     } else {
         eval mk::set $state(db).$state(view)!$position $field_values
     }
     mk::file commit $state(db)
     unset field_values
     return 1
 }

 proc Fmkt_passCrypt {newpass} {
     set passcrypt [tclcrypt $newpass 91]
     return $passcrypt
 }

 proc Fmkt_formSession {session args} {
     upvar #0 Session:$session state

     append result "&lt;input type=3Dhidden name=3Dsession =
value=3D\"$session\"&gt;"
     return $result
 }

 proc Fmkt_errorPass {session} {
     upvar #0 Session:$session state

     if {[info exists state(errorpass)]} {
         return $state(errorpass)
     } else {
         return
     }
 }

 # Use this procedure for authentication. It is to be called from
 # a .tclaccess file in the Directory you want authenticated access too.
 # In the .tclaccess file put the following
 #     set realm "TclHttpd"
 #     set callback Fmkt_AuthChecker

 proc Fmkt_AuthChecker {sock realm user pass} {

 set row [mk::select users.details -exact user $user]
 array set userdb [mk::get users.details!$row]

 set salt [string range $userdb(pass) 0 1]
 set passcrypt [tclcrypt $pass $salt]
     if {[string compare $user $userdb(user)] =3D=3D 0 &amp;&amp;
             [string compare $passcrypt $userdb(pass)] =3D=3D 0} {
         return 1
     } else {
         return 0
     }
 }</PRE>
<H4>**************************** End fmkt.tcl =
**************************</H4>
<P><B>The following are placed in the /htdocs directory</B></P>
<H4>******** Begin start.tml ************</H4><PRE> [
 Doc_Dynamic
 ]

 &lt;!Doctype HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&gt;
 &lt;Html&gt;
 &lt;Head&gt;
 &lt;Title&gt;Start.tml&lt;/Title&gt;
 &lt;/Head&gt;
 &lt;Body&gt;

 &lt;p&gt;
 This an example of a username/password database..
 &lt;p&gt;
 &lt;a HREF=3D"page1.fmkt?session=3Dnew"&gt;Start Session&lt;/a&gt;

 &lt;/Body&gt;
 &lt;/Html&gt;</PRE>
<H4>************** End start.tml **************</H4>
<H4>**************Begin page1.fmkt ************</H4><PRE> [
 DbView users details
 ]

 &lt;html&gt;
 &lt;head&gt;
 &lt;meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dwindows-1252"&gt;
 &lt;title&gt;Page1.fmkt&lt;/title&gt;
 &lt;/head&gt;

 &lt;body&gt;
 &lt;H3&gt;Add or Edit a User&lt;/H3&gt;
 &lt;form method=3D"POST" action=3D"page2.fmkt"&gt;
 [formSession]
 &lt;p&gt;&lt;input type=3D"submit" value=3D"Add/Edit a Username" =
&gt;&lt;input type=3D"text" name=3D"user" size=3D"25"&gt;&lt;/p&gt;
 &lt;/form&gt;
 &lt;form method=3D"POST" action=3D"page1.fmkt"&gt;
 &lt;p&gt;
 &lt;input type=3D"submit" value=3D"Cancel"&gt;&lt;input type=3D"hidden" =
name=3D"cancel"&gt;
 &lt;/form&gt;
 &lt;/body&gt;
 &lt;/html&gt;</PRE>
<H4>************ End page1.fmkt **************</H4>
<H4>************ Begin page2.fmkt ************</H4><PRE> &lt;html&gt;
 &lt;head&gt;
 &lt;meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dwindows-1252"&gt;
 &lt;title&gt;Page2.fmkt&lt;/title&gt;
 &lt;/head&gt;

 &lt;body&gt;
 &lt;form method=3D"POST" action=3D"page2.fmkt"&gt;

 [formSession]
 [DbLookup]
 &lt;input type=3Dhidden name=3Dsave value=3D1&gt;
 &lt;TABLE width=3D\"600\" bgcolor=3D\"#cc3300\" border=3D\"1\" =
cellpadding=3D\"3\" cellspacing=3D\"3\"&gt;
 &lt;TR&gt;
 &lt;TD&gt;Username:&lt;/TD&gt;&lt;TD&gt;$user&lt;/TD&gt;
 &lt;/TR&gt;&lt;TR&gt;
 &lt;TD&gt;Name:&lt;/TD&gt;&lt;TD&gt;&lt;INPUT type=3D\"TEXT\" =
size=3D\"25\" name=3D\"longname\" value=3D\"$longname\"&gt;&lt;/TD&gt;
 &lt;/TR&gt;&lt;TR&gt;
 &lt;TD&gt;Location:&lt;/TD&gt;&lt;TD&gt;&lt;INPUT type=3D\"TEXT\" =
size=3D\"25\" name=3D\"location\" value=3D\"$location\"&gt;&lt;/TD&gt;
 &lt;/TR&gt;&lt;TR&gt;
 &lt;TD&gt;Phone:&lt;/TD&gt;&lt;TD&gt;&lt;INPUT type=3D\"TEXT\" =
size=3D\"25\" name=3D\"phone\" value=3D\"$phone\"&gt;&lt;/TD&gt;
 &lt;/TR&gt;&lt;TR&gt;
 &lt;TD&gt;Email:&lt;/TD&gt;&lt;TD&gt;&lt;INPUT type=3D\"TEXT\" =
size=3D\"25\" name=3D\"email\" value=3D\"$email\"&gt;&lt;/TD&gt;
 &lt;/TR&gt;&lt;TR&gt;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
加勒比av一区二区| 欧美系列亚洲系列| 日韩女同互慰一区二区| 亚洲欧洲美洲综合色网| 国产成人三级在线观看| 欧美浪妇xxxx高跟鞋交| 久久久亚洲精华液精华液精华液 | 欧美剧在线免费观看网站 | 中文字幕av一区二区三区高 | 一区二区欧美国产| 精品成人一区二区三区| 色激情天天射综合网| 国产一区二区在线免费观看| 午夜一区二区三区在线观看| 亚洲欧洲精品天堂一级| 日韩亚洲欧美成人一区| 色网站国产精品| 国产成人免费高清| 久久99精品久久久久| 亚洲一区二区黄色| 国产精品二区一区二区aⅴ污介绍| 91精品国产美女浴室洗澡无遮挡| 91香蕉视频黄| 国产盗摄精品一区二区三区在线 | 精品一区二区精品| 亚洲大型综合色站| 亚洲黄色av一区| 国产精品久久一级| 久久亚洲欧美国产精品乐播| 欧美一区午夜精品| 欧美三级中文字| 91色porny蝌蚪| 成人免费毛片嘿嘿连载视频| 国产精品一区二区久久不卡| 国产在线国偷精品产拍免费yy| 午夜精品久久久久久久99樱桃| 综合久久给合久久狠狠狠97色| 久久久91精品国产一区二区精品| 精品少妇一区二区三区免费观看 | 国产精品三级视频| 国产午夜精品一区二区三区嫩草 | 亚洲国产综合视频在线观看| 亚洲日本青草视频在线怡红院 | 欧美午夜精品久久久| 成人开心网精品视频| 国产一区在线视频| 激情深爱一区二区| 国产美女主播视频一区| 国产剧情一区二区| 国产一区二区三区日韩| 国产在线不卡一卡二卡三卡四卡| 麻豆视频一区二区| 日本一区中文字幕| 黄色成人免费在线| 国产在线一区观看| 国产精品性做久久久久久| 国产风韵犹存在线视精品| 国产一区二区在线视频| 国产99久久久国产精品潘金| 99久久久久免费精品国产| 在线视频欧美精品| 欧美日韩精品一二三区| 4438x成人网最大色成网站| 精品裸体舞一区二区三区| 欧美精品一区在线观看| 国产精品视频一二| 亚洲精品国产一区二区精华液| 一区二区激情视频| 日本亚洲免费观看| 国产老妇另类xxxxx| 99久久99精品久久久久久 | 久久精品亚洲一区二区三区浴池| 欧美国产欧美亚州国产日韩mv天天看完整 | 色综合久久综合网97色综合 | 日韩精品中文字幕在线一区| 久久久精品一品道一区| 日韩久久一区二区| 午夜欧美大尺度福利影院在线看| 精品亚洲成a人| 99久久久久久99| 欧美一级日韩免费不卡| 国产欧美1区2区3区| 亚洲国产va精品久久久不卡综合| 秋霞午夜av一区二区三区| 成人免费毛片片v| 在线视频你懂得一区二区三区| 日韩一区二区三区视频在线观看| 国产欧美日韩精品a在线观看| 亚洲自拍偷拍麻豆| 国产精品羞羞答答xxdd| 欧美日韩视频在线第一区 | 欧美精品一区二区三区蜜桃视频 | 91官网在线免费观看| 日韩一区国产二区欧美三区| 国产精品国产三级国产a| 日韩va欧美va亚洲va久久| 成人综合激情网| 欧美精品三级在线观看| 久久久高清一区二区三区| 一区二区激情视频| 懂色av中文一区二区三区| 欧美二区乱c少妇| 中文字幕日韩av资源站| 精品午夜一区二区三区在线观看| 在线亚洲高清视频| 国产日产欧产精品推荐色| 免费精品视频在线| 在线观看日韩毛片| 国产精品视频观看| 精品中文字幕一区二区| 欧美日韩1区2区| 亚洲丝袜精品丝袜在线| 国产成人免费在线观看不卡| 91麻豆精品国产91久久久久久久久 | 成人国产精品免费| 精品国产乱码久久久久久闺蜜| 亚洲伊人伊色伊影伊综合网| gogo大胆日本视频一区| 日本一二三不卡| 久久av中文字幕片| 3d成人h动漫网站入口| 亚洲一区二区三区不卡国产欧美| 波多野结衣在线aⅴ中文字幕不卡| 精品少妇一区二区三区日产乱码| 日本大胆欧美人术艺术动态| 欧美日韩精品一区视频| 亚洲成人在线免费| 在线观看一区日韩| 一区二区三区在线视频观看58| www.综合网.com| 国产精品你懂的在线| 国产成人自拍网| 中文乱码免费一区二区| 国产传媒日韩欧美成人| 国产欧美日韩不卡免费| 国产一区二区免费在线| 精品国产sm最大网站免费看| 日韩小视频在线观看专区| 亚洲午夜国产一区99re久久| 91浏览器打开| 亚洲美女免费视频| 99久久精品99国产精品| 国产三级三级三级精品8ⅰ区| 国产一区二区三区久久悠悠色av| 欧美精品丝袜中出| 亚洲高清视频的网址| 9i在线看片成人免费| 久久综合色一综合色88| 黑人巨大精品欧美黑白配亚洲| 欧美日韩一区二区三区四区 | 九九国产精品视频| 色视频一区二区| **网站欧美大片在线观看| 精品一区二区三区免费| 欧美成人乱码一区二区三区| 免费人成黄页网站在线一区二区| 欧美高清性hdvideosex| 亚洲免费观看高清在线观看| 欧美日韩午夜精品| 日韩高清在线观看| 日韩一区二区三区精品视频| 丝瓜av网站精品一区二区| 欧美电视剧在线观看完整版| 麻豆精品视频在线观看视频| 日韩欧美成人午夜| 国产一区二区免费在线| 日韩理论在线观看| 欧美综合一区二区| 亚洲第一福利一区| 日韩欧美中文字幕制服| 国产成人自拍在线| 亚洲欧美在线aaa| 欧美日韩五月天| 免费在线看成人av| 国产精品美女久久久久久久久久久| 国产成人福利片| 亚洲欧美日韩在线| 91国偷自产一区二区开放时间 | 成人永久免费视频| 亚洲私人影院在线观看| 在线观看亚洲精品| 丝袜美腿亚洲一区二区图片| 国产欧美一区二区三区在线老狼| 成人免费黄色大片| 亚洲一线二线三线视频| 欧美图区在线视频| 国产成人av资源| 亚洲午夜日本在线观看| 日韩免费观看高清完整版| 成人高清在线视频| 日韩精品久久久久久| 久久久久99精品国产片| 色综合天天综合网国产成人综合天| 亚洲3atv精品一区二区三区| 精品日韩av一区二区| 色悠悠久久综合| 久久国产精品99精品国产 | 久久久精品一品道一区| 色婷婷综合久久久久中文| 久久成人久久爱|