簡體   English   中英

未定義的變量:_SESSION php登錄腳本

[英]Undefined variable: _SESSION php login script

我是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'];?>   

用戶名有效,但電子郵件不起作用,它顯示提示: 未定義索引:電子郵件

屏幕截圖

出現此錯誤的原因是您正在嘗試讀取不存在的數組鍵。 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

用戶登錄后,需要設置會話變量

 $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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM