先後端開發(2):瀏覽器與PHP程序的交互

上一節介紹怎麼在mac電腦上啓用PHP程序,而且演示了一個簡單的例子,這個例子運行時,涉及了瀏覽器、apache以及PHP程序的交互,這三者的關係大概是這樣的:
PHP程序的位置php

通常來講,瀏覽器(或者相似功能的程序)給apache(或者其它服務器)發送的數據稱做「表單」,表單就至關一個「界面」,小程以爲從「界面」入手去理解交互的流程是一個可行的辦法。html

本文介紹如何提交一個表單,以及引起的相應交互。 那麼,在瀏覽器上點擊一個「按鈕」,會引起什麼樣的交互行爲呢?apache

(一)交互一,瀏覽器給apache發送數據

瀏覽器以表單的形式給apache發送數據。瀏覽器

表單的標籤是:服務器

,好比下面一個html頁面,留意裏面
標籤的內容:

<html>
<meta charset="utf-8">
<body>
<form action="login.php" method="post">
暱稱:<input type="text" name="name">
口號:<input type="text" name="slogan">
<input type="submit" value="提交">
</form>
</body>
</html>

html頁面(至關於總體的界面),包括中的內容,由瀏覽器來解析。好比上面的這個html頁面,解析後的樣子是這樣的:
一個簡單的表單界面post

能夠看到,有兩個文本輸入框,還有一個提交按鈕。url

若是瀏覽器只作解析顯示的工做,那就沒有apache跟PHP程序什麼事情了。實際上,瀏覽器常常要把數據發送給apache,而發送的數據就是標籤(即表單)的數據。code

表單數據,能夠在標籤中找到,其中能夠包括按鈕、下拉菜單、文本輸入框等等元素。好比上面那個表單:
表單中的元素orm

注意,上面的表單,還把PHP代碼文件發給了apache,若是項目目錄(默認是/Library/WebServer/Documents)下面沒有這個php文件,那麼在點擊提交按鈕後,會看到這樣的提示:
找不到php文件htm

那麼,發送的時機是什麼?即瀏覽器在何時發送表單數據給apache?

在點擊「submit」類型的按鈕的時候觸發發送。若是沒有submit按鈕,則須要經過js主動觸發表單的submit事件。

另外,在發送的method上,區分爲get與post方式。

get方法,表單的全部信息都出如今請求的url中(在地址欄上能夠看到),對於長度也有限制。好比,這樣的get請求:

http://localhost/formtest.html?name=abc&slogan=hello+world

其中name與slogan是鍵(key),而abc與hello world是對應的值(value),表單的數據就是鍵值對的集合。

post方法,請求時不會顯示錶單的任何數據,對於長度限制也很弱。

(二)交互二,PHP代碼訪問表單的內容

表單中能夠指定把項目目錄中的php文件的內容(或者當前的腳本--好比既有表單又有php代碼)提交給apache。apache在拿到php代碼後,會交由PHP程序來處理,而這些php代碼極可能須要訪問表單的內容,好比login.php代碼中,須要訪問表單中的文本框的內容,那如何訪問呢?

表單的內容(鍵值對的集合),會保存在$_GET變量(get方法時)或$_POST變量(post方法時)中,這個在apache調用PHP程序時就初始化好。

因此,PHP代碼能夠經過訪問$_GET或$_POST變量來訪問表單的內容。

好比,login.php的代碼能夠這樣寫:

<meta charset="utf-8">
你好,<?php echo $_GET["name"]; ?>! <br>
你的口號是:<?php echo $_GET["slogan"];?> !

再次提交這個表單時,在瀏覽器上能夠看到這樣的提示:
訪問表單內容後的輸出

明顯,還要區分是用$_GET仍是$_POST是麻煩的,這時,可使用$_REQUEST變量來訪問,$_REQUEST對於get或post方式都適用。

應該留意到,PHP程序解析出結果後,把結果返回給apache,apache返回html頁面給瀏覽器,最終瀏覽器顯示結果。

總結一下,本文從一個簡單表單請求的例子入手,介紹了表單的概念,以及請求過程當中涉及到的兩個重要的交互,並引出了_REQUEST等變量的使用。


slogan

相關文章
相關標籤/搜索