### htmlspecialchars()
函數把特殊字符轉換為 HTML 實體。這意味著 < 和 > 之類的 HTML 字符會被替換為 < 和 > 。這樣可防止攻擊者通過在表單中注入 HTML 或 JavaScript 代碼(跨站點腳本攻擊)對代碼進行利用。
### $_SERVER["PHP_SELF"]
它返回當前執行腳本的文件名。
~~~
//htmlspecialchars() 在使用PHP_SELF時,防止跨站攻擊
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
~~~
### 用戶提交表單時,要做的2件事
1. (通過 PHP trim() 函數)去除用戶輸入數據中不必要的字符(多余的空格、制表符、換行)
2. (通過 PHP stripslashes() 函數)刪除用戶輸入數據中的反斜杠(\)
~~~
//保存錯誤信息的字段
$nameerr='';
$name='';
//格式化處理函數
function test_input($data){
$data=trim($data);
$data=stripslashes($data);
return $data;
}
//傳輸模式驗證
if($_SERVER['REQUEST_METHOD']=='POST'){
//非空驗證
if(empty($_POST['name'])){
$nameerr='name is required';
}else{
$name=test_input($_POST['name']);
//字符格式驗證
if(!preg_match("/^[a-zA-Z ]*$/", $name)){
$nameerr='只允許字母和空格';
}
}
}
}
~~~
### $_SERVER['REQUEST_METHOD']
請求方法判斷
### preg_match()
函數檢測字符串模式
### 儲存表單輸入的信息
~~~
<input type="text" name="name" value="<?php echo $name;?>">
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="male") echo "checked";?>
~~~
~~~
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method='post'>
<input type="text" name='name' value="<?php echo $name ?>"><?php echo $nameerr ?>
<button>提交</button>
</form>
~~~