我不明白爲什麼有人在代碼中使用@,我已經看到它與MySQL連接,但我不知道它是什麼意思..謝謝!
$player_name_orig = @$_GET['player'];
if (!$player_name_orig) {
die('You must specify a player name');
}
我不明白爲什麼有人在代碼中使用@,我已經看到它與MySQL連接,但我不知道它是什麼意思..謝謝!
$player_name_orig = @$_GET['player'];
if (!$player_name_orig) {
die('You must specify a player name');
}
在這種特定的情況下,這是一個(錯誤!)的方式,以避免PHP給予通知,如果player
項不$_GET
存在:如果試試這個
:
unset($_GET['player']); // to make sure
echo $_GET['player'];
你得到:
說明:未定義指數:玩家在F:\ dev的\ WWW \的index.php上線
而如果你試試這個:
unset($_GET['player']); // to make sure
echo @$_GET['player'];
沒有輸出。
正確的方式做到這一點:
if (empty($_GET['player']) {
die('You must specify a player name');
}
該@
將停止出現任何錯誤,並在出現錯誤時返回false。
因此,在你的代碼,如果$_GET['player']
不存在,則該代碼將進入if語句
@表示忽略錯誤,如不設置變量。
的「@」是用來防止任何警告或錯誤信息出現。這是一個非常不好的習慣。這樣做很多隱藏的操作都已完成(刪除錯誤處理程序,然後放回)。
做該操作中的正確的方法是:
// 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) { ...
[?參考 - 這是什麼符號在PHP意味着]可能重複(http://stackoverflow.com/questions/3737139/reference-what -does-這個符號,均在-PHP) – ircmaxell 2011-05-03 19:52:33