关于PHP动态的接收传递的GET,POST和COOKIE变量

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/qq_38924942/article/details/83960787

0x01

我们知道PHP接收的变量最常用的是GET,POST,COOKIE这三个变量。GET变量是附在url后传输的,而POST变量是放在http包中传输的,COOKIE则是浏览器中储存的,变量最常用的接收变量的方法比如get方式是通过$_GET[],中括号中是变量名,但是是在变量名知道的情况下并且一次只能接收一个变量值,那么怎么在不知道变量名的情况下去动态的接收变量名和变量名对应的值呢,可以通过结合PHP中的可变变量和foreach遍历的方法来实现这个方法(这个方法是我在看米拓cms源码的时候偶然发现的,这里研究了一下,顺便和大家分享一下)。首先大家看一下什么是PHP中的可变变量

0x02

我们知道PHP变量的定义方式,比如说我要定义一个变量名为var的值为test,那么可以这样办:$var="test",定义完之后这个变量名就不可以改变了,如果要修改这个变量名的话,就需要用到PHP中的可变变量:$$var,以下是可变变量的利用方法,利用可变变量来查询_COOKIE。

首先呢查看一下网页的cookie
在这里插入图片描述
之后用可变变量的方式来查询这个COOKIE,并且把他打印出来
在这里插入图片描述
为了帮助大家更好的理解这个可变变量,这里贴出了PHP官网的一个例子

<?php

  //You can even add more Dollar Signs

  $Bar = "a";
  $Foo = "Bar";
  $World = "Foo";
  $Hello = "World";
  $a = "Hello";
  // PS:$$var 和 ${$var}的效果是一样的
  $a; //Returns Hello
  $$a; //Returns World
  $$$a; //Returns Foo
  $$$$a; //Returns Bar
  $$$$$a; //Returns a

  $$$$$$a; //Returns Hello
  $$$$$$$a; //Returns World
  //... and so on ...//
?>

0x03

动态的查询COOKIE变量
在这里插入图片描述

0x04

动态的接收GET传递过来的变量
在这里插入图片描述

0x05

动态的接收POST传递过来的变量
在这里插入图片描述
在这里插入图片描述

0x06

还有一种方法就是GET,POST和COOKIE三个参数都接收(米拓cms就是这样的)
在这里插入图片描述

总结

利用PHP可变变量来接收传递过来的变量名和变量值确实很方便,但可变变量的利用方式还有很多,有兴趣可以去官网看一看。还有一个就是安全方面的问题,以这种方式接收传递的变量必须进行严格过滤 (违法犯罪快走开,违法犯罪快走开,违法犯罪快走开)

下面是源码方便粘贴
部分接收的 (异曲同工,所以只贴了一个)

<!DOCTYPE html>
<html>
<head>
	<title>Demo</title>
	<meta charset="utf-8">
</head>
<body>
<?php

$test = "_GET";
foreach (${$test} as $key => $value) {
	# code...
	echo '$key的值是:'."$key"."<br>";
	echo '$value的值是:'."$value"."<br>";
}
?>
</body>
</html>

全都接收的

<!DOCTYPE html>
<html>
<head>
	<title>Demo</title>
	<meta charset="utf-8">
</head>
<body>
<?php

$var_all = array("_GET", "_POST", "_COOKIE");
foreach ($var_all as $key) {
	# code...
	foreach ($$key as $_key => $value) {
		# code...
		echo '$_key的值是:'."$_key"."<br>";
		echo '$value的值是:'."$value"."<br>";
	}
}

?>
</body>
</html>

PS:如果认为我这个博客有什么问题或者有修改意见的,请一定要告诉我,非常感谢(我的邮箱[email protected]

猜你喜欢

转载自blog.csdn.net/qq_38924942/article/details/83960787