在使用$_GET,$_POST全局变量获取某些key值时,有时候想当然的加上urldecode函数来转码一下,认为这样会没有风险。在没有真正认识$_GET,$_POST时,风险正在来临。
PHP官网urldecode详述
http://php.net/manual/en/function.urldecode.php
请仔细看下面的NOTES:
PHP 生成全局变量 $_GET,$_POST 的时候已经在内部做了urldecode了!
但是很多人并没有理解这个NOTES的意思,下面用一个例子解释:
“+”加号的危险
$params = ['b'=>'chenai+1']; //对b做urlencode后 http://**.com/?b=chenai%2B1 print_r($_GET);//([b] => chenai+1) print_r(urldecode($_GET['b']));//chenai 1
所以莫要对 $_GET,$_POST再次进行urldecode,这样做有可能引发加号最后decode成空格的风险。