我需要validation的URL,然后下一个代码是完美的使用PHP和Apache:
$url = filter_input(INPUT_GET, 'url', FILTER_SANITIZE_URL)
例如:通过这个URL:plantilla_mvc.net//////controlador/metodo/////argumentos
它正在转变:/ controlador / metodo / argumentos( 没有////// )
但与Nginx它不工作 。
然后我试了一下:
$ url = filter_input(INPUT_SERVER,'REQUEST_URI',FILTER_SANITIZE_URL);
但filter_input 不适用于INPUT_SERVER
我怎么解决这个问题??
谢谢你的帮助
看起来像一个已知的问题,请参阅https://github.com/xwp/stream/issues/254
由于PHP确认的错误,filter_input(INPUT_SERVER,'anything')会在FCGI / PHP 5.4的某些实现(也可能是旧版本)上返回null。 https://bugs.php.net/bug.php?id=49184
使用https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=730094中提到的解决方法:
if (filter_has_var(INPUT_SERVER, "SERVER_NAME")) { $servername = filter_input(INPUT_SERVER, "SERVER_NAME", FILTER_UNSAFE_RAW, FILTER_NULL_ON_FAILURE); } else { if (isset($_SERVER["SERVER_NAME"])) $servername = filter_var($_SERVER["SERVER_NAME"], FILTER_UNSAFE_RAW, FILTER_NULL_ON_FAILURE); else $servername = null; }