用户登录后如何申请所有用户信息?我想创建一个侧边栏,登录的用户可以看到他存储在数据库中的信息。
只需一个简单的代码就可以了,所以我可以在HTML中回应各处的信息:
//WORKS//<?php echo htmlspecialchars($_SESSION['username']); ?>
//NOT WORKING//<?php echo htmlspecialchars($_SESSION['firstname']); ?>
//NOT WORKING//<?php echo htmlspecialchars($_SESSION['lastname']); ?>
//NOT WORKING//<?php echo htmlspecialchars($_SESSION['email']); ?>
数据库:用户&gt; ID - USERNAME - FIRSTNAME - LASTNAME - EMAIL。
这将是详细页面。不要介意HTML。
我的PHP代码
<?php
// Initialize session
session_start();
include("config.php");
// If session variable is not set, redirect to login page
if (!isset($_SESSION['username']) || empty($_SESSION['username'])) {
header("location: login.php");
exit;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Homepagina</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<div class="page-header">
<h1>Hi, <b><?php echo htmlspecialchars($_SESSION['username']); ?></b>. Welcome to our site.</h1>
</div>
<p><a href="logout.php" class="btn btn-danger">Uitloggen!</a></p>
</body>
</html>
// THIS IS THE LOGIN.PHP
if(mysqli_stmt_num_rows($stmt) == 1){
// Bind result variables
mysqli_stmt_bind_result($stmt, $username, $hashed_password);
if(mysqli_stmt_fetch($stmt)){
if(password_verify($password, $hashed_password)){
/* Password is correct, so start a new session and
save the username to the session */
session_start();
$_SESSION['username'] = $username;
$_SESSION['firstname'] = $firstname;
header("location: homepagina.php");
}
答案 0 :(得分:-1)
通过 request 用户信息,我假设您的意思是请求数据库提供其他用户信息以显示在您正在讨论的侧面板中。我没有看到侧面板的任何代码,所以我假设你有这个,只需要实际的数据库信息,以便在侧面板上显示它。
您要做的是使用query
语句SELECT
数据库,要求'每次'*
。然后,您以数组格式mysqli_fetch_array()
获取信息。然后,您可以创建包含不同数据库值的PHP变量。通过会话或其他方式。它的工作方式与任何数组一样。您询问要检索的索引。
如何从数据库中提取数据的示例:
<?php
//$conn is your database connection variable from config.php
//If your connection variable is named something else, change it accordingly
$sessionUser=mysqli_real_escape_string($conn, $_SESSION['id']);
$sql="SELECT * FROM users WHERE id='$sessionUser'";
$result_set=mysqli_query($conn, $sql);
$row=mysqli_fetch_array($conn, $result_set);
//row variables from your table (given that the rows you gave are correct)
$id=$row['id'];
$username=$row['username'];
$fistname=$row['firstname'];
$lastname=$row['lastname'];
$email=$row['email'];
//row variables as session variables
$_SESSION['id'] = $row['id'];
$_SESSION['username'] = $row['username'];
$_SESSION['firstname'] = $row['firstname'];
$_SESSION['lastname'] = $row['lastname'];
$_SESSION['email'] = $row['email'];
?>
我希望这是非常直接的。
请注意 我在您的会话中使用 id 而非用户名,以便从中提取数据数据库,因此您必须在登录时将其设置为会话变量而不是 username 。原因是因为我不完全确定用户名是否是唯一标识符。如果是,您可以将其更改为相应的逻辑。
现在,我很难给出100%准确的复制粘贴版本,因为我觉得你的代码不完整,也不是我或你的兴趣。最好的方法是让你理解我正在做什么,并能够自己实现它,并知道你在做什么,而不是在没有线索的情况下复制粘贴的东西。
如果您需要详细说明,可以提问,但我不打算为您编写应用程序代码。但是,我也觉得这是一个非常简单的事情,谷歌可以很容易地为你解决。我的2美分。
您还已将用户名设置为会话变量一次,这意味着您已经提取了一次用户信息以便执行此操作。你怎么不能使用相同的方法?或者只是将其余的行变量设置在同一个地方的会话中?这就是为什么我觉得你的代码不完整,为什么你可能不会100%理解正在发生的事情,或者你在做什么。除非您提供该信息,否则很难100%帮助您,并让您了解,即您设置用户名会话变量的代码/文件