主要用到 $_GET 和 $_POST 和超全局变量,分别对应两种不同请求方式.
get和post的区别:
get参数对任何人都是可见的,post参数对任何人都是不可见的
get对发送信息量有限制,不适合大型变量值,他的值不能超过2000个字符;post对发送的信息量没有限制(默认post发送的最大数据量为8MB,但可通过设置php.ini的post_max_size进行更改;发送的变量数最大值max_input_var)
get的用途: 可以在收藏夹中收藏get请求页面,或者发送带参数的网址给别人可以直接访问,例如带页码的网址,带商品id的淘宝商品,带文章id的博文.这一点post做不到.
超全局变量$_REQUEST
$_变量包含了$_GET,$_POST和$_COOKIE的内容
$SERVER获取请求方式:可以拿到请求方式,当不知道$_REQUEST的请求是get还是post的时候,就用到$_SERVER来获取请求方式.
$_SERVER[‘REQUEST_METHOD’]
可以同时取到get和post请求的参数
在浏览器F12的应用程序中可以查看cookie. 同时可以在浏览输入给后端.也可以在html代码的input表单的action链接添加键和值.
htmlspecialchars()函数
htmlspecialchars()
函数是PHP中的一个内置函数,用于将特定的HTML字符转换为HTML实体字符。这有助于防止跨站点脚本攻击(XSS),确保用户输入的字符串被正确地处理,不会因为浏览器解释特殊字符而执行不必要的脚本。以下是htmlspecialchars()
函数的一些关键特点
功能: 用于将字符串中的特殊字符转换为HTML实体,以避免在HTML文档中引起解析错误或安全漏洞.
语法: htmlspecialchars(string $ string, int $ flags = ENT_COMPAT | ENT_HTML401, string|null $ encoding = ini_get("default_charset"), bool $ double_encode = true)
。
使用实例
- 将用户输入的文本输出到HTML页面中,防止XSS攻击。
- 将用户输入的文本存储到数据库中,防止SQL注入攻击。
- 将用户输入的文本输出到JavaScript或电子邮件中,确保特殊字符被正确显示。
特殊字符
- & —&
- ” —"
- ‘ —'
- < —<
- > —>
注意事项
htmlspecialchars()
仅处理HTML字符转换,不提供对其他类型攻击的防护,如SQL注入或跨站点请求伪造(CSRF)。- 需要确保使用正确的字符编码,以避免转换错误。
把post请求的数据进行字符化处理:
<body>
<form action="./htmlspecialchars.php" method="post">
<input type="text" name="username" id="">
<input type="password" name="password" id="">
<input type="submit" value="submit" name="" id="">
</form>
<!-- <script>alert('你中招啦!')</script> -->
</body>
<?php
//字符化处理数据
foreach ($_POST as $key => $value){
if(is_array($value)){
}
else{
$$key = htmlspecialchars($value);
// echo $key,'=',$value,'<br>';
}
}
echo $username;
echo $password;
或:
<?php
//字符化处理数据
foreach ($_POST as $key => $value){
if(is_array($value)){
}
else{
$_POST[$key] = htmlspecialchars($value);
// echo $key,'=',$value,'<br>';
}
}
var_dump($_POST["username"]);
表单
表单是html的知识.
input select radio checkbox submit 是用于创建表单的关键字或属性.
get 请求可以拿到一个网址,这个网址里面有用户输入的键和值
select –菜单
属性:<select name=”” >下拉菜单
<select multiple name =”arr[]”> 多选菜单 ,多选菜单提交以数组的形式,name = “arr[]”
checkbox复选框:<input type=”checkbox” name=”checkbox[]” value=”1″>
<form action="./user.php" method = "get">
username:<input type="text" name="username"><br>
password:<input type="password" name="password"><br>
<!-- 下拉菜单 -->
<select name="names" id="">
<option value=""></option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
<option value="4">four</option>
</select><br>
<!-- 多选菜单 -->
<select multiple name="arr[]" id="">
<option value=""></option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
<option value="4">four</option>
</select>
<!-- 复选框 -->
<input type="radio" name = "radio">
<input type="checkbox" name="checkbox[]" value="1">
<input type="checkbox" name= "checkbox2[]" value="2">
<input type="checkbox" name= "checkbox3[]" value="3">
<input type="checkbox">
<!-- 提交 -->
<input type="submit" value = "submit"><br>
</form>
2024.12