PHP 表单传值
表单传值的方式
GET传值
- form表单
<form action="提交地址" method="GET">
表单元素
</form>
- a标签
<a href="www.baidu.com/index.php?name=LQL" />
- location的href属性
<script>document.location='www.baidu.com/index.php?include=info.php'</script>
# <script>location.href="www.baidu.com/index.php?cmd=a|whoami"</script>
- location的assign()方法
<script>location.assign("www.baidu.com/index.php?cmd=system("pwd");")</script>
POST传值
- form表单
<form action="提交地址" method="POST">表单元素</form>
POST
和GET
请求的区别
GET
主要用于获取数据,不改变服务器资源
POST
主要用户增加数据,改变服务器资源
传输的方式POST必须使用表单,GET可以直接拼接在URL后方
所以GET传参是可见的,POST是不可见的,需要抓取数据包才可以看到
GET:url + ?名称1=值1&名称2=值2
POST:在数据包包头中,看不到,需要专业工具查看
GET和POST传输数据大小不同,get为2K,POST没有限制(实际上get
和post
是没有限制的,是浏览器做的限制)
GET和POST传输的数据格式有区别:get传输(数值/字符串),post可以提交复杂数据(二进制等)
PHP接收数据的三种方式
$_GET:接收GET方式传参
$_POST:接收POST方式传参
$_REQUEST:接收GET、POST传参的所有数据
在$_REQUEST中,如果GET和POST传参的键名一致,那么POST会覆盖GET,这个属性可以在php.ini
中修改
这三个都是超全局预定数组,没有范围限制。
根据表单元素:name
属性的值,获取数组的键名,value
属性的值通常是用户输入的值,就是数组元素的值。
复选框在PHP中的接收形式
复选框:通常通常是将一类内容(同名)的方式进行提交传递给后台,数据库存储通常是一个字段存储。复选框的特点:选中才会提交
1、在浏览器端,无论name
属性的值是什么,都会被进行提交
2、在$_GET和$_POST会对同名的属性进行覆盖
解决方案:浏览器不识别[]
,但是PHP认为[]
有特殊性:系统认为改符号是数组的形式,所以PHP就会自动将同名的带有[]的元素组合到一起形成一个数组
html代码如下
<form action="football.php" method="POST">
<input type="checkbox" name="test[]" value="football">足球
<input type="checkbox" name="test[]" value="basketball">篮球
<input type="checkbox" name="test[]" value="pingpang">乒乓球
<input type="submit" name="sub" value="submit">提交
</form>
将数组转换为字符串
implode(字符串,'分割方式')
:将数组中的每个值使用给定的格式分开
explode('分割方式',字符串)
:将字符串以给定的格式分开转换为数组
例如:
<form action="football.php" method="POST">
<input type="checkbox" name="test[]" value="football">足球
<input type="checkbox" name="test[]" value="basketball">篮球
<input type="checkbox" name="test[]" value="pingpang">乒乓球
<input type="submit" name="sub" value="submit">提交
</form>
<?php
<?php
// isset()判断是否传入 test
$str = isset($_POST['test']) ? $_POST['test'] : array();
print_r($str);
echo "<hr/>";
// 将数组中的元素一个一个去除,并使用 , 号隔开
$str_im = implode(",",$str);
print_r($str_im);
echo "<hr/>";
// 将字符串一个一个转换为数组元素,在遇到 , 时代表一个元素的结束
$str_ex = explode(",",$str_im);
var_dump($str_ex);
?>