未定义的变量:_SESSION php登录脚本

时间:2017-03-04 00:31:04

标签: php session

我是PHP新手,在会话方面更像是初学者。我有 index.php 页面,用户可以在这里注册和登录。表格分别发布到submit.php进行注册和登录。

这是 dashboard.php 文件,其中我显示了用户的用户名和他登录帐号的电子邮件地址。

<?php
session_start();
include "includes/config.php";
include "layouts/header.php";
$s_title = "Superior Results";
if(isset($_SESSION['id'])) { 
    $username = $_SESSION['username'];
    $email = $_SESSION['email'];
    $id = $_SESSION['id'];

} else {
    header('Location: index.php');
    die();
}
 $sql = "SELECT email, username FROM members";
 $result = mysqli_query($dbCon, $sql);

 $row = mysqli_fetch_assoc($result);

?>

这就是我在dashboard.php文件中调用这些会话变量的方法

<?php echo $_SESSION['username'];?>   
<?php echo $_SESSION['email'];?>   

用户名有效,但电子邮件无法正常显示注意:未定义索引:电子邮件

screenshot

2 个答案:

答案 0 :(得分:1)

此错误的原因是您尝试读取不存在的数组键。 isset()函数在那里,您可以测试它。您不需要空检查,因为您从不为元素指定null:

// check that the 'email' key exists
if (isset($_SESSION['email'])) {
  // it does; output the message
  echo $_SESSION['email'];

  // remove the key so we don't keep outputting the message
  unset($_SESSION['email']);
}

嗯,只是为了您的评论,我不确定我是否了解您的需求,但您想做这样的事情:?

$username = $_POST['username'];

$sql = "SELECT email FROM users WHERE username = '$username'";
if(($result = mysqli_query($conn, $sql) != false){
  if(($row = $result->fetch_assoc() !== null)){
    $_SESSION['email'] = $row;
  } else {
    echo 'no rows in database';
  }
} else {
  echo 'You have an error in you mysql syntax';
}
//.. work with concrete user

答案 1 :(得分:0)

用户登录后需要设置会话变量

 $sql = "SELECT email, username FROM members WHERE id = '".$confirmed login id from the login process."' ";
 $result = mysqli_query($dbCon, $sql);

 $row = mysqli_fetch_assoc($result);

$SESSION['id'] = $row['id'];
$SESSION['email'] = $row['email'];
$SESSION['username'] = $row['username'];

在登录后设置这些会话变量后,您可以在该会话的任何其他页面上使用它们(在第一行上有session_start())