php会话错误未定义索引
Posted
技术标签:
【中文标题】php会话错误未定义索引【英文标题】:Php session error undefined index 【发布时间】:2015-03-06 11:54:39 【问题描述】:session_start();
if (isset($_POST['username'] , $_POST['password']))
$extractabout = $db->prepare("SELECT * FROM user WHERE username = :username && password = :password");
$extractabout->execute([
'username' => $_POST['username'],
'password' => $_POST['password']
]);
$infos = $extractabout->rowCount() ? $extractabout : [] ;
foreach ($infos as $info)
if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty('role'))
$_SESSION['username'] == $info['username'];
$_SESSION['password'] == $info['password'];
if(isset($_SESSION['username'], $_SESSION['password'], $_SESSION['user_id'], $_SESSION['role']))
header("Location: test.php");
?>
当我将$_SESSION['username']
的值称为$info['username']
时出现错误:
未定义索引:用户名 未定义索引:密码
【问题讨论】:
发现多个错误。==
与 =
不同。记得在header("Location: $url");
打完电话后给exit()
【参考方案1】:
您无需分配值,您只需使用一个=
,因此请使用:
$_SESSION['username'] = $info['username'];
$_SESSION['password'] = $info['password'];
我还会在每个标题后添加一个exit();
,以便您确定脚本停止执行!
header("Location: test.php");
exit();
【讨论】:
【参考方案2】:使用=
在会话中分配值而不是==
(比较)。
还有什么是!empty('role')
我想应该是!empty($info['role'])
if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty($info['role']))
$_SESSION['username'] = $info['username'];
$_SESSION['password'] = $info['password'];
【讨论】:
【参考方案3】:您的代码中有语法错误,更正的错误是:
if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty($info['role']))
$_SESSION['username'] = $info['username'];
$_SESSION['password'] = $info['password'];
【讨论】:
为什么要分开isset()
电话?这没有必要。
This isset($_SESSION['username'], $_SESSION['password'], $_SESSION['user_id'], $_SESSION['role'])) 是错误的,我只是纠正语法。
@NeedhiAgrawal 您可以在 isset() 中使用逗号分隔的多重检查遵循 ***.com/questions/14476609/…以上是关于php会话错误未定义索引的主要内容,如果未能解决你的问题,请参考以下文章
会话 ID 未显示错误消息注意:未定义索引:用户 ID [重复]