關於PHP動態的接收傳遞的GET,POST和COOKIE變數
阿新 • • 發佈:2018-12-20
0x01
我們知道PHP接收的變數最常用的是GET,POST,COOKIE這三個變數。GET變數是附在url後傳輸的,而POST變數是放在http包中傳輸的,COOKIE則是瀏覽器中儲存的,變數最常用的接收變數的方法比如get方式是通過$_GET[],中括號中是變數名,但是是在變數名知道的情況下並且一次只能接收一個變數值,那麼怎麼在不知道變數名的情況下去動態的接收變數名和變數名對應的值呢,可以通過結合PHP中的可變變數和foreach遍歷的方法來實現這個方法(這個方法是我在看米拓cms原始碼的時候偶然發現的,這裡研究了一下,順便和大家分享一下)。首先大家看一下什麼是PHP中的可變變數
0x02
我們知道PHP變數的定義方式,比如說我要定義一個變數名為var的值為test,那麼可以這樣辦:$$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>