var对URL不正确
我试图使用filter_var来验证用户输入的URL,但它似乎不适用于所有情况。 我前段时间在PHP.net上请求了一个修复程序,但无济于事。
除了正则表达式(是的,有一些已经发布在stackoverflow上),是否有PHP版本可以工作或者其他方法?
我面临的问题是下面的字符串得到验证,不应该:
http://http://www.google.com
测试脚本:
$url = $_REQUEST['url'];
if (filter_var("http://" . $url, FILTER_VALIDATE_URL))
$filter="true";
else
$filter="false";
echo "Filter var result of concat with http is:" . $filter . "<br>";
预期结果:
我希望它在我用http://www.google.com运行脚本时返回false,当我使用www.google.com运行脚本时它是true
实际结果:
它在两种情况下均返回true
如果你报告的错误是任何事情,filter_var()通过解析parse_url()来验证url,并检查结果数组是否合理。
因此,如果你想要更严格的东西,将它们粘合在一起并确认它们是平等的。
这是一个合理的glue_url函数:
http://doc.habariproject.org/inputfilter_8php_source.html#l00324
然后:
$valid_url = ($url == glue_url(parse_url($url)));
或者,如果没有协议提供,请检查"http://$url"
。
我有一个我用于更严格URL验证的小课程。 不妨将其纳入公有领域:
https://github.com/franksrevenge/StrictUrlValidator
它依赖于一些逻辑测试,然后通过测试给定的主机名是否存在,甚至通过查询服务器的URL状态码来增加侵入性。 当然,远程查询的行为是可配置的。
链接地址: http://www.djcxy.com/p/92701.html下一篇: PHP filter