我不明白为什么有人在代码中使用@,我已经看到它与mysql连接,但我不知道它意味着什么..谢谢!
$player_name_orig = @$_GET['player'];
if (!$player_name_orig) {
die('You must specify a player name');
}
答案 0 :(得分:13)
在这个特定的上下文中,如果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) { ...