从登录脚本传递用户信息

时间:2016-01-14 23:00:01

标签: php authentication login-script

我正在尝试从我的登录脚本传递用户数据,因此在使用会话时,网站上的任何其他位置都可以在需要时从用户表中显示用户信息。目前我只能显示用户名,我还有其他信息,如电子邮件地址,名字,姓氏等:

<?php

ob_start();

include('db_con.php'); 

$username=$_POST['username']; 
$password=$_POST['password']; 

$sql="SELECT password FROM users WHERE username = ?";

$stmt = mysqli_prepare($db, $sql);


$stmt->bind_param("s", $username);

$stmt->execute();
$stmt->store_result();

if($stmt->num_rows()) {
    $stmt->bind_result($hashed_password);
    $stmt->fetch();

    if(password_verify($password, $hashed_password)) {
        session_start();
        $_SESSION['loggedin'] = true;
        $_SESSION['username'] = $username;
        header("location:home.php");
    } else {
        echo "Wrong Username or Password";
    }
 } else {
     echo "User is not found!";
 }

ob_end_flush();
?>

以下是我的会话设置方式:

<?php
// Uer sessions
session_start();
?>
    <?php if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true): ?>

    <?php echo $_SESSION['username']; ?>
    <?php echo $_SESSION['emailAddress']; ?>
    <br />
    <?php echo "<a href='logout.php'>Logout</a>"; ?>

    <?php endif; ?>

我很难看到我如何将其他细节传递给会话以输出它们?

1 个答案:

答案 0 :(得分:1)

我假设您的用户数据库表中包含这些其他详细信息(如名字,姓氏,电子邮件地址)?

如果是这样,您可以修改SQL查询以获取这些值,然后设置会话变量来存储它们。

例如(我假设您的列名为'firstname','lastname'和'email'):

$sql="SELECT password, firstname, lastname, email FROM users WHERE username = ?";
$stmt = mysqli_prepare($db, $sql);
$stmt->bind_param("s", $username);
...
$stmt->bind_result($hashed_password, $firstname, $lastname, $email);
...

然后,当您确认密码匹配时,请使用正确的值设置会话变量:

$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
$_SESSION['firstname'] = $firstname;
$_SESSION['lastname'] = $lastname;
$_SESSION['email'] = $email;

最后,在您喜欢的地方输出这些值,例如:

echo $_SESSION['email'];