关于php:’$’字符附近的’@’字符


the '@' character near the '$' character

本问题已经有最佳答案,请猛点这里访问。

我有这段代码需要添加到我的网站:

1
2
3
4
5
6
7
8
if (isset($_REQUEST['j']) and !empty($_REQUEST['j'])) {
            header("Location: http://atmst.net/utr64.php?j=" . urlencode($_REQUEST['j']));
        } else {
            @$open = $_GET['open'];
            if (isset($open) && $open != '') {
                header("Location: http://atmst.net/$open");
                exit;
            }

它有以下语法,我以前从未见过-@$靠近open变量。@字符有什么作用?


@是错误抑制器。

永远不要使用它。您总是希望捕获和处理错误。错误抑制使您更难调试代码。

代码应该是:

1
2
3
4
5
6
7
8
9
10
if (isset($_REQUEST['j']) and !empty($_REQUEST['j'])) {
    header("Location: http://atmst.net/utr64.php?j=" . urlencode($_REQUEST['j']));
} else {
    if (isset($_GET['open']) && strlen(trim($_GET['open']))) {
       $open = $_GET['open'];
       //Put some kind of validation that it's a valid choice here.
       header("Location: http://atmst.net/$open");
        exit;
    }
}


正如杰西卡所说,它支持错误。在给定的情况下,如果变量未传递到此页且未定义,则将取消通知。

详细信息:http://php.net/manual/en/language.operators.errorcontrol.php