搜尋
首頁後端開發php教程PHP表單學習表單的輸入與驗證

在之前的文章中為大家帶來了《PHP資料庫學習之怎樣設定與取得PDO屬性? 》,其中詳細的介紹了PHP中怎樣設定與取得PDO屬性的相關知識,本篇我們來看看PHP表單的相關問題,希望對大家有幫助!

PHP表單學習表單的輸入與驗證

在先前的文章中我們已經了解了PHP的基礎,其中就有$_GET $_POST 變量,它們用來檢索表單中的信息,其中需要我們注意的知識點就是PHP表單使用者輸入和表單驗證。那接下來我們就來看看PHP中表單輸入與表單驗證的相關知識吧。

PHP表單和使用者輸入

#想要去了解PHP表單和使用者輸入,首先我們要明白什麼是表單。 Web表單準確來說算是一個互動平台,主要的功能就是讓瀏覽者和網站有一個互動的平台。表單主要就是在網頁中用來傳送資料到伺服器。

例如,註冊資訊時使用到的表單,當你填寫完資訊時需要提交,這時候提交就是將你註冊時表單上的內容從客戶端瀏覽器傳送到伺服器端,再經過PHP程式處理後,再將使用者所需的資訊傳遞回到客戶端瀏覽器上,透過取得使用者的訊息,使得PHP與Web表單實現互動。就是提供了這麼一個互動的平台。

接下來我們透過範例來看表單,範例如下:

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>PHP中文网</title>
 </head>
 <body>
 
 <form action="form.php" method="post">
     名字: <input type="text" name="fname"><br>
     年龄: <input type="text" name="age"><br>
     <input type="submit" value="提交">
 </form>
 
 </body>
 </html>

其中需要我們注意的是表單屬於HTML的知識,更多的相關知識,大家可以點擊《HTML教學》進行學習,上述範例的運行結果:

PHP表單學習表單的輸入與驗證

這便是我們所說的表單,那麼我們在其中填寫的資料也就是表單資料會傳送到哪裡呢?當我們點擊提交的時候,表單中的資料就會以POST的形式,發送到form.php這個頁面。

<?php
 header("Content-type:text/html;charset=utf-8");    //设置编码
 echo "欢迎你:".$_POST["fname"] ."<br/>";
 echo "你的年龄是:".$_POST[&#39;age&#39;];
 ?>

我們傳送到from.php的運行結果如下:

PHP表單學習表單的輸入與驗證

#當使用者輸入完成後,這時候就需要對表單進行驗證了,應該在任何可能的時候透過客戶端腳本對使用者輸入進行驗證。瀏覽器驗證速度更快,並且可以減輕伺服器的負載。

如果使用者輸入需要插入資料庫,您應該考慮使用伺服器驗證。在伺服器驗證表單的一個很好的方法是,把表單傳給它自己,而不是跳到不同的頁面。這樣使用者就可以在同一張表單頁面得到錯誤訊息。用戶也就更容易發現錯誤了。那接下來我們一起來看看表單驗證的相關知識吧。

PHP表單驗證

#在處理PHP表單時我們需要考慮安全性。我們將展示PHP表單資料安全處理,為了防止駭客及垃圾資訊我們需要對表單進行資料安全驗證。接下來我們透過實例來看表單中的必須與可選文字字段,單選按鈕,及提交按鈕。

範例如下:

<!DOCTYPE HTML>
 <html>
 <head>
     <meta charset="utf-8">
     <title>PHP.cn</title>
 </head>
 <body>
 <h2 id="PHP-nbsp-表单验证实例">PHP 表单验证实例</h2>
 <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
    名字: <input type="text" name="name" value="">
     <br>
     E-mail: <input type="text" name="email" value="">
     <br>
     网址: <input type="text" name="website" value="">
     <br>
     备注: <textarea name="comment" rows="5" cols="40"></textarea>
     <br>
     性别:
     <input type="radio" name="gender"  value="female">女
     <input type="radio" name="gender"  value="male">男
     <br>
     <input type="submit" name="submit" value="提交">
 </form>
 </body>
 </html>

輸出結果:

PHP表單學習表單的輸入與驗證

#其中我們需要注意的是不同的欄位有不同的驗證規則,上述範例中不同欄位的驗證規則如下:

名字的驗證規則是必須的,並且只能包含字母和空格。 E-mail的驗證規則是必須的,其中必須是一個有效的電子郵件地址(包含'@'和'.')。網址的驗證規則的是可選的,如果存在,它必須包含一個有效的URL。備註的驗證規則是可選的,多行輸入欄位。性別的驗證規則是必須的,必須選擇一個。

透過上述範例我們再來看一下其中所用到的知識:

<span style="font-size: 16px;"><strong>#$_SERVER["PHP_SELF"] </strong></span> 變數

$_SERVER["PHP_SELF"]是一種超全域變數,它會傳回目前執行腳本的檔案名稱。因此,$_SERVER["PHP_SELF"] 將表單資料傳送到頁面本身,而不是跳到另一張頁面。這樣,使用者就能夠在表單頁面獲得錯誤提示訊息。

<strong><span style="font-size: 16px;">htmlspecialchars()</span></strong># 函數##

htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 之类的 HTML 字符会被替换为 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。

其中我们需要注意的是:

$_SERVER["PHP_SELF"] 变量能够被黑客利用,如何避免 $_SERVER["PHP_SELF"] 被利用?

$_SERVER["PHP_SELF"] 可以通过 htmlspecialchars() 函数来避免被利用。

form 代码如下所示:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示:

<form method="post" action="test_form.php/"><script>alert(&#39;hacked&#39;)</script>">

尝试该漏洞失败!

通过PHP验证表单数据

我们要做的第一件事是通过 PHP 的 htmlspecialchars() 函数传递所有变量。在用户提交该表单时,我们还要做两件事:

首先通过 PHP trim() 函数去除用户输入数据中不必要的字符,比如多余的空格、制表符、换行等,然后通过 PHP stripslashes() 函数删除用户输入数据中的反斜杠(\)。接下来我们创建一个检查函数,我们把函数命名为 test_input()。最后我们能够通过 test_input() 函数检查每个 $_POST 变量。

我们将验证程序可以放到上述示例中去,示例如下:


 
 
     
     PHP中文网(php.cn)
 
 
 
 
 
 

PHP 表单验证实例

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字:

E-mail:

网址:

备注:

性别:

您输入的内容是:"; echo $name; echo "
"; echo $email; echo "
"; echo $website; echo "
"; echo $comment; echo "
"; echo $gender; ?>

输出结果:

PHP表單學習表單的輸入與驗證

其中我们需要注意的是:

我们在执行以上脚本时,会通过$_SERVER["REQUEST_METHOD"]来检测表单是否被提交 。如果 REQUEST_METHOD 是 POST, 表单将被提交 - 数据将被验证。如果表单未提交将跳过验证并显示空白。在以上实例中使用输入项都是可选的,即使用户不输入任何数据也可以正常显示。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

以上是PHP表單學習表單的輸入與驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP如何識別用戶的會話?PHP如何識別用戶的會話?May 01, 2025 am 12:23 AM

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

確保PHP會議的一些最佳實踐是什麼?確保PHP會議的一些最佳實踐是什麼?May 01, 2025 am 12:22 AM

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

PHP會話文件默認存儲在哪裡?PHP會話文件默認存儲在哪裡?May 01, 2025 am 12:15 AM

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

您如何從PHP會話中檢索數據?您如何從PHP會話中檢索數據?May 01, 2025 am 12:11 AM

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

您如何使用會議來實施購物車?您如何使用會議來實施購物車?May 01, 2025 am 12:10 AM

利用會話構建高效購物車系統的步驟包括:1)理解會話的定義與作用,會話是服務器端的存儲機制,用於跨請求維護用戶狀態;2)實現基本的會話管理,如添加商品到購物車;3)擴展到高級用法,支持商品數量管理和刪除;4)優化性能和安全性,通過持久化會話數據和使用安全的會話標識符。

您如何在PHP中創建和使用接口?您如何在PHP中創建和使用接口?Apr 30, 2025 pm 03:40 PM

本文解釋瞭如何創建,實施和使用PHP中的接口,重點關注其對代碼組織和可維護性的好處。

crypt()和password_hash()有什麼區別?crypt()和password_hash()有什麼區別?Apr 30, 2025 pm 03:39 PM

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

如何防止PHP中的跨站點腳本(XSS)?如何防止PHP中的跨站點腳本(XSS)?Apr 30, 2025 pm 03:38 PM

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。