PHP創建數組的方法和url可以傳遞數組解析

問題:
爲什麼在url中可以使用url?a[]=123的形式傳遞數組。
問題起源
來自一道hash函數漏洞的題目,當函數處理數組的時候,可以利用函數的漏洞。傳遞數組需要在url中傳遞。當時也是對php瞭解不夠透徹,數組的形式只知array()的形式。
問題解決:首先應該瞭解PHP中創建數組的幾種形式。簡單在下面介紹一下。
第一種

$array=(‘$key1’=>’$value1’,’$key2’=>’$value2’……)

這種格式需要用戶指定數組中的鍵和值。
例如:

<?php
$a=array(‘a’=>’123’,’b’=>’456’);
Print_r($a);
?>

輸出結果
PHP創建數組的方法和url可以傳遞數組解析
第二種

$array=array(‘value1’,’value2’)

這種格式不需要用戶指定鍵名,只需要給定值就可以。鍵名會自動創建,鍵名爲數字,從零開始往後一次添加。
例如:

<?php
$b=array(‘abc’,’efg’);
Print_r($b);
?>

輸出結果:
PHP創建數組的方法和url可以傳遞數組解析
第三種

$c[‘key1’]=‘value1’

這種格式是將鍵放在中括號中,將值直接用等號賦值。
例如:

<?php
$c['a']='yaun1';
$c['b']='yaun2’;
print_r($c);
?>

輸出結果:
PHP創建數組的方法和url可以傳遞數組解析
第四種

$d[]=’value’;

這種這是連中括號裏的鍵都不用寫,直接賦值就可以。鍵的名字會從零開始累加給各個值的鍵。
例如:

<?php
$e[]=’one’;
$e[]=’two’;
Print_r($e);
?>

輸出結果:
PHP創建數組的方法和url可以傳遞數組解析

最基本的創建數組的方法應該是這麼多了,當然第一種方法,和第三種方法給定的鍵名不一定非是字符或字符串型的,也可以是整數型的。
//
數組在url中的傳遞:
爲了能在url傳遞的時候讓後臺處理文件認爲我傳遞的是數組,可以使用第四種方法。
當使用array()函數創建數組並傳遞的時候,默認認爲你傳遞的是個字符串
例如:
PHP創建數組的方法和url可以傳遞數組解析
傳遞參數username=array(‘yaun’)結果:
PHP創建數組的方法和url可以傳遞數組解析
返回字符串

當使用第四種方法的時候,傳遞參數username[]=yaun
PHP創建數組的方法和url可以傳遞數組解析
返回數組

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章