我有这个php文件resizeImage.php,可以这样调用 -
http://<domain>/fam/resizeImage.php?&srcImg=<url encoded URL of a remote image>&width=<width>&height=<height>
但是,另一个模块以这种方式调用此URL的htmlentities编码版本 -
htmlentities(http://<domain>/fam/resizeImage.php?srcImg=<url encoded url>&width=<width>&height=<height>)
因此,以下是一个名为 -
的示例网址http://<domain>/fam/resizeImage.php?srcImg=https%3A%2F%2Flh3.googleusercontent.com%2FVRY0O_3L8VH2wxJSTiKPr72PeM5uhPPFEsHzzYdxenddpTI150M0TYpljnZisQaROR0%3Dh256-rw&width=640&height=960
现在,resizeImage.php收到了请求,但我无法使用$ _REQUEST [&#39; width&#39;]获取参数宽度,但我可以执行以下操作 -
&
对其进行爆炸以获取参数值对。=
进行爆炸以获取参数值。所以,有两件事 -
答案 0 :(得分:1)
您可以使用PHP的内部函数来解析和解码URL:
以下是我提出的示例代码(you can try it out here):
$parsed = parse_url($url);
parse_str(urldecode(html_entity_decode($parsed['query'], ENT_HTML401)), $tmp);
var_dump($tmp);
...将您的网址参数渲染为关联数组:
array(3) {
["srcImg"]=>
string(109) "https://lh3.googleusercontent.com/VRY0O_3L8VH2wxJSTiKPr72PeM5uhPPFEsHzzYdxenddpTI150M0TYpljnZisQaROR0=h256-rw"
["width"]=>
string(3) "640"
["height"]=>
string(3) "960"
}
至于第二部分,我认为第二个模块的方法更安全一些,因为您将URL放在URL的参数中。如果您不想在解析和从参数中删除不必要的部分时遇到麻烦,那么对整个进行编码是一种简单而安全的方法,可以防止您的网址出现语法错误。
答案 1 :(得分:0)
在某些情况下,当人们在get参数中发送html代码时,单个参数上的htmlentities在标签上可能没问题,但链接本身也没有 - 他们应该使用urlencode:
<a href="htpp://yourdomain.tld/?param1=<?php echo urlencode('<somehtmltag>'); ?>>htpp://yourdomain.tld/?param1=<?php echo htmlentities('<somehtmltag>'); ?></a>