表單元素
表單的 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...