Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何显示MySQL数据库中的特定数据?(获取用户的电子邮件)_Php_Mysql_Database_Registration_Account - Fatal编程技术网

Php 如何显示MySQL数据库中的特定数据?(获取用户的电子邮件)

Php 如何显示MySQL数据库中的特定数据?(获取用户的电子邮件),php,mysql,database,registration,account,Php,Mysql,Database,Registration,Account,我已经用我的账户页面建立了一个注册系统 我可以在其中显示姓名和密码,但不能在登录后显示电子邮件,因为我必须从MySQL数据库获取,因为用户在登录时没有输入他的电子邮件 代码中没有错误,但未显示电子邮件 这是server.php登录代码: // LOGIN USER if (isset($_POST['login_user'])) { $username = mysqli_real_escape_string($db, $_POST['username']); $password = m

我已经用我的账户页面建立了一个注册系统

我可以在其中显示姓名和密码,但不能在登录后显示电子邮件,因为我必须从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");
   }
  }
}

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

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

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


最后要注意的是,base64不是存储密码的理想函数,最好使用一些散列函数。

这是一个错误,其中username='$username'和password=$password;请不要使用您自己的密码哈希,特别是不要使用PHP提供的base64_encode,请使用它们。导致问题的查询实际上不需要存在。您在上一次查询中选择了*,因此在上一次查询的结果集中已经有电子邮件。您只需要做$row=mysql\u fetch\u assoc$result;我不知道任何双向哈希,所以我使用base64_编码和base64_解码进行加密。我说我是初学者,所以我不知道足够的php来使用准备好的参数化语句,直到显示错误-解析错误:语法错误,第99行的/home/vol14_6/epizy.com/epiz_23929862/htdocs/reg_test/server.php中出现意外的文件结尾。这是另一个错误,请仔细检查所有大括号和分号,因为它们是导致该错误的最常见原因
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");
    }
}