为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕的地8271018 2021-08-27 09:30:43
我已经用我的帐户页面制作了一个注册系统。我可以在其中显示名称和密码,但登录后无法显示电子邮件,因为我必须从 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");   }  }
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

您在第二个查询中出错,您没有正确引用密码。也就是说,您根本不需要第二个查询,因为电子邮件字段已经在第一个结果中。你知道它只有一行因为你检查mysqli_num_rows($results) == 1


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) {

        $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 不是存储密码的理想函数,而使用一些散列函数可能是个好主意。


查看完整回答
反对 回复 2021-08-27
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

登录成功后,您应该会收到您的电子邮件。


$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'];

}


查看完整回答
反对 回复 2021-08-27
  • 2 回答
  • 0 关注
  • 231 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信