1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP 表单验证 - $_GET 和 $_POST、防攻击的htmlspecialchars()

作者:用户 来源:互联网 时间:2017-12-01 15:46:00

phppost表单验证get攻击htmlspecialchars

PHP 表单验证 - $_GET 和 $_POST、防攻击的htmlspecialchars() - 摘要: 本文讲的是PHP 表单验证 - $_GET 和 $_POST、防攻击的htmlspecialchars(), $_GET 和 $_POST 提示:开发者偏爱 POST 来发送表单数据。 PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据。 这时,页面已经被修改了(用户会看到一个提示框)(Chrome浏览器会拦截这种情况)。您

$_GET 和 $_POST



提示:开发者偏爱 POST 来发送表单数据。


PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据。

PHP 表单验证 - $_GET 和 $_POST、防攻击的<a href=htmlspecialchars()-">

这时,页面已经被修改了(用户会看到一个提示框)(Chrome浏览器会拦截这种情况)。您应该意识到


<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label>Name:<input type="text" name="name" value="">label>
<input type="submit" name="" value="提交">
form>
未使用:
<form method="post" action="http://localhost/PHPDemo/index.php"/><script>alert('hacked')script>
使用:
<form method="post" action="http://localhost/PHPDemo/index.php/"><script>alert('hacked')script>">

PHP 表单验证函数


lang="en">

"UTF-8">
Document



<?php
$username = $password = $email = $gender = "";
$usernameErr = $passwordErr = $emailErr = $genderErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["username"])) {
$usernameErr = "username is required";
} else {
$username = test_input($_POST["username"]);
if (!preg_match("/^[a-zA-Z0-9]*$/",$username)) {
$usernameErr = "只允许字母和数字"; }
}
if (empty($_POST["password"])) {
$passwordErr = "password is required";
} else {
$password = test_input($_POST["password"]);
if (!preg_match("/^[a-zA-Z0-9]*$/",$password)) {
$passwordErr = "只允许字母和数字"; }
}
if (empty($_POST["email"])) {
$emailErr = "";
} else {
$email = test_input($_POST["email"]);
if (!preg_match("/([/w/-]+/@[/w/-]+/.[/w/-]+)/",$email)) {
$emailErr = "无效的 email 格式"; }
}
if (empty($_POST["gender"])) {
$genderErr = "性别是必填项";
} else {
$gender = test_input($_POST["gender"]);
}
}
function test_input($data) {
// PHP 验证表单数据的检查函数
// 1.通过 PHP trim() 函数 去除用户输入数据中不必要的字符(多余的空格、制表符、换行)
// 2.通过 PHP stripslashes() 函数 删除用户输入数据中的反斜杠(/)
// 3.通过 htmlspecialchars() 函数 把特殊字符转换为 HTML 实体
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
"post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
用户:"text" name="username" value="<?php echo $username; ?>" required="required">
class="error">* <?php echo $usernameErr;?>span><br>
<label>密码:<input type="password" name="password" value="<?php echo $password; ?>" required="required">label>
<span class="error">* <?php echo $passwordErr;?>span><br>
<label>邮箱:<input type="email" name="email" value="<?php echo $email; ?>">label>
<span class="error"><?php echo $emailErr;?>span><br>
性别:
<label><input type="radio" name="gender" <?php if (isset($gender) && $gender == "female") echo "checked";?> value="female">Femalelabel>
<label><input type="radio" name="gender" <?php if (isset($gender) && $gender == "male") echo "checked";?> value="male">Malelabel>
<span class="error">* <?php echo $genderErr;?>span><br>
<input type="submit" name="submit" value="提交">
form>
<?php echo "<h2>您的输入:h2>";
echo $username . "<br>";
echo $password . "<br>";
echo $email . "<br>";
echo $gender . "<br>";
?>
body>
html>

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , post , 表单 , 验证 , get , 攻击 htmlspecialchars ,以便于您获取更多的相关知识。