如何基于已登录用户从php中的MySQL中获取特定的用户数据

问题描述 投票:-1回答:1

我正在尝试获取特定(已登录用户)用户的数据,但无法执行此操作。我编写了一个代码,可以读取完整的数据,但是我只想读取特定用户的数据。

我曾尝试使用WHERE username="$username"和其他可能的方法,但对我来说都不起作用

<?php
include_once 'server.php';
$result = mysqli_query($db,"SELECT * FROM users");
?>
<!DOCTYPE html>
<html>
 <head>
 <title> Admin Panel</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 </head>
<body>
<h2>Welcome Admin</h2><hr>

<?php
if (mysqli_num_rows($result) > 0) {
?>
  <table id="students">

  <tr>
    <th>ID</th>
    <th>First Name</th>
    <th>Last Name</th>
    <th>Gender</th>
    <th>DateOfBirth</th>
    <th>Contact Number</th>
    <th>Username</th>
    <th>Email id</th>
  </tr>
<?php
$i=0;
while($row = mysqli_fetch_array($result)) {
?>
<tr>
    <td><?php echo $row["id"]; ?></td>
    <td><?php echo $row["fname"]; ?></td>
    <td><?php echo $row["lname"]; ?></td>
    <td><?php echo $row["gender"]; ?></td>
    <td><?php echo $row["dob"]; ?></td>
    <td><?php echo $row["contact"]; ?></td>
    <td><?php echo $row["username"]; ?></td>
    <td><?php echo $row["email"]; ?></td>
</tr>
<?php
$i++;
}
?>
</table>
 <?php
}
else{
    echo "No result found";
}
?>
    <form  method="GET" action="index.php?logout='1'">
            <button type="submit" class="button" name="logout">Logout</button>
    </form>
 </body>
</html>

这是server.php,我能够提取所有用户数据,但是我想根据登录者来确定特定的用户数据

<?php 
    session_start();

    // variable declaration
    $id = "";
    $fname = "";
    $lname = "";
    $gender="";
    $dob = "";
    $contact = "";
    $username = "";
    $email    = "";
    $errors = array(); 
    $_SESSION['success'] = "";

    // connect to database
    $db = mysqli_connect('localhost', 'root', '', 'registration');

    // REGISTER USER
    if (isset($_POST['reg_user'])) {
        // receive all input values from the form
        $fname = mysqli_real_escape_string($db, $_POST['fname']);
        $lname = mysqli_real_escape_string($db, $_POST['lname']);
        $gender = mysqli_real_escape_string($db, $_POST['gender']);
        $dob = mysqli_real_escape_string($db, $_POST['dob']);
        $contact = mysqli_real_escape_string($db, $_POST['contact']);
        $username = mysqli_real_escape_string($db, $_POST['username']);
        $email = mysqli_real_escape_string($db, $_POST['email']);
        $password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
        $password_2 = mysqli_real_escape_string($db, $_POST['password_2']);

        // form validation: ensure that the form is correctly filled
        if (empty($fname)) { array_push($errors, "Firstname is required"); }
        if (empty($lname)) { array_push($errors, "Lastname is required"); }
        if (empty($dob)) { array_push($errors, "Date of Birth is required"); }
        if (empty($contact)) { array_push($errors, "Contact Number is required"); }
        if (empty($username)) { array_push($errors, "Username is required"); }
        if (empty($email)) { array_push($errors, "Email is required"); }
        if (empty($password_1)) { array_push($errors, "Password is required"); }

        if ($password_1 != $password_2) {
            array_push($errors, "The two passwords do not match");
        }

        // register user if there are no errors in the form
        if (count($errors) == 0) {
            $password = md5($password_1);//encrypt the password before saving in the database
            $query = "INSERT INTO users (fname, lname, gender, dob,contact, username, email, password) 
                      VALUES('$fname', '$lname','$gender', '$dob','$contact', '$username', '$email', '$password')";
            mysqli_query($db, $query);

            $_SESSION['username'] = $username;
            $_SESSION['success'] = "You are now logged in";
            header('location: index.php');
        }

    }

    // ... 

    // LOGIN USER
    if (isset($_POST['login_user'])) {
        $username = mysqli_real_escape_string($db, $_POST['username']);
        $password = mysqli_real_escape_string($db, $_POST['password']);

        if (empty($username)) {
            array_push($errors, "Username is required");
        }
        if (empty($password)) {
            array_push($errors, "Password is required");
        }

        if (count($errors) == 0) {
            $password = md5($password);
            $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
            $results = mysqli_query($db, $query);

            if (mysqli_num_rows($results) == 1) {
                $_SESSION['username'] = $username;
                $_SESSION['success'] = "You are now logged in";

                header('location: index.php');
            }else {
                array_push($errors, "Wrong username/password combination");
            }
        }
    }

php mysql database fetch user-registration
1个回答
-1
投票

那么您可以在php中使用会话或cookie函数。在您的登录页面中,输入命令

setcookie('user', $user, time() + (the time for the user must be logged in), '/');

然后在要显示用户数据的页面中,分配变量,如

$user = $_COOKIE['user'];

和SQL查询:

select * from table_name where user = $user

我希望这可以解决您的问题

© www.soinside.com 2019 - 2024. All rights reserved.