PHP表單驗證

2022-09-13 23:51:37 字數 1504 閱讀 3137

表單元素

表單的 html **是這樣的:

">
當提交此表單時,通過 method="post" 傳送表單資料。

什麼是 $_server["php_self"] 變數?

$_server["php_self"] 是一種超全域性變數,它返回當前執行指令碼的檔名。

因此,$_server["php_self"] 將表單資料傳送到頁面本身,而不是跳轉到另一張頁面。這樣,使用者就能夠在表單頁面獲得錯誤提示資訊。

什麼是 htmlspecialchars() 函式?

htmlspecialchars() 函式把特殊字元轉換為 html 實體。這意味著 < 和 > 之類的 html 字元會被替換為 < 和 > 。這樣可防止攻擊者通過在表單中注入 html 或 j**ascript **(跨站點指令碼攻擊)對**進行利用。

關於 php 表單安全性的重要提示

$_server["php_self"] 變數能夠被黑客利用!

如果您的頁面使用了 php_self,使用者能夠輸入下劃線然後執行跨站點指令碼(xss)。

假設我們的一張名為 "test_form.php" 的頁面中有如下表單:

">
到目前,一切正常。

'hacked')%3c/script%3e
在這種情況下,上面的**會轉換為:

這段**加入了一段指令碼和乙個提示命令。並且當此頁面載入後,就會執行 j**ascript **(使用者會看到乙個提示框)。這僅僅是乙個關於 php_self 變數如何被利用的簡單無害案例。

您應該意識到 ">無法利用,沒有危害!

通過 php 驗證表單資料

我們要做的第一件事是通過 php 的 htmlspecialchars() 函式傳遞所有變數。

在我們使用 htmlspecialchars() 函式後,如果使用者試圖在文字欄位中提交以下內容:

- **不會執行,因為會被儲存為轉義**,就像這樣:

現在這條**顯示在頁面上或 e-mail 中是安全的。

在使用者提交該表單時,我們還要做兩件事:

(通過 php trim() 函式)去除使用者輸入資料中不必要的字元(多餘的空格、製表符、換行)

(通過 php stripslashes() 函式)刪除使用者輸入資料中的反斜槓(\)

接下來我們建立乙個檢查函式(相比一遍遍地寫**,這樣效率更好)。

我們把函式命名為 test_input()。

現在,我們能夠通過 test_input() 函式檢查每個 $_post 變數,指令碼是這樣的:

例項

<?php

// 定義變數並設定為空值

$name = $email = $gender = $comment = $website = "";

if ($_server["request_method"] == "post")

function test_input($data)

?>

php表單驗證

html表單驗證的 如下 注意 使用者向伺服器傳送請求的方式有兩種 post和get,兩者的區別是get傳送的時候,攜帶的資料是連線在url後面。有資料大小的限制,並且get不能上傳檔案,而post傳送比較隱蔽的,url看不到,沒有資料大小的限制,用來上傳檔案給伺服器。在php中,獲取傳送來的資料,...

php驗證表單

class class post str true false 驗證是否為指定長度數字 function fun text2 num1,num2,str i str true false 驗證是否為指定長度漢字 function fun font num1,num2,str string retur...

PHP表單驗證

頁面作用 常用表單驗證類 class class post str true false 驗證是否為指定長度數字 function fun text2 num1,num2,str i str true false 驗證是否為指定長度漢字 function fun font num1,num2,str...