虽然我的网站工作没有任何问题,但我突然开始在我的服务器上拥有非常高的CPU使用率,所以我开始更仔细地检查代码并启用E_ALL错误报告.
然后我发现我有很多这样的"通知":
Notice: Undefined index: userID in /var/www/vhosts/mydomain.com/httpdocs/header.php on line 8
Run Code Online (Sandbox Code Playgroud)
大多数或他们引用未设置的cookie,例如:
$uid = $_COOKIE['userID'];
Run Code Online (Sandbox Code Playgroud)
如果用户未登记,我会立即收到通知,并且每次使用时都会收到通知$uid.
我想知道的是:这些通知是否无害或者它们是否真的会导致我的网站出现任何问题?(速度问题,错误等)
Gab*_*tos 10
这只是一个通知,请尝试以下代码:
$uid = isset($_COOKIE['userID']) ? $_COOKIE['userID'] : 0;
Run Code Online (Sandbox Code Playgroud)
它不是没有Hamless(取决于观点),你可以使用错误报告功能禁用它,否则,正确的方法是验证索引是否存在isset($_COOKIE['userID']),如果不存在,则定义默认值(null例如)
$var = isset($foo) ? $foo : 'default';
Run Code Online (Sandbox Code Playgroud)
如果您不知道变量是否存在,则需要验证变量是否存在.
$var = 'foo'
if($var == 'foo') { // I known $var is defined, because I have defined it.
[..]
}
/**
* Above, I don't known if user go to mywebsite.com/index.php or
* mywebsite.com/index.php?foo=bar, so, I need to verify if index is defined
*/
if(isset($_GET['foo']) && $_GET['foo'] == 'bar') {
[...]
}
Run Code Online (Sandbox Code Playgroud)