@ $ _ GET是什么意思?

时间:2011-05-03 19:47:29

标签: php mysql

我不明白为什么有人在代码中使用@,我已经看到它与mysql连接,但我不知道它意味着什么..谢谢!

$player_name_orig = @$_GET['player'];
if (!$player_name_orig) {
    die('You must specify a player name');
}

4 个答案:

答案 0 :(得分:13)

@是error suppression operator

在这个特定的上下文中,如果player中不存在$_GET密钥,那么这是一种(错误的!)方式来避免PHP发出通知:

如果您尝试这样做:

unset($_GET['player']); // to make sure
echo $_GET['player'];

你得到:

  

注意:未定义的索引:F:\ dev \ www \ index.php中的播放器 35

如果你试试这个:

unset($_GET['player']); // to make sure
echo @$_GET['player'];

没有输出。

正确的方法:

if (empty($_GET['player']) {
    die('You must specify a player name');
}  

答案 1 :(得分:2)

@将停止显示任何错误,并在错误时返回false。

因此,如果$_GET['player']不存在,代码将进入if语句

答案 2 :(得分:2)

@表示忽略诸如未设置变量之类的错误。

答案 3 :(得分:0)

“@”用于防止出现任何警告或错误消息。这是一个非常糟糕的习惯。这样做了很多隐藏的操作(删除错误处理程序,并在之后将其放回)。

执行此操作的正确方法是:

// my_security_filter() is a function that can render FALSE and remove any dangerous thing
$player_name_orig = array_key_exists('player',$_GET)? my_security_filter($_GET['player']) : FALSE;
if (FALSE===$player_name_orig) { ...
相关问题