問題:
爲何在url中可使用url?a[]=123的形式傳遞數組。
問題起源:
來自一道hash函數漏洞的題目,當函數處理數組的時候,能夠利用函數的漏洞。傳遞數組須要在url中傳遞。當時也是對php瞭解不夠透徹,數組的形式只知array()的形式。
問題解決:首先應該瞭解PHP中建立數組的幾種形式。簡單在下面介紹一下。
第一種php
$array=(‘$key1’=>’$value1’,’$key2’=>’$value2’……)
這種格式須要用戶指定數組中的鍵和值。
例如:數組
<?php $a=array(‘a’=>’123’,’b’=>’456’); Print_r($a); ?>
輸出結果
第二種ide
$array=array(‘value1’,’value2’)
這種格式不須要用戶指定鍵名,只須要給定值就能夠。鍵名會自動建立,鍵名爲數字,從零開始日後一次添加。
例如:函數
<?php $b=array(‘abc’,’efg’); Print_r($b); ?>
輸出結果:
第三種url
$c[‘key1’]=‘value1’
這種格式是將鍵放在中括號中,將值直接用等號賦值。
例如:code
<?php $c['a']='yaun1'; $c['b']='yaun2’; print_r($c); ?>
輸出結果:
第四種blog
$d[]=’value’;
這種這是連中括號裏的鍵都不用寫,直接賦值就能夠。鍵的名字會從零開始累加給各個值的鍵。
例如:字符串
<?php $e[]=’one’; $e[]=’two’; Print_r($e); ?>
輸出結果:
hash
最基本的建立數組的方法應該是這麼多了,固然第一種方法,和第三種方法給定的鍵名不必定非是字符或字符串型的,也能夠是整數型的。
//
數組在url中的傳遞:
爲了能在url傳遞的時候讓後臺處理文件認爲我傳遞的是數組,可使用第四種方法。
當使用array()函數建立數組並傳遞的時候,默認認爲你傳遞的是個字符串
例如:
傳遞參數username=array(‘yaun’)結果:
返回字符串it
當使用第四種方法的時候,傳遞參數username[]=yaun
返回數組