如何将filter_input应用于superglobals

时间:2015-06-07 10:11:58

标签: php netbeans filter filtering superglobals

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

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

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

$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);

1 个答案:

答案 0 :(得分:3)

Netbeans IDE正试图让您对GLOBALS的变量处理安全。因为这些可以由未知来源设置,所以它希望您在将它们应用于变量时尝试验证或清理这些。有几种方法可以让您的生活更轻松here(例如,您可以使用FILTER_SANITIZE_FULL_SPECIAL_CHARS代替第二行代码。)因为您正在执行preg_replace功能在你的$page上,我说它是非常安全的离开,虽然如果你想删除警告,这应该有效,但它在功能上是相同的。有关详细信息,请参阅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);