整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「PHP基礎知識」在頁面中顯示“Hello World!”

          能要求

          在頁面中嵌入PHP代碼,通過PHP代碼中的echo語句在頁面中動態輸出“Hello World!”。

          實例代碼

          <!doctype html>

          <html>

          <head>

          <meta charset="utf-8">

          <title>在HTML頁面中嵌入PHP代碼</title>

          </head>

          <body>

          HTML代碼<br />

          <?php

          echo "Hello World<br />";

          ?>

          HTML代碼

          </body>

          </html>

          (此處已添加書籍卡片,請到客戶端查看)

          運行結果

          代碼分析

          <?php

          "Hello World<br />";

          ?>:使用“<?php …… ?>”中框起來的代碼為PHP代碼,<?php之前的代碼和?>之后的代碼為標準的HTML代碼。<?php:是PHP代碼的開始標記。?>:是PHP代碼的結束標記。echo "Hello World<br />";:表示向瀏覽器輸出字符串,后面用單引號包裹的內容就是字符串,最后的分號“;”表示該語句結束,可以編寫下一條語句。如果在這條語句后面沒有下一條語句“;”可以省略,否則會報錯。

          (此處已添加書籍卡片,請到客戶端查看)

          功能要求

          在頁面中嵌入PHP代碼,通過PHP代碼中的echo語句為頁面中顯示的信息改變字體和顏色。

          實例代碼

          <!doctype html>

          <html>

          <head>

          <meta charset="utf-8">

          <title>在HTML頁面中嵌入PHP代碼</title>

          </head>

          <body>

          <font color = "<?php echo 'red'; ?>">

          <?php echo "<b><i>PHP</i></b>";?>初體驗

          </font>

          </body>

          </html>

          運行結果

          代碼分析

          PHP代碼可以嵌套到HTML的任何位置。

          累點滴,匯成江海。咱們從最最基礎的PHP知識開始學習,一步一個腳印的開啟PHP的學習旅途吧。

          請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習PHP編程知識,變身快樂的編程達人吧~

          同學們好呀!木辛老師又來了。

          咱們在開始PHP的學習之前,需要先準備一個可以提供PHP服務的Web服務器。我們就復用木辛老師專欄中的一個教程,使用Homestead本地開發環境進行學習唄。

          傳送門:《Laravel第一課:搭建Laravel開發環境》

          也可以關注木辛老師的Laravel專欄喲:

          大家配置好本地開發環境以后,還需要稍微設置一下,針對這個項目,在Homestead配置文件中作如下設置,

          添加指向當前項目根目錄的配置:

          sites:
           - map: learning_php.test to: /Code/zyoo/learning_php
           to: /Code/zyoo/learning_php
          

          另外還需要在本機hosts文件中添加一個域名指向:

          sudo vim /etc/hosts
          

          并添加如下記錄:

          192.168.10.10 learning_php.test
          

          最后,添加一個測試文件:

          php代碼

          然后,打開瀏覽器,訪問域名查看頁面結果

          執行效果

          大家可以看到,我們已經可以成功的訪問到測試用的PHP文件了。

          好了,萬事俱備,只需要學習了。那么,咱們開始吧~

          創建示例應用:木辛老師的圖書館

          幾乎絕大部分服務器端的腳本語言最初設計的應用場景之一就是處理HTML表單。木辛老師要翻出家底,將自己最心愛的在線圖書商城,用來作為學習PHP基礎知識的場景吧。

          創建訂購圖書用的訂單表單

          通過這個表單頁面,我們可以知道顧客訂購的商品,訂單的金額以及其他一些附屬信息。HTML代碼請看下方:

          <html>
           <head>
           <title>木辛老師的PHP基礎入門教程</title>
           </head>
           <body>
           <form action="processorder.php" method="POST">
           <table style="border: 0px;">
           <tr style="background: #cccccc">
           <td style="width: 150px;text-align:center;">圖書名稱</td>
           <td style="width: 50px;text-align:center;">數量</td>
           </tr>
           <tr>
           <td>PHP入門指南</td>
           <td><input type="text" name=“book_name_01" size="3" maxlength="3"/></td>
           </tr>
           <tr>
           <td>PHP和MySQL開發</td>
           <td><input type="text" name="book_name_02" size="3" maxlength="3"/></td>
           </tr>
           <tr>
           <td>Laravel入門</td>
           <td><input type="text" name="book_name_03" size="3" maxlength="3"/></td>
           </tr>
           <tr>
           <td colspan="2" style="text-align: center;">
           <input type="submit" value="提交訂單"/>
           </td>
           </tr>
           </table>
           </form>
           </body>
          </html>
          

          咱么直接通過瀏覽器訪問這個HTML頁面,看看效果:

          頁面顯示

          哈,簡單的頁面,我們已經開啟Web開發神秘旅程了。繼續加油!

          大家可能注意到了一個細節:在html代碼的form表單部分,action屬性我們指向了一個php腳本:

          <form action="processorder.php" method="POST”>
          

          具體的PHP腳本的學習我們很快就能看到。這里只是稍微提一下,這個action屬性值就是用戶點擊“提交訂單”按鈕時將要請求的URL。

          用戶在表單中輸入的數據,會以POST的方式,發送給URL指向的PHP文件進行處理。

          表單處理

          那如何處理這個表單呢?又如何讓PHP代碼起作用的?

          要處理這個表單,我們需要創建一個php文件,它的名字需要和form中action屬性的值保持一致。

          那么,我們就創建一個名字叫做processorder.php的文件吧。

          代碼可以先這么寫,看看是否能起作用哈:

          <html>
           <head>
           <title>訂單處理結果</title>
           </head>
           <body>
           <h1> 木辛老師的在線圖書館</h1>
           <h2> 訂單處理結果通知</h2>
           <?php echo '<p>訂單已處理完成</p>'; // 這里是PHP的代碼 ?>
           </body>
          </html>
          

          保持文件,并刷新頁面。這個時候我們點擊“提交訂單”按鈕,效果如下:

          php執行結果

          大家可以看到,紅框部分就是通過PHP代碼輸出的結果。這樣,我們就實現了通過Web方式執行了PHP代碼的需求,這么一看PHP還是非常簡單的吧。

          我們順便在看看這個頁面的源代碼吧,看一下PHP代碼如何在HTML頁面中完成任務的吧:

          源代碼

          通過頁面源碼,我們發現剛才寫的PHP代碼已經不見了,取而代之的是

          <p>訂單已處理完成</p>
          

          這是怎么回事呢?

          這是因為PHP解釋器在腳本運行的時候,將該腳本的輸出替代了腳本自身的代碼,通過這種方式,就可以生成可以在任何瀏覽器上運行的HTML頁面了。也就是說,瀏覽器是不需要學會PHP的。

          通過這段代碼,我們可以學習一些PHP的基礎知識:

          1. PHP標記
          2. PHP語句
          3. 如何空格
          4. 添加注釋

          PHP標記

          第一種情況:在HTML中混寫PHP和HTML代碼,需要為php添加標記。PHP代碼會以“<?php”作為開始,以“?>”作為結束。這些符號就叫做PHP標記,它們主要用來告訴服務器PHP代碼的開始和截止,在這兩個起止符號之間的任何代碼,服務器都會以PHP語法來解析。

          另一種情況:之后,我們寫純PHP的時候,每個文件也需要添加PHP標記。不過呢,結束標記可以省略,這也是很大一部分PHPer默認遵守的規則。

          PHP語句

          在PHP的開始和截止標記之間,就是PHP語句了,通過這些內容可以告訴PHP解釋器應該進行如何的操作,在我們這個例子里,通過:

          echo '<p>訂單已處理完成</p>’;
          

          使用echo語句完成了一個非常簡單的操作,僅是將echo后邊的字符串原樣打印到瀏覽器中。這里需要特別注意的一點就是每個PHP語句后邊都需要添加英文的分號作為語句的結束符,否則會出現錯誤,但是在這個html頁面中,因為只有一句代碼,忽略掉分號也是不會報錯的。

          但是還是強烈建議大家養成習慣:每句PHP代碼結束都要以分號結尾喲!

          空格

          一般情況下,為了讓代碼更加清晰和整潔,在編碼的過程中會添加一些空格,這些空格包括:回車換行、空格、制表符等都被認為是空格。

          當然了,瀏覽器并不會在意你是否輸入了空格,同樣的PHP服務器端解析器也會忽略這些,這些空格僅是給編寫代碼的人看的。

          但是,木辛老師還是再次強烈建議,在代碼的適當位置添加空格或者空行,這樣做可以很有效的提升代碼的可閱讀性,方便后期的維護工作。

          注釋

          最后在講講注釋,理論上在編程中出現頻率非常高的一個知識點。

          為什么說理論上呢,因為這么重要的一個要點,在實際開發中很容易被廣大開發者忽略呢!

          由于種種原因吧,開發者很不習慣在開發過程中寫非常詳盡的注釋,而且有時候在Git提交時也是草草的一筆帶過。這樣做的后果就是,若干時間后,當你再次拿到這段代碼,可能會花費更多的時間梳理它。

          所以,善于寫注釋,也是提高生產效率的一種有效手段。

          PHP解釋器同樣會在執行的時候忽略掉注釋,也就是說就好比像空格一樣,PHP解析器會跳過注釋,它只負責執行PHP代碼!

          PHP腳本中的注釋比較豐富,有很多類似C語言的風格,比如:

          多行注釋:

          /* 這是
           一個
           多行
           注釋
          /*
          

          可以看出來,多行注釋以 /*開始,以*/結束。同樣的和C語言是一樣的,多行注釋是不能嵌套的。

          當然了,除了多行注釋之外,也支持單行注釋:

          echo '<p>訂單已處理完成</p>'; // 這里是PHP的代碼
          

          或者這種:

          echo '<p>訂單已處理完成</p>’; #這里是PHP的代碼
          

          不論采取哪種風格的注釋,在注釋符號之后的所有內容,PHP解釋器都會認識不需要處理的,這一點一定要注意呀!

          好了,今天的課程咱就先講到這里。

          小朋友們不要忘記關注我們喲 ,下期課程更精彩,請大家一起期待吧~

          快樂編程,快樂成長,拜拜!

          ndroid高階開發專欄

          Java高級開發進階專欄

          TCP連接的三次握手和四次揮手

          一文搞懂DNS域名解析的詳細流程

          高并發與負載均衡:Nginx的反向代理和負載均衡

          一文搞懂TCP/IP協議及Web基礎知識

          一文搞懂HTTP協議的核心知識點

          一文掌握 HTTP協議報文 包含的信息類型

          一文搞懂HTTP協議 返回結果的HTTP狀態碼

          一文搞懂 HTTP協議的報文首部


          作為網絡專欄的開篇導文,本文概況介紹下經典案例:從輸入一個網址到瀏覽器顯示頁面的全過程。

          步驟概要介紹如下:

          • 1、輸入網址
          • 2、DNS解析獲取域名對應的IP地址
          • 3、建立TCP連接
          • 4、web瀏覽器向web服務器發送HTTP請求
          • 5、服務器的永久重定向響應
          • 6、瀏覽器跟蹤重定向地址
          • 7、web服務器做出應答
          • 8、瀏覽器顯示 HTML
          • 9、瀏覽器發送請求獲取其他嵌入在 HTML 中的資源
          • 10、web服務器關閉TCP連接

          1、輸入網址

          當在瀏覽器中輸入網址時,瀏覽器其實就已在智能匹配 url 了,他會從歷史記錄,書簽等地方,找到已經輸入的字符串可能對應的 url,然后給出智能提示,讓你可以補全url地址。

          對于 google的chrome 的瀏覽器,他甚至會直接從緩存中把網頁展示出來,就是說,你還沒有按下 enter,頁面就出來了。


          2、DNS解析獲取域名對應的IP地址

          請求一旦發起,瀏覽器首先要做的事情就是解析這個域名。

          • 1、一般來說,瀏覽器會首先查看本地硬盤的 hosts 文件,看看其中有沒有和這個域名對應的規則,如果有的話就直接使用 hosts 文件里面的 ip 地址。
          • 2、如果在本地的 hosts 文件沒有能夠找到對應的 ip 地址,瀏覽器會發出一個 DNS請求到本地DNS服務器 。本地DNS服務器一般都是你的網絡接入服務器商提供,比如中國電信,中國移動。
          • 3、查詢你輸入的網址的DNS請求到達本地DNS服務器之后,本地DNS服務器會首先查詢它的緩存記錄,如果緩存中有此條記錄,就可以直接返回結果,此過程是遞歸的方式進行查詢。如果沒有,本地DNS服務器還要向DNS根服務器進行查詢。
          • 4、根DNS服務器沒有記錄具體的域名和IP地址的對應關系,而是告訴本地DNS服務器,你可以到域服務器上去繼續查詢,并給出域服務器的地址。這種過程是迭代的過程。
          • 5、本地DNS服務器繼續向域服務器發出請求,在這個例子中,請求的對象是.com域服務器。.com域服務器收到請求之后,也不會直接返回域名和IP地址的對應關系,而是告訴本地DNS服務器,你的域名的解析服務器的地址。
          • 6、最后,本地DNS服務器向域名的解析服務器發出請求,這時就能收到一個域名和IP地址對應關系,本地DNS服務器不僅要把IP地址返回給用戶電腦,還要把這個對應關系保存在緩存中,以備下次別的用戶查詢時,可以直接返回結果,加快網絡訪問。


          3、建立TCP連接

          在HTTP工作開始之前,web瀏覽器首先要通過網絡與web服務器建立連接,該連接是通過TCP來完成的。

          PS1:為什么要先建立TCP呢?

          因為HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議建立之后才能進行更高層次協議的連接,因此要先建立TCP連接,一般TCP連接的端口號是80

          PS2:擴展知識點:

          TCP連接的三次握手和斷開的四次揮手 參照站內文章:TCP 三次握手和四次揮手


          4、web瀏覽器向web服務器發送HTTP請求

          建立了TCP連接之后,web瀏覽器就會向web服務器發起一個http請求。

          一個典型的 http request header 一般需要包括請求的方法,例如 GET 或者 POST 等,不常用的還有 PUT 和 DELETE 、HEAD、OPTION以及 TRACE 方法,一般的瀏覽器只能發起 GET 或者 POST 請求。

          客戶端向服務器發起http請求的時候,會有一些請求信息,請求信息包含三個部分:

          • 請求方法URI協議/版本
          • 請求頭(Request Header)
          • 請求正文:

          下面是一個完整的HTTP請求例子:

          GET/sample.jspHTTP/1.1
          Accept:image/gif.image/jpeg,*/*
          Accept-Language:zh-cn
          Connection:Keep-Alive
          Host:localhost
          User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
          Accept-Encoding:gzip,deflate
          
          username=jinqiao&password=1234

          4.1、請求行

          請求的第一行是“方法URL議/版本”:GET/sample.jsp HTTP/1.1

          4.2、請求頭(Request Header)

          請求頭包含許多有關的客戶端環境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所用的語言,請求正文的長度等。

          Accept:image/gif.image/jpeg.*/*
          Accept-Language:zh-cn
          Connection:Keep-Alive
          Host:localhost
          User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
          Accept-Encoding:gzip,deflate.
          

          4.3、請求正文

          請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字符串信息:

          username=jinqiao&password=1234

          5、服務器的永久重定向響應

          服務器給瀏覽器響應一個301永久重定向響應,這樣瀏覽器就會訪問“http://www.google.com/” 而非“http://google.com/”。

          為什么服務器一定要重定向而不是直接發送用戶想看的網頁內容呢?其中一個原因跟搜索引擎排名有關。如果一個頁面有兩個地址,就像http://www.yy.com/和http://yy.com/,搜索引擎會認為它們是兩個網站,結果造成每個搜索鏈接都減少從而降低排名。而搜索引擎知道301永久重定向是什么意思,這樣就會把訪問帶www的和不帶www的地址歸到同一個網站排名下。還有就是用不同的地址會造成緩存友好性變差,當一個頁面有好幾個名字時,它可能會在緩存里出現好幾次。

          重定向原因:

          • 1、網站調整(如改變網頁目錄結構);
          • 2、網頁被移到一個新地址;
          • 3、網頁擴展名改變(如應用需要把.php改成.Html或.shtml)。

          這種情況下,如果不做重定向,則用戶收藏夾或搜索引擎數據庫中舊地址只能讓訪問客戶得到一個404頁面錯誤信息,訪問流量白白喪失;再者某些注冊了多個域名的網站,也需要通過重定向讓訪問這些域名的用戶自動跳轉到主站點等。


          6、瀏覽器跟蹤重定向地址

          現在瀏覽器知道了 "http://www.google.com/"才是要訪問的正確地址,所以它會發送另一個http請求。這里沒有啥好說的


          7、web服務器做出應答

          經過前面的步驟,服務器收到了我們的請求,也處理我們的請求,到這一步,它會把它的處理結果返回,也就是返回一個HTPP響應。

          HTTP響應與HTTP請求相似,HTTP響應也由3個部分構成,分別是:

          • 狀態行
          • 響應頭(Response Header)
          • 響應正文
          HTTP/1.1 200 OK
          Date: Sat, 31 Dec 2005 23:59:59 GMT
          Content-Type: text/html;charset=ISO-8859-1
          Content-Length: 122
          
          <html>
          <head>
          <title>http</title>
          </head>
          <body>
          <!-- body goes here -->
          </body>
          </html>

          7.1、狀態行:

          狀態行由協議版本、數字形式的狀態代碼、及相應的狀態描述,各元素之間以空格分隔。

          格式: HTTP-Version Status-Code Reason-Phrase CRLF

          例如: HTTP/1.1 200 OK \r\n

          -- 協議版本:是用http1.0還是其他版本

          -- 狀態描述:狀態描述給出了關于狀態代碼的簡短的文字描述。比如狀態代碼為200時的描述為 ok

          -- 狀態代碼:狀態代碼由三位數字組成,第一個數字定義了響應的類別,且有五種可能取值。

          狀態代碼具體協議定義如下:

          1xx:信息性狀態碼,表示服務器已接收了客戶端請求,客戶端可繼續發送請求。
          100 Continue
          101 Switching Protocols
          
          2xx:成功狀態碼,表示服務器已成功接收到請求并進行處理。
          200 OK 表示客戶端請求成功
          204 No Content 成功,但不返回任何實體的主體部分
          206 Partial Content 成功執行了一個范圍(Range)請求
          
          3xx:重定向狀態碼,表示服務器要求客戶端重定向。
          301 Moved Permanently 永久性重定向,響應報文的Location首部應該有該資源的新URL
          302 Found 臨時性重定向,響應報文的Location首部給出的URL用來臨時定位資源
          303 See Other 請求的資源存在著另一個URI,客戶端應使用GET方法定向獲取請求的資源
          304 Not Modified 服務器內容沒有更新,可以直接讀取瀏覽器緩存
          307 Temporary Redirect 臨時重定向。與302 Found含義一樣。302禁止POST變換為GET,但實際使用時并不一定,307則更多瀏覽器可能會遵循這一標準,但也依賴于瀏覽器具體實現
          
          4xx:客戶端錯誤狀態碼,表示客戶端的請求有非法內容。
          400 Bad Request 表示客戶端請求有語法錯誤,不能被服務器所理解
          401 Unauthonzed 表示請求未經授權,該狀態代碼必須與 WWW-Authenticate 報頭域一起使用
          403 Forbidden 表示服務器收到請求,但是拒絕提供服務,通常會在響應正文中給出不提供服務的原因
          404 Not Found 請求的資源不存在,例如,輸入了錯誤的URL
          
          5xx:服務器錯誤狀態碼,表示服務器未能正常處理客戶端的請求而出現意外錯誤。
          500 Internel Server Error 表示服務器發生不可預期的錯誤,導致無法完成客戶端的請求
          503 Service Unavailable 表示服務器當前不能夠處理客戶端的請求,在一段時間之后,服務器可能會恢復正常

          7.2、響應頭:

          響應頭部:由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號":"分隔。

          Date: Sat, 31 Dec 2005 23:59:59 GMT
          Content-Type: text/html;charset=ISO-8859-1
          Content-Length: 122

          典型的響應頭字段:

          7.3、響應正文

          包含著我們需要的一些具體信息,比如cookie,html,image,后端返回的請求數據等等。這里需要注意,響應正文和響應頭之間有一行空格,表示響應頭的信息到空格為止。


          8、瀏覽器顯示 HTML

          在瀏覽器沒有完整接受全部HTML文檔時,它就已經開始顯示這個頁面了,瀏覽器是如何把頁面呈現在屏幕上的呢?

          不同瀏覽器可能解析的過程不太一樣,這里我們只介紹webkit的渲染過程。下圖對應的就是WebKit渲染的過程,這個過程包括:

          解析html以構建dom樹 -> 構建render樹 -> 布局render樹 -> 繪制render樹:


          9、瀏覽器發送請求獲取嵌入在 HTML 中的資源(如圖片、音頻、視頻、CSS、JS等等)

          其實這個步驟可以并列在步驟8中,在瀏覽器顯示HTML時,它會注意到需要獲取其他地址內容的標簽。這時,瀏覽器會發送一個獲取請求來重新獲得這些文件。比如我要獲取外圖片,CSS,JS文件等,類似于下面的鏈接:

          圖片:http://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif

          CSS式樣表:http://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css

          JavaScript 文件:http://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js

          這些地址都要經歷一個和HTML讀取類似的過程。所以瀏覽器會在DNS中查找這些域名,發送請求,重定向等等...

          不像動態頁面,靜態文件會允許瀏覽器對其進行緩存。有的文件可能會不需要與服務器通訊,而從緩存中直接讀取,或者可以放到CDN中


          10、web服務器關閉TCP連接

          一般情況下,一旦web服務器向瀏覽器發送了請求數據后,它就要關閉TCP連接,然后如果瀏覽器或者服務器在其頭信息加入這行代碼:

          connection:keep-alive

          這樣TCP連接將依然保持打開狀態,瀏覽器可以繼續通過相同的連接發送請求,保持連接,節省了為每個請求建立新連接所需要的的事件,同時節省了寬帶

          實際上,在HTTP 1.1 版本的新特性中有一點是:默認持久連接節省通信量,只要客戶端、服務端任意一端沒有明確斷開TCP連接,可以發送多次HTTP請求。



          版權說明:摘錄到部分網絡資源,如存在版權問題,請私信聯系處理,謝謝!


          關注頭條號“編程家園”,后續陸續會有更多技術領域(包括并不限于Android進階、Java進階、Kotlin、網絡、Flutter、Python等),以及架構、職業規劃、職業思考等方面資料的免費分享,期待您的關注!


          主站蜘蛛池模板: 一区二区中文字幕| 国产精品无码AV一区二区三区| 国产在线不卡一区二区三区| 精品无人乱码一区二区三区| 日本高清不卡一区| 久久se精品一区二区影院| 精品国产日韩一区三区| 精品人妻系列无码一区二区三区 | 日韩AV无码一区二区三区不卡毛片| 亚洲日韩一区精品射精| 91一区二区视频| 久久国产精品无码一区二区三区| 国产一区二区三区高清在线观看| 日本一区午夜爱爱| 亚洲av成人一区二区三区在线观看| 成人精品视频一区二区| 国内精品一区二区三区在线观看 | 久久国产精品一区| www一区二区www免费| 一级毛片完整版免费播放一区 | 亚欧成人中文字幕一区 | 亚洲av无码片区一区二区三区| 国精产品一区二区三区糖心| 中文无码AV一区二区三区| 日本高清成本人视频一区| 伊人久久大香线蕉av一区| 精品少妇一区二区三区视频 | 成人无码精品一区二区三区| 精品久久久久久无码中文字幕一区| 97久久精品无码一区二区天美| 国产对白精品刺激一区二区| 蜜桃无码一区二区三区| 久久一区二区三区精品| 国产91精品一区二区麻豆网站 | 亚洲A∨精品一区二区三区| 香蕉视频一区二区| 少妇特黄A一区二区三区| 中文字幕AV一区二区三区| 国产精品一区二区三区高清在线| 一区二区三区在线视频播放| 久久影院亚洲一区|