[英]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]);
您正在調用准備好的語句的“執行”方法,但您沒有在任何地方調用“獲取”方法。 因此,在您的代碼中,當行數為 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.