這篇文章主要介紹“PHP表單輸入與驗(yàn)證的方法是什么”,在日常操作中,相信很多人在PHP表單輸入與驗(yàn)證的方法是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”P(pán)HP表單輸入與驗(yàn)證的方法是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)專注于工布江達(dá)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供工布江達(dá)營(yíng)銷(xiāo)型網(wǎng)站建設(shè),工布江達(dá)網(wǎng)站制作、工布江達(dá)網(wǎng)頁(yè)設(shè)計(jì)、工布江達(dá)網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造工布江達(dá)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供工布江達(dá)網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
在之前的文章中我們已經(jīng)了解了PHP的基礎(chǔ),其中就有$_GET
和 $_POST
變量,它們用來(lái)檢索表單中的信息,其中需要我們注意的知識(shí)點(diǎn)就是PHP表單用戶輸入和表單驗(yàn)證。那接下來(lái)我們就來(lái)看一下PHP中表單輸入與表單驗(yàn)證的相關(guān)知識(shí)吧。
PHP表單和用戶輸入
想要去了解PHP表單和用戶輸入,首先我們要明白什么是表單。Web表單準(zhǔn)確來(lái)說(shuō)算是一個(gè)互動(dòng)平臺(tái),主要的功能就是讓瀏覽者和網(wǎng)站有一個(gè)互動(dòng)的平臺(tái)。表單主要就是在網(wǎng)頁(yè)中用來(lái)發(fā)送數(shù)據(jù)到服務(wù)器。
例如,注冊(cè)信息時(shí)使用到的表單,當(dāng)你填寫(xiě)完信息時(shí)需要提交,這時(shí)候提交就是將你注冊(cè)時(shí)表單上的內(nèi)容從客戶端瀏覽器傳送到服務(wù)器端,再經(jīng)過(guò)PHP程序進(jìn)行處理后,再將用戶所需要的信息傳遞回到客戶端瀏覽器上,通過(guò)獲取用戶的信息,使得PHP與Web表單實(shí)現(xiàn)交互。就是提供了這么一個(gè)互動(dòng)的平臺(tái)。
接下來(lái)我們通過(guò)示例來(lái)看一下表單,示例如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>創(chuàng)新互聯(lián)</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的知識(shí),更多的相關(guān)知識(shí),大家可以點(diǎn)擊《HTML教程》進(jìn)行學(xué)習(xí),上述示例的運(yùn)行結(jié)果:
這便是我們所說(shuō)的表單,那么我們?cè)谄渲刑顚?xiě)的信息也就是表單信息會(huì)發(fā)送到哪里呢?當(dāng)我們點(diǎn)擊提交的時(shí)候,表單中的數(shù)據(jù)就會(huì)以POST的形式,發(fā)送到form.php這個(gè)頁(yè)面。
<?php header("Content-type:text/html;charset=utf-8"); //設(shè)置編碼 echo "歡迎你:".$_POST["fname"] ."<br/>"; echo "你的年齡是:".$_POST['age']; ?>
我們發(fā)送到from.php的運(yùn)行結(jié)果如下:
當(dāng)用戶輸入完成后,這時(shí)候就需要對(duì)表單進(jìn)行驗(yàn)證了,應(yīng)該在任何可能的時(shí)候通過(guò)客戶端腳本對(duì)用戶輸入進(jìn)行驗(yàn)證。瀏覽器驗(yàn)證速度更快,并且可以減輕服務(wù)器的負(fù)載。
如果用戶輸入需要插入數(shù)據(jù)庫(kù),您應(yīng)該考慮使用服務(wù)器驗(yàn)證。在服務(wù)器驗(yàn)證表單的一種好的方式是,把表單傳給它自己,而不是跳轉(zhuǎn)到不同的頁(yè)面。這樣用戶就可以在同一張表單頁(yè)面得到錯(cuò)誤信息。用戶也就更容易發(fā)現(xiàn)錯(cuò)誤了。那么接下來(lái)我們一起來(lái)看一下表單驗(yàn)證的相關(guān)知識(shí)吧。
PHP表單驗(yàn)證
在處理PHP表單時(shí)我們需要考慮安全性。我們將展示PHP表單數(shù)據(jù)安全處理,為了防止黑客及垃圾信息我們需要對(duì)表單進(jìn)行數(shù)據(jù)安全驗(yàn)證。接下來(lái)我們通過(guò)實(shí)例來(lái)看一下表單中的必須與可選文本字段,單選按鈕,及提交按鈕。
示例如下:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>PHP.cn</title> </head> <body> <h3>PHP 表單驗(yàn)證實(shí)例</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> 網(wǎng)址: <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>
輸出結(jié)果:
其中我們需要注意的是不同的字段有不同的驗(yàn)證規(guī)則,上述示例中不同字段的驗(yàn)證規(guī)則如下:
名字的驗(yàn)證規(guī)則是必須的,并且只能包含字母和空格。E-mail的驗(yàn)證規(guī)則是必須的,其中必須是一個(gè)有效的電子郵件地址(包含'@'和'.')。網(wǎng)址的驗(yàn)證規(guī)則的是可選的,并且如果存在,它必須包含一個(gè)有效的URL。備注的驗(yàn)證規(guī)則是可選的,多行輸入字段。性別的驗(yàn)證規(guī)則是必須的,必須選擇一個(gè)。
通過(guò)上述示例我們?cè)賮?lái)看一下其中用到的知識(shí):
$_SERVER["PHP_SELF"]
變量
$_SERVER["PHP_SELF"]
是一種超全局變量,它返回當(dāng)前執(zhí)行腳本的文件名。因此,$_SERVER["PHP_SELF"]
將表單數(shù)據(jù)發(fā)送到頁(yè)面本身,而不是跳轉(zhuǎn)到另一張頁(yè)面。這樣,用戶就能夠在表單頁(yè)面獲得錯(cuò)誤提示信息。
htmlspecialchars()
函數(shù)
htmlspecialchars()
函數(shù)把特殊字符轉(zhuǎn)換為 HTML 實(shí)體。這意味著 < 和 > 之類的 HTML 字符會(huì)被替換為 < 和 > 。這樣可防止攻擊者通過(guò)在表單中注入 HTML 或 JavaScript 代碼(跨站點(diǎn)腳本攻擊)對(duì)代碼進(jìn)行利用。
其中我們需要注意的是:
$_SERVER["PHP_SELF"]
變量能夠被黑客利用,如何避免 $_SERVER["PHP_SELF"]
被利用?
$_SERVER["PHP_SELF"]
可以通過(guò) htmlspecialchars()
函數(shù)來(lái)避免被利用。
form 代碼如下所示:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars() 把一些預(yù)定義的字符轉(zhuǎn)換為 HTML 實(shí)體?,F(xiàn)在如果用戶想利用 PHP_SELF 變量, 結(jié)果將輸出如下所示:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
嘗試該漏洞失?。?/p>
通過(guò)PHP驗(yàn)證表單數(shù)據(jù)
我們要做的第一件事是通過(guò) PHP 的 htmlspecialchars()
函數(shù)傳遞所有變量。在用戶提交該表單時(shí),我們還要做兩件事:
首先通過(guò) PHP trim()
函數(shù)去除用戶輸入數(shù)據(jù)中不必要的字符,比如多余的空格、制表符、換行等,然后通過(guò) PHP stripslashes()
函數(shù)刪除用戶輸入數(shù)據(jù)中的反斜杠(\
)。接下來(lái)我們創(chuàng)建一個(gè)檢查函數(shù),我們把函數(shù)命名為 test_input()
。最后我們能夠通過(guò) test_input()
函數(shù)檢查每個(gè) $_POST
變量。
我們將驗(yàn)證程序可以放到上述示例中去,示例如下:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>創(chuàng)新互聯(lián)(php.cn)</title> </head> <body> <?php // 定義變量并默認(rèn)設(shè)置為空值 $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 表單驗(yàn)證實(shí)例</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> 網(wǎng)址: <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>您輸入的內(nèi)容是:</h3>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> </body>
輸出結(jié)果:
其中我們需要注意的是:
我們?cè)趫?zhí)行以上腳本時(shí),會(huì)通過(guò)$_SERVER["REQUEST_METHOD"]
來(lái)檢測(cè)表單是否被提交 。如果 REQUEST_METHOD
是 POST, 表單將被提交 - 數(shù)據(jù)將被驗(yàn)證。如果表單未提交將跳過(guò)驗(yàn)證并顯示空白。在以上實(shí)例中使用輸入項(xiàng)都是可選的,即使用戶不輸入任何數(shù)據(jù)也可以正常顯示。
到此,關(guān)于“PHP表單輸入與驗(yàn)證的方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
網(wǎng)頁(yè)題目:PHP表單輸入與驗(yàn)證的方法是什么
鏈接地址:http://jinyejixie.com/article2/pggdoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、品牌網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、商城網(wǎng)站、網(wǎng)站制作、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)