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会话错误未定义索引的主要内容,如果未能解决你的问题,请参考以下文章

标头重定向后未定义PHP会话索引?

会话 ID 未显示错误消息注意:未定义索引:用户 ID [重复]

无法连接到本地 PHP 站点(未定义索引和未定义变量错误)[重复]

为啥在使用 AJAX/PHP 时收到未定义索引错误?

文件上传 php $_FILES 未定义索引错误

PHP 5.4 未定义索引:argv