1. 程式人生 > >關於PHP動態的接收傳遞的GET,POST和COOKIE變數

關於PHP動態的接收傳遞的GET,POST和COOKIE變數

0x01

我們知道PHP接收的變數最常用的是GET,POST,COOKIE這三個變數。GET變數是附在url後傳輸的,而POST變數是放在http包中傳輸的,COOKIE則是瀏覽器中儲存的,變數最常用的接收變數的方法比如get方式是通過$_GET[],中括號中是變數名,但是是在變數名知道的情況下並且一次只能接收一個變數值,那麼怎麼在不知道變數名的情況下去動態的接收變數名和變數名對應的值呢,可以通過結合PHP中的可變變數和foreach遍歷的方法來實現這個方法(這個方法是我在看米拓cms原始碼的時候偶然發現的,這裡研究了一下,順便和大家分享一下)。首先大家看一下什麼是PHP中的可變變數

0x02

我們知道PHP變數的定義方式,比如說我要定義一個變數名為var的值為test,那麼可以這樣辦:v

ar="test"PHPvar="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>