重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
问题:
为什么在url中可以使用url?a[]=123的形式传递数组。
问题起源:
来自一道hash函数漏洞的题目,当函数处理数组的时候,可以利用函数的漏洞。传递数组需要在url中传递。当时也是对php了解不够透彻,数组的形式只知array()的形式。
问题解决:首先应该了解PHP中创建数组的几种形式。简单在下面介绍一下。
第一种
$array=(‘$key1’=>’$value1’,’$key2’=>’$value2’……)
这种格式需要用户指定数组中的键和值。
例如:
’123’,’b’=>’456’);
Print_r($a);
?>
输出结果
第二种
$array=array(‘value1’,’value2’)
这种格式不需要用户指定键名,只需要给定值就可以。键名会自动创建,键名为数字,从零开始往后一次添加。
例如:
输出结果:
第三种
$c[‘key1’]=‘value1’
这种格式是将键放在中括号中,将值直接用等号赋值。
例如:
输出结果:
第四种
$d[]=’value’;
这种这是连中括号里的键都不用写,直接赋值就可以。键的名字会从零开始累加给各个值的键。
例如:
输出结果:
最基本的创建数组的方法应该是这么多了,当然第一种方法,和第三种方法给定的键名不一定非是字符或字符串型的,也可以是整数型的。
//
数组在url中的传递:
为了能在url传递的时候让后台处理文件认为我传递的是数组,可以使用第四种方法。
当使用array()函数创建数组并传递的时候,默认认为你传递的是个字符串
例如:
传递参数username=array(‘yaun’)结果:
返回字符串
当使用第四种方法的时候,传递参数username[]=yaun
返回数组
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。