### 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>
~~~