您好,登錄后才能下訂單哦!
問題:
為什么在url中可以使用url?a[]=123的形式傳遞數組。
問題起源:
來自一道hash函數漏洞的題目,當函數處理數組的時候,可以利用函數的漏洞。傳遞數組需要在url中傳遞。當時也是對php了解不夠透徹,數組的形式只知array()的形式。
問題解決:首先應該了解PHP中創建數組的幾種形式。簡單在下面介紹一下。
第一種
$array=(‘$key1’=>’$value1’,’$key2’=>’$value2’……)
這種格式需要用戶指定數組中的鍵和值。
例如:
<?php
$a=array(‘a’=>’123’,’b’=>’456’);
Print_r($a);
?>
輸出結果
第二種
$array=array(‘value1’,’value2’)
這種格式不需要用戶指定鍵名,只需要給定值就可以。鍵名會自動創建,鍵名為數字,從零開始往后一次添加。
例如:
<?php
$b=array(‘abc’,’efg’);
Print_r($b);
?>
輸出結果:
第三種
$c[‘key1’]=‘value1’
這種格式是將鍵放在中括號中,將值直接用等號賦值。
例如:
<?php
$c['a']='yaun1';
$c['b']='yaun2’;
print_r($c);
?>
輸出結果:
第四種
$d[]=’value’;
這種這是連中括號里的鍵都不用寫,直接賦值就可以。鍵的名字會從零開始累加給各個值的鍵。
例如:
<?php
$e[]=’one’;
$e[]=’two’;
Print_r($e);
?>
輸出結果:
最基本的創建數組的方法應該是這么多了,當然第一種方法,和第三種方法給定的鍵名不一定非是字符或字符串型的,也可以是整數型的。
//
數組在url中的傳遞:
為了能在url傳遞的時候讓后臺處理文件認為我傳遞的是數組,可以使用第四種方法。
當使用array()函數創建數組并傳遞的時候,默認認為你傳遞的是個字符串
例如:
傳遞參數username=array(‘yaun’)結果:
返回字符串
當使用第四種方法的時候,傳遞參數username[]=yaun
返回數組
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。