PHP中$_SESSION['login']未定义数组键警告问题求助
解决PHP中Undefined array key "login"的警告问题
出现这个警告的原因很明确:用户提交登录表单前,$_SESSION数组里还没有login这个键,直接访问$_SESSION['login']就会触发未定义数组键的警告;提交表单后,代码应该已经设置了$_SESSION['login'],所以警告消失。
以下是几种实用的解决方法:
方法一:用
isset()先检查键是否存在
先通过isset()确认login键存在,再判断其值是否为true,避免警告触发:<?php session_start(); // 务必先启动Session,否则$_SESSION无法使用 if (isset($_SESSION['login']) && $_SESSION['login'] === true) { echo "HELLO..! Welcome"; } else { echo "HELLO..! Please Log-in"; } ?>方法二:使用null合并运算符(PHP 7及以上版本支持)
写法更简洁,当$_SESSION['login']不存在时,直接返回默认值false:<?php session_start(); $isLoggedIn = $_SESSION['login'] ?? false; if ($isLoggedIn) { echo "HELLO..! Welcome"; } else { echo "HELLO..! Please Log-in"; } ?>方法三:用
array_key_exists()检查键是否存在
如果你需要区分“键存在但值为null”和“键不存在”的情况,可以用这个函数——它只检查键是否存在,不关心对应的值:<?php session_start(); if (array_key_exists('login', $_SESSION) && $_SESSION['login'] === true) { echo "HELLO..! Welcome"; } else { echo "HELLO..! Please Log-in"; } ?>
注意:所有操作$_SESSION的代码前,必须调用session_start(),否则$_SESSION数组本身都不存在,会触发更严重的错误。
内容的提问来源于stack exchange,提问作者Mijanur Islam
相关产品推荐
相关产品推荐

