使用会话电子邮件来获取PHP中的用户名

时间:2018-07-08 13:58:22

标签: php mysql

我创建了一个会话,该会话的用户正在使用电子邮件和密码登录,并且该会话正在捕获他/她的电子邮件,我想使用该电子邮件来获取她的其他数据,例如名字和姓氏,我尝试获取它,但是由于我的新手,我最终得到了错误,这是我的登录代码:

// LOGIN A USER INTO HIS/HER ACCOUNT
if (isset($_POST['login_user'])) {
$email = mysqli_real_escape_string($db, $_POST['email']);
$password = mysqli_real_escape_string($db, $_POST['password']);

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

if (count($errors) == 0) {
$password = md5($password);
$query = "SELECT * FROM users WHERE email='$email' AND password='$password'";
$results = mysqli_query($db, $query);  
if (mysqli_num_rows($results) == 1) {
  $_SESSION['email'] = $email;
  $_SESSION['success'] = "You are now logged in";
  header('location: index.php');
 }else {
  array_push($errors, "Wrong Email or Password combination");
 }
 }
}

我发现它就像下面的代码:(实际上不起作用)

if($result) {
    if(mysqli_num_rows($result) == 1) {
        //Login Successful
        session_regenerate_id();
        $user = mysqli_fetch_assoc($result);
        $_SESSION['id'] = $user['user_id'];
        $_SESSION['email'] = $user['email'];
        $_SESSION['first_name'] = $user['first_name'];
        $_SESSION['last_name'] = $user['last_name'];
        session_write_close();
        header("location: user_index.php");
        exit();

        else {
            $sql = "SELECT first_name FROM users WHERE email = '" . 
$_SESSION['email'] . "'";
$result = mysqli_query($sql);
$user = mysqli_fetch_array($result);
echo "Hello, " . $user['first_name']";

        }

1 个答案:

答案 0 :(得分:0)

我发现这种方式有效,谢谢所有尝试提供帮助的人

<?php
include'db.php';

if(isset($_SESSION['email'])){

           $query = "SELECT first_name FROM users WHERE email= '".$_SESSION['email']."'";     

           $result = mysqli_query($db, $query) or 

           die(mysql_error($db)); 

           if (!$result) die('Query failed: ' . mysqli_error($db)); 

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

           echo $row['first_name'];

        }

    }
?>