PHP 表单传值

表单传值的方式

GET传值

  1. form表单
<form action="提交地址" method="GET">
  表单元素
</form>
  1. a标签
<a href="www.baidu.com/index.php?name=LQL" />
  1. 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>
  1. location的assign()方法
<script>location.assign("www.baidu.com/index.php?cmd=system("pwd");")</script>

POST传值

  1. form表单
<form action="提交地址" method="POST">表单元素</form>

POSTGET请求的区别
GET主要用于获取数据,不改变服务器资源
POST主要用户增加数据,改变服务器资源
传输的方式POST必须使用表单,GET可以直接拼接在URL后方
所以GET传参是可见的,POST是不可见的,需要抓取数据包才可以看到
GET:url + ?名称1=值1&名称2=值2
POST:在数据包包头中,看不到,需要专业工具查看
GET和POST传输数据大小不同,get为2K,POST没有限制(实际上getpost是没有限制的,是浏览器做的限制)
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); 

?>

posted @ 2022-06-13 21:22  Junglezt  阅读(63)  评论(0编辑  收藏  举报