如何将 filter_input 应用于超全局变量

How do I apply filter_input to superglobals

根据 netbeans IDE,我需要向 superglobals 添加某种过滤器,netbeans 建议的 filter_input(),用于下面的代码

$page = (isset($_GET['p']) && !empty($_GET['p'])) ? $_GET['p']: 'home';

经过研究,我在Whosebug上找到了这个例子

$name = ($name = filter_input(INPUT_GET, 'name')) ? $name : 'default_value';

但我不明白如何将其应用于上面的代码。

原码,以备不时之需。

$page = (isset($_GET['p']) && !empty($_GET['p'])) ? $_GET['p']: 'home';
$page = htmlspecialchars($page, ENT_QUOTES, 'UTF-8');
$page = preg_replace('/[^-a-zA-Z0-9_]/', '', $page);

Netbeans IDE 正在努力让您安全地处理 GLOBALS 的变量。因为这些可以由未知来源设置,所以它希望您在将它们应用于变量时尝试验证或清理它们。有几种方法可以让您的生活更轻松 here (For example, you can potentially use FILTER_SANITIZE_FULL_SPECIAL_CHARS instead of your second line of code.) Because you're doing a preg_replace function on your $page, I'd say it's pretty safe to leave as is, although if you wanted to remove the warning, this should work, but it's functionally identical. See this post 了解更多信息。

$page = ($page = filter_input(INPUT_GET, 'p')) ? $page : 'home';
$page = htmlspecialchars($page, ENT_QUOTES, 'UTF-8');
$page = preg_replace('/[^-a-zA-Z0-9_]/', '', $page);