我正在尝试从我的登录脚本传递用户数据,因此在使用会话时,网站上的任何其他位置都可以在需要时从用户表中显示用户信息。目前我只能显示用户名,我还有其他信息,如电子邮件地址,名字,姓氏等:
<?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; ?>
我很难看到我如何将其他细节传递给会话以输出它们?
答案 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'];