从登录脚本传递用户信息
Passing user information from 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; ?>
我正在努力了解如何将其他详细信息传递给会话以输出它们?
我假设这些额外的详细信息(如名字、姓氏、电子邮件地址)包含在您的用户数据库中 table?
如果是这样,您可以修改 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;
最后,输出你喜欢的值where-ever,例如:
echo $_SESSION['email'];
我正在尝试从我的登录脚本传递用户数据,以便在网站的其他任何地方使用会话时我可以在需要时从用户表中显示用户信息。目前我只能显示用户名,我还有其他信息,例如电子邮件地址、名字、姓氏等:
<?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; ?>
我正在努力了解如何将其他详细信息传递给会话以输出它们?
我假设这些额外的详细信息(如名字、姓氏、电子邮件地址)包含在您的用户数据库中 table?
如果是这样,您可以修改 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;
最后,输出你喜欢的值where-ever,例如:
echo $_SESSION['email'];