PHP获取当前登录用户的电子邮件 [英] PHP get the email of a user currently logged in

查看:64
本文介绍了PHP获取当前登录用户的电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有问题.我想获取用户的电子邮件, email 是数据库中名为 users 的表中的特殊列.我创建了一个运行良好的登录系统,但我仍想获取当前登录用户的电子邮件.

I have a problem. I want to get the email of a user, the email is a special column in a table called users in my database. I created a login-system that is working well, but I still want to get the e-mail of the user who is currently logged in.

我真的是php和mysql的新手.:(

I am really new to php and mysql. :(

这是我在login.php中的代码:

This is my code in login.php:

<?php

require 'Mysql.php';

class Membership {

//Check if input is correct
function validate_user($un, $pwd) {
    $mysql = New Mysql();
    $ensure_credentials = $mysql->verify_Username_and_Pass($un, $pwd);

    //input correct
    if($ensure_credentials) {
        $_SESSION['status'] = 'authorized';
        $_SESSION["username"] = $un;
        $_SESSION["email"] = $ensure_credentials['email'];
        header("location: ?status=authorized");
    } 




function log_User_Out() {
    if(isset($_SESSION['status'])) {
        unset($_SESSION['status']);

        if(isset($_COOKIE[session_name()])) 
            setcookie(session_name(), '', time() - 10000);
            session_destroy();
    }

    if(isset($_SESSION["username"])) {
        unset($_SESSION["username"]);
    }

    if(isset($_SESSION["email"])) {
        unset($_SESSION["email"]);
    }
}
}

以及来自Mysql.php的此处:

and here from Mysql.php:

<?php

require "/data/logindata/constants.php";

class Mysql {

private $conn;


function __construct() {
    $this->conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or 
                  die('There was a problem connecting to the database.');
}

function verify_Username_and_Pass($un, $pwd) {

    $query = "SELECT *
    FROM users
    WHERE username = ? AND password  = ?
    LIMIT 1";

    if($stmt = $this->conn->prepare($query)) {
        $stmt->bind_param('ss', $un, $pwd);
        $stmt->execute();
        $stmt->bind_result($username, $email); // the columns fetched with SELECT *

        if (!$stmt->fetch()) {
            return false;
        }

        return array(
            'username'    => $username,
            'email'     => $email
        );
    }
    return false;
}

}

推荐答案

您可以使用 verify_Username_and_Pass 函数返回一些用户数据,而不是返回布尔值.您可以在其中包含通过身份验证的用户的电子邮件:

Instead of returning a boolean, you may return some user data with verify_Username_and_Pass function. There you can include authenticated user's email:

function verify_Username_and_Pass($un, $pwd) {

  $query = "SELECT username, password
    FROM users
    WHERE username = ? AND password  = ?
    LIMIT 1";

  if($stmt = $this->conn->prepare($query)) {
    $stmt->bind_param('ss', $un, $pwd);
    $stmt->execute();
    $stmt->bind_result($username, $email); // the columns fetched with SELECT *

    if (!$stmt->fetch()) {
      return false;
    }

    return array(
      'username'    => $username,
      'email'     => $email
    );
  }
  return false;
}

....

$ensure_credentials = $mysql->verify_Username_and_Pass($un, $pwd);

//input correct
if($ensure_credentials) {
    $_SESSION['status'] = 'authorized';
    $_SESSION["username"] = $un;
    $_SESSION["email"] = $ensure_credentials['email'];
    header("location: ?status=authorized");
} 

这篇关于PHP获取当前登录用户的电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆