簡體   English   中英

如何在用戶登錄時從 PHP 和 MySQL 獲取用戶 ID、用戶名

[英]How to get user ID, username from PHP and MySQL while user is logged in

我有這個問題,我無法從數據庫中獲取用戶 ID 和用戶名,並在用戶登錄時將其存儲到變量中。(僅適用於電子郵件。)這是我的代碼。

<?php
    if (isset($_POST['email'], $_POST['password'])) {
      $email = $_POST['email'];
      $password = md5($_POST['password']);
      if (empty($email) or empty($password)) {
        $error = 'All fields are requred!';
      }
      else {
        $query=$pdo->prepare('SELECT * FROM user WHERE email = ? AND password = ? ');
        $query->bindValue(1, $email);
        $query->bindValue(2, $password);
        $_SESSION['email']=$email;
        $query->execute();
        $num=$query->rowCount();
        if ($num == 1) {
          $_SESSION['logged_in'] = true;
          header('Location: index.php');
          exit();
        }
        else {
          $error = 'Incorrect data';
        }
      }
    }
  }
?>

刪除 bindValue 行並嘗試像這樣執行

$query=$pdo->prepare('SELECT * FROM user WHERE email = ? AND password = ? ');
$query->execute([$email, $password]);

在這里查看示例https://www.php.net/manual/en/pdo.prepare.php

您正在調用准備好的語句的“執行”方法,但您沒有在任何地方調用“獲取”方法。 因此,在您的代碼中,當行數為 1 時,您設置了一個 session 變量,表示登錄成功。 在那里你需要添加以下代碼:

$row = $query->fetch(PDO::FETCH_ASSOC);

現在變量 $row 將包含您的所有字段,只有這樣您才能將值添加到 session 變量,例如用戶 ID。 所以假設你的用戶表有“user_id”作為字段,你可以添加這樣的代碼:

if ($num == 1) {
    $row = $query->fetch(PDO::FETCH_ASSOC);
    $_SESSION['user_id'] = $row['user_id'];
    $_SESSION['logged_in'] = true;
    header('Location: index.php');
    exit();
}

暫無
暫無

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

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