我使用了很多($_GET
)语句,想知道是否有必要先检查if (isset($_GET))
?
我已经阅读了不少帖子,这些帖子表明首先检查IF ISSET是非常重要的(我教授代码的方式),但它们都是从2009年左右开始的。现在我们的程序员已经编码了检查IF ISSET,并说检查isset是否是必要的,只会增加脚本的负载。
任何人都可以对此有所了解吗?
代码的一个例子是:
if ($_GET["option"]) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://mycurlurl.com/blah);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
....
或其他例子是
if($_GET['type']=='reports') header('location: http://myurl.com/reports');
我想知道它是否应该全部使用ISSET并且看起来像
if (isset($_GET["type"]) && ($_GET["type"] == "reports")) { header('location: http://myurl.com/reports'); }
任何想法都会非常感激。当我测试网站或查看日志时,他的代码没有出错,但我不确定我们的用户是否会发现致命错误,我们无法看到。
答案 0 :(得分:1)
如果您没有为$ _GET添加isset()
,那么您会收到Undefined Index
PHP错误,因此最好检查是否存在{{1}在任何地方使用它之前,即使在if条件下也是如此。我强烈建议你把它作为一个好的编程实践。
因此,使用$_GET
检查的代码部分是一种很好的做法
isset
答案 1 :(得分:0)
如果我们在php手册中查看$ _GET的解释,它会说“通过URL参数传递给当前脚本的关联变量数组”。 “关联数组”这个词清楚地告诉我们这个错误是什么。 如果我们访问任何未设置的数组变量,它将发出警告,指出索引未定义。这个论点在我们的案例中是否有效?让我们测试一下。让我们通过检查是否设置了表单变量来重写代码,然后尝试访问该变量:
if (isset($_GET['type']))
{
$var1 = $_GET['type'];
if($var1=="reports")
header('location: http://myurl.com/reports');
}
答案 2 :(得分:0)
我已经看到很多代码没有使用isset()检查,但我倾向于在我编码时使用它,因为1.)比抱歉更安全,以及2.)如果你有错误在php上启用报告,如果你想获得$ _GET ['某些东西'],它会发出警告,指出索引不存在。
在尝试调用/获取数据之前确保数据存在是一种很好的做法。 IMO。
答案 3 :(得分:0)
在PHP中,使用未设置的变量或数组元素不是错误。您默认只获得一个空值。
如果启用了错误报告,它将发出有关使用未定义变量或索引的警告,但代码通常仍会按预期工作。首先检查这个是不错的做法,如果没有别的办法可以减少PHP日志中的混乱。在某些情况下,您需要测试才能获得正确的程序逻辑,但如果您要测试变量是否设置为某个特定值,如问题中的示例所示,则不应该是问题
答案 4 :(得分:0)
isset()或empty()的原因是检查变量是否存在且是否有值。
如果根本没有定义$ _GET ['type'],它将抛出PHP通知。
isset()和empty()都抑制了这一点。
同样,如果($ _GET ['type']){}单独检查是错误的,除非你期望一个布尔值。
如果$ _GET ['type']为空字符串,false或0则不会处理if。
isset() will accept empty string, false and 0.
empty() will accept all of those.
所以你应该看看!empty()因为它会验证变量是否具有某种值。
!empty() will not accept empty string, false, 0 or null.
!isset() will only accept null.