【问题标题】:Php session error undefined indexphp会话错误未定义索引
【发布时间】: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()

标签: php session indexing undefined


【解决方案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() 中使用逗号分隔的多重检查遵循 stackoverflow.com/questions/14476609/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 2011-02-21
      • 2016-08-17
      • 2012-05-23
      • 2012-06-27
      • 1970-01-01
      相关资源
      最近更新 更多