網頁設計 EP08-PHP 表單處理(上)

更新 發佈閱讀 12 分鐘

這個系列介紹了PHP很多的基本知識,有輸出以及查型別等等,但不知道大家有沒有發現就是沒有輸入,其實是因為PHP主要是在伺服器端執行,所以輸入就要搭配HTML form,扮演使用者與伺服器之間互動的橋樑,表單處理(Form Handling)透過HTML表單收集使用者輸入,並使用PHP的 $_GET 或 $_POST 超全域變數在伺服器端接收數據。

該系列會分為表單常用標籤介紹以及表單驗證,在開始之前可以先在htdocs下建立一個表單網頁 formaction.html 和接收資料的 form.php,接下來就先來認識 form 標籤以及其他常見標籤吧!

表單<form>

<form>標籤用來建立一個 HTML 表單容器,也因為是容器,所以裡面可以放入其他標籤,來建構出完整的表單內容,屬於區塊元素(block),會換行以及佔滿整行寬度,可設定寬高,使用者可以透過 form 傳送資料到 web 伺服器處理,例如即將實作的登入介面就是最常見的範例。

支援屬性

action : 目標網址,告訴瀏覽器要將資料發送到的位置。

<form action="http://localhost:8080/test/form.php">
       <!-- ....僅供學習使用 .... -->
</form>

method : 資料傳輸的 HTTP 協議,通常使用 get(將資料放在請求網址的網址參數列送出) 或 post(將資料放在HTTP傳輸封包的body中送出。

<form action="http://localhost:8080/test/form.php" method = 'post'>
       <!-- ....僅供學習使用 .... -->
</form>
<!-- ....我是分隔線.... -->
<form action="http://localhost:8080/test/form.php" method = 'get'>
       <!-- ....僅供學習使用 .... -->
</form>

name : 表單名稱,一份 HTML 裡表單名稱不可重複。

<form action="http://localhost:8080/test/form.php" name = 'form1'>
       <!-- ....僅供學習使用 .... -->
</form>

autocomplete : 表單欄位是否會自動輸入 ( 在有輸入過的狀態下 ),可設定 on (預設)或 off。

<form action="http://localhost:8080/test/form.php" autocomplete="on">
       <!-- ....僅供學習使用 .... -->
</form>

novalidate : 傳送資料時不對輸入資料進行驗證,像是<input>的type屬性為email時,如果輸入的不是email的格式就會出現警告訊息。

<form action="http://localhost:8080/test/form.php" novalidate>
       <input name="email" type="email">
<button type="submit">送出</button>
</form>

enctype : 設定表單傳送到伺服器的編碼方式。

application/x-www-form-urlencoded(預設) : 將資料轉為 key1=value1&key2=value2 格式,特殊字元會被編碼(如空白變成 %20),用於一般登入、搜尋、純文字表單。

multipart/form-data : 資料會被切成多個部分每個欄位都有自己的邊界,不會對內容進行編碼。用於控制表單文件的上傳,<input>的type屬性為file時使用。

text/plain : 將資料以純文字發送,不進行任何編碼。

<form action="http://localhost:8080/test/form.php" enctype="multipart/form-data">
       <!-- ....僅供學習使用 .... -->
</form>

target : 伺服器處理資料回傳後,顯示資料的位置。

_self : 顯示在表單所在的當前視窗。

_blank : 顯示在新頁籤/視窗。

_parent : 顯示在上一層(父層)的視窗。

_top : 顯示在最頂層的視窗。

<form action="http://localhost:8080/test/form.php" target="_blank">
       <!-- ....僅供學習使用 .... -->
</form>

這些屬性可能很熟悉,在BOM (Browser Object Model) 視窗層級出現過的概念。


accept-charset : 設定表單文字編碼,可以設定 UTF-8、ASCII 或 ISO-8859-1。

<form action="http://localhost:8080/test/form.php" accept-charset="ISO-8859-1">
       <!-- ....僅供學習使用 .... -->
</form>

rel : 控制註釋和表單創建的連接類型。

<form action="http://localhost:8080/test/form.php" rel="nofollow">
       <!-- ....僅供學習使用 .... -->
</form>

autocapitalize : 控制輸入文本是否自動大寫,以及如何自動大寫。

<form action="http://localhost:8080/test/form.php" autocapitalize="on">
       <!-- ....僅供學習使用 .... -->
</form>

輸入<input>

input 輸入元素是 HTML 表單元件裡最重要也最特別的元素,可以根據類型 type 屬性的設定,轉換成不同的輸入型態,來與使用者互動並讓使用者輸入資料,下圖為常見的輸入型態。

圖一、常見input輸入型態

圖一、常見input輸入型態

容器<div>

是區塊容器元素,用來包裹其他html元素,只要任何需要排版的位置,都有可能會透過<div>搭配 css(selector) 以及 js (html dom)進行編排,並將 HTML 文件的內容整理出不同獨立區塊 (block)。

<head>
<style>
    .account{ <!-- ....class css語法 .... -->
         background-color:red;
         width: 200px;
         height:auto;
        }
#pw{ <!-- ....id css語法 .... -->
background-color:blue;
}
</style>
</head>
<body>
<div class="account">
    <form action="http://localhost:8080/test/form.php">
      <input type="text"> 
    </form>
</div>
<div id="pw">
    <form>
      <input type="password"> 
    </form>
</div>
</body>

id vs class

ID(id)與類別(class)都是可套用到標籤上的屬性,設定 ID 就像幫標籤取一個「專屬的名字」,只能用一次,而類別(class) 就像是幫標籤貼上一個「分類」,可以重複使用。

CSS 的語法分別是寫一個# id名稱{}. class名稱{},大括號內放入套用的屬性以及屬性值,之後只要修改 ID 或類別的 CSS,有套用過的標籤都會同步修改。

標籤<label>

為表單的欄位標題元素,通常作為表單的標題,為了提升便利性,利用 label 的 for屬性來增加表單元件的可點擊範圍,將 for 的屬性值設定為某表單元件的 id 值,藉此來建立關聯,或者是把表單元件寫在 label 元素裡面,以便隱式關聯。除此之外,form屬性用於定義該標籤所屬的一個或多個表單(<form>),解決 <label> 必須在 <form> 內部才能關聯控制項的限制。它允許標籤文字位於表單外部,透過 id 連結到特定的表單控制項,提升無障礙體驗。

<form id = "myform" action="http://localhost:8080/test/form.php">
<label for="username">使用者名稱: </label>
<input type="text" id="username">

<label for ="password">密碼: <input type='password' id="password"></label>
</form>

<label form="myform" for="username">測試用: </label>

按鈕<button>

為可點擊的按鈕元素,通常會放在表單裡面讓使用者點擊,除了可以用來做為表單的送出之外,還可以用來做些特效讓網友互動,也因為是容器型標籤(Container Tags),甚至可以包含豐富內容,像是文字與圖像等等其他html標籤。

支援屬性

disabled : 停用按鈕,僅能看不能點擊。

name : 按鈕名稱。

type : 按鈕類型,有 button(普通按鈕)、reset(重設按鈕)、submit(提交按鈕)。

value : 隨表單送出的值。

<button disabled> ok </button>
<button name="press"> ok </button>
<button type="reset">重設用</button>
<button value > </button>

本篇文章到這裡就結束了,如果喜歡我的文章或覺得有用的話,歡迎動動手指點擊愛心,你/妳的支持是我最大的動力,我們下篇文章見🙌。

留言
avatar-img
逃的沙龍
3會員
13內容數
分享學習路上的內容與心得
逃的沙龍的其他內容
2026/03/03
本篇文章將深入探討 PHP 函數的核心概念,從內建函數的介紹,到如何撰寫自訂函數,以及參數的傳遞方式。我們將詳細解釋參數預設值、資料型別指定、可變參數、具名參數,以及可變函數、匿名函數和箭頭函數等進階主題。透過清晰的說明與範例,幫助你有效率地編寫更具彈性和可讀性的 PHP 程式碼。
Thumbnail
2026/03/03
本篇文章將深入探討 PHP 函數的核心概念,從內建函數的介紹,到如何撰寫自訂函數,以及參數的傳遞方式。我們將詳細解釋參數預設值、資料型別指定、可變參數、具名參數,以及可變函數、匿名函數和箭頭函數等進階主題。透過清晰的說明與範例,幫助你有效率地編寫更具彈性和可讀性的 PHP 程式碼。
Thumbnail
2026/02/25
深入瞭解 PHP 運算子的種類與應用,包含算術、賦值、邏輯、字串、比較、位元、錯誤控制與執行運算子,助您掌握程式邏輯,提升程式開發效率。
Thumbnail
2026/02/25
深入瞭解 PHP 運算子的種類與應用,包含算術、賦值、邏輯、字串、比較、位元、錯誤控制與執行運算子,助您掌握程式邏輯,提升程式開發效率。
Thumbnail
2026/02/22
深入探討 PHP 中的各種邏輯判斷語句和迴圈結構,包括 for、foreach、while、do/while,以及 switch case 與 match 的差異,還有 if/else 的應用。本文提供清晰的宣告方式、實際應用場景和程式碼範例,幫助開發者掌握這些基礎但關鍵的程式設計概念。
Thumbnail
2026/02/22
深入探討 PHP 中的各種邏輯判斷語句和迴圈結構,包括 for、foreach、while、do/while,以及 switch case 與 match 的差異,還有 if/else 的應用。本文提供清晰的宣告方式、實際應用場景和程式碼範例,幫助開發者掌握這些基礎但關鍵的程式設計概念。
Thumbnail
看更多
你可能也想看
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
剛裝好 VS Code 卻不知道怎麼設定?這 7 個內建設定只要 5 分鐘,就能讓你避免程式碼遺失、排版混亂、眼睛疲勞等新手常見問題。不需要任何擴充套件,立即提升寫程式體驗。
Thumbnail
剛裝好 VS Code 卻不知道怎麼設定?這 7 個內建設定只要 5 分鐘,就能讓你避免程式碼遺失、排版混亂、眼睛疲勞等新手常見問題。不需要任何擴充套件,立即提升寫程式體驗。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
2025 年 11 月 18 日,Google 推出了自家的 AI 開發平台「Google Antigravity」,一款以「Agent-first」(AI 代理為主)為核心概念的全新 IDE(整合開發平台)。這幾天我稍微體驗了一下,真的覺得非常有趣,所以想把這個新工具分享給大家。
Thumbnail
2025 年 11 月 18 日,Google 推出了自家的 AI 開發平台「Google Antigravity」,一款以「Agent-first」(AI 代理為主)為核心概念的全新 IDE(整合開發平台)。這幾天我稍微體驗了一下,真的覺得非常有趣,所以想把這個新工具分享給大家。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
僅僅用了兩天就完成Google AI Essentials課程,整個課程總長約9小時,但實際上花掉的時間不用這麼多。這算是我第一次上Coursera的課、也是第一次上Google的課程,也得到不少心得。
Thumbnail
僅僅用了兩天就完成Google AI Essentials課程,整個課程總長約9小時,但實際上花掉的時間不用這麼多。這算是我第一次上Coursera的課、也是第一次上Google的課程,也得到不少心得。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News