猿问

如何显示 MySQL 数据库中的特定数据?

我已经用我的帐户页面制作了一个注册系统。


我可以在其中显示名称和密码,但登录后无法显示电子邮件,因为我必须从 MySQL 数据库中获取它,因为用户在登录时没有输入他的电子邮件。


代码中没有错误,但未显示电子邮件。


这是server.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 = base64_encode($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;


//Here is the code with problem


      $query = "SELECT email FROM users WHERE username='$username' AND password=''$password";


      $result = mysqli_query($conn, $sql);


    if (mysqli_num_rows($result) > 0) {

    while($row = mysqli_fetch_assoc($result)) {

        $_SESSION['email'] = $row["email"];

    }

    }


//Here it ends


      $_SESSION['password'] = $password;

      $_SESSION['success'] = "You are now logged in";

      if ($_SESSION['page'] == "account.php"){

          header('location: account.php');

      }

      else{

        header('location: index.php');

      }

    }else {

        array_push($errors, "Wrong username/password combination");

   }

  }


慕的地8271018
浏览 232回答 2
2回答

米琪卡哇伊

您在第二个查询中出错,您没有正确引用密码。也就是说,您根本不需要第二个查询,因为电子邮件字段已经在第一个结果中。你知道它只有一行因为你检查mysqli_num_rows($results) == 1if (count($errors) == 0) {    $password = base64_encode($password);    $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";    $results = mysqli_query($db, $query);    if (mysqli_num_rows($results) == 1) {        $user_data = mysqli_fetch_assoc($results);        $_SESSION['username'] = $username;        $_SESSION['email'] = $user_data['email'];                   $_SESSION['password'] = $password;        $_SESSION['success'] = "You are now logged in";        if ($_SESSION['page'] == "account.php"){            header('location: account.php');        }        else{            header('location: index.php');        }    }else {        array_push($errors, "Wrong username/password combination");    }}最后要注意的是,请记住 base64 不是存储密码的理想函数,而使用一些散列函数可能是个好主意。

子衿沉夜

登录成功后,您应该会收到您的电子邮件。$password = base64_encode($password);$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";$results = mysqli_query($db, $query);if (mysqli_num_rows($results) == 1) {     $row = mysqli_fetch_assoc($result);     $_SESSION['username'] = $username;     $_SESSION['email'] = $row['email'];}
随时随地看视频慕课网APP
我要回答