您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP表單輸入與驗證的方法是什么”,在日常操作中,相信很多人在PHP表單輸入與驗證的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP表單輸入與驗證的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
在之前的文章中我們已經了解了PHP的基礎,其中就有$_GET
和 $_POST
變量,它們用來檢索表單中的信息,其中需要我們注意的知識點就是PHP表單用戶輸入和表單驗證。那接下來我們就來看一下PHP中表單輸入與表單驗證的相關知識吧。
PHP表單和用戶輸入
想要去了解PHP表單和用戶輸入,首先我們要明白什么是表單。Web表單準確來說算是一個互動平臺,主要的功能就是讓瀏覽者和網站有一個互動的平臺。表單主要就是在網頁中用來發送數據到服務器。
例如,注冊信息時使用到的表單,當你填寫完信息時需要提交,這時候提交就是將你注冊時表單上的內容從客戶端瀏覽器傳送到服務器端,再經過PHP程序進行處理后,再將用戶所需要的信息傳遞回到客戶端瀏覽器上,通過獲取用戶的信息,使得PHP與Web表單實現交互。就是提供了這么一個互動的平臺。
接下來我們通過示例來看一下表單,示例如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>億速云</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教程》進行學習,上述示例的運行結果:
這便是我們所說的表單,那么我們在其中填寫的信息也就是表單信息會發送到哪里呢?當我們點擊提交的時候,表單中的數據就會以POST的形式,發送到form.php這個頁面。
<?php header("Content-type:text/html;charset=utf-8"); //設置編碼 echo "歡迎你:".$_POST["fname"] ."<br/>"; echo "你的年齡是:".$_POST['age']; ?>
我們發送到from.php的運行結果如下:
當用戶輸入完成后,這時候就需要對表單進行驗證了,應該在任何可能的時候通過客戶端腳本對用戶輸入進行驗證。瀏覽器驗證速度更快,并且可以減輕服務器的負載。
如果用戶輸入需要插入數據庫,您應該考慮使用服務器驗證。在服務器驗證表單的一種好的方式是,把表單傳給它自己,而不是跳轉到不同的頁面。這樣用戶就可以在同一張表單頁面得到錯誤信息。用戶也就更容易發現錯誤了。那么接下來我們一起來看一下表單驗證的相關知識吧。
PHP表單驗證
在處理PHP表單時我們需要考慮安全性。我們將展示PHP表單數據安全處理,為了防止黑客及垃圾信息我們需要對表單進行數據安全驗證。接下來我們通過實例來看一下表單中的必須與可選文本字段,單選按鈕,及提交按鈕。
示例如下:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>PHP.cn</title> </head> <body> <h3>PHP 表單驗證實例</h3> <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>
輸出結果:
其中我們需要注意的是不同的字段有不同的驗證規則,上述示例中不同字段的驗證規則如下:
名字的驗證規則是必須的,并且只能包含字母和空格。E-mail的驗證規則是必須的,其中必須是一個有效的電子郵件地址(包含'@'和'.')。網址的驗證規則的是可選的,并且如果存在,它必須包含一個有效的URL。備注的驗證規則是可選的,多行輸入字段。性別的驗證規則是必須的,必須選擇一個。
通過上述示例我們再來看一下其中用到的知識:
$_SERVER["PHP_SELF"]
變量
$_SERVER["PHP_SELF"]
是一種超全局變量,它返回當前執行腳本的文件名。因此,$_SERVER["PHP_SELF"]
將表單數據發送到頁面本身,而不是跳轉到另一張頁面。這樣,用戶就能夠在表單頁面獲得錯誤提示信息。
htmlspecialchars()
函數
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('hacked')</script>">
嘗試該漏洞失敗!
通過PHP驗證表單數據
我們要做的第一件事是通過 PHP 的 htmlspecialchars()
函數傳遞所有變量。在用戶提交該表單時,我們還要做兩件事:
首先通過 PHP trim()
函數去除用戶輸入數據中不必要的字符,比如多余的空格、制表符、換行等,然后通過 PHP stripslashes()
函數刪除用戶輸入數據中的反斜杠(\
)。接下來我們創建一個檢查函數,我們把函數命名為 test_input()
。最后我們能夠通過 test_input()
函數檢查每個 $_POST
變量。
我們將驗證程序可以放到上述示例中去,示例如下:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>億速云(php.cn)</title> </head> <body> <?php // 定義變量并默認設置為空值 $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h3>PHP 表單驗證實例</h3> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字: <input type="text" name="name"> <br><br> E-mail: <input type="text" name="email"> <br><br> 網址: <input type="text" name="website"> <br><br> 備注: <textarea name="comment" rows="5" cols="40"></textarea> <br><br> 性別: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男 <br><br> <input type="submit" name="submit" value="提交"> </form> <?php echo "<h3>您輸入的內容是:</h3>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> </body>
輸出結果:
其中我們需要注意的是:
我們在執行以上腳本時,會通過$_SERVER["REQUEST_METHOD"]
來檢測表單是否被提交 。如果 REQUEST_METHOD
是 POST, 表單將被提交 - 數據將被驗證。如果表單未提交將跳過驗證并顯示空白。在以上實例中使用輸入項都是可選的,即使用戶不輸入任何數據也可以正常顯示。
到此,關于“PHP表單輸入與驗證的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。