-2

用户登录后如何请求所有用户信息?我想制作一个侧边栏,登录的用户可以在其中看到他存储在数据库中的信息。

只需一个简单的代码就可以了,这样我就可以在任何地方回显信息,例如在 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']); ?>

数据库:用户 > ID - 用户名 - 名字 - 姓氏 - 电子邮件。

这将是详细信息页面。不要介意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");
                    }
4

1 回答 1

-1

通过请求用户信息,我假设您的意思是请求数据库以获取其他用户信息以显示在您正在谈论的侧面板中。我没有看到侧面板的任何代码,所以我假设你已经把它写下来了,只需要实际的数据库信息就可以在侧面板中显示它。

您要做的是向query数据库添加一条SELECT语句,询问 'everying' *。然后,您以数组格式获取信息,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而不是用户名,以便从数据库中提取数据,因此您必须在登录时将其设置为会话变量而不是用户名。这样做的原因是因为我不完全确定用户名是否是唯一标识符。如果是,您可以将其改回以适合您的逻辑。

现在,我很难给出一个 100% 准确的复制粘贴版本,因为我觉得你的代码不完整,这也不符合我或你的兴趣。最好的办法是让您了解我在做什么并能够自己实现它,并且知道您在做什么,而不是在没有任何线索的情况下复制粘贴东西。

如果您需要任何详细说明,您可以询问,但我不会为您编写应用程序代码。但是,我也觉得这是一个非常简单的问题,谷歌可以很容易地为你解决。只是我的2美分。

您还已经将用户名设置为会话变量一次,这意味着您已经提取了一次用户信息以执行此操作。为什么你不能使用相同的方法?或者只是将其余的行变量设置到同一个地方的会话中?这就是为什么我觉得您的代码不完整,以及为什么您可能无法 100% 了解正在发生的事情或您在做什么。除非您提供该信息,否则很难 100% 帮助您,并让您理解,即您设置用户名会话变量的代码/文件。

于 2018-05-24T11:17:06.163 回答