登录后,我尝试显示欢迎横幅,上面写着欢迎用户 ID,但它显示的是欢迎 1540102764。不知道出了什么问题。我猜测我的 login.php
没有正确存储 $_SESSION['login_user']
,或者我应该使用 $_SESSION['login_user'] ']
检索用户 ID 以显示欢迎用户 ID。
主页.php
<?php
session_start();
if( !isset( $_SESSION['login_user'] ) || time() - $_SESSION['login_time'] > 1800) {
session_unset();
session_destroy();
header("Location:login.php");
} else {
$_SESSION['login_user'] = time();
}
?>
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Homepage</title>
</head>
<header id="header">
<li>Welcome
<?php
echo 'Welcome ' . $_SESSION['login_user'];
?>
</li>
</header>
<footer id="footer">
</footer>
</body>
</html>
登录.php
<?php
error_reporting(E_ALL);
include("global.php");
session_start();
if (isset($_SESSION['login_user'])) {
header("Location: homepage_admin.php");
}
if($_SERVER["REQUEST_METHOD"] == "POST") {
$conn = new mysqli(server, dbuser, dbpw, db);
$userid = $_POST['txtLogin'];
$password = $_POST['txtPassword'];
$query = "SELECT userid, activeness from users where userid ='$userid' and password = '$password'";
$result = $conn->query($query);
if (! $result){
throw new My_Db_Exception('Database error: ' . mysqli_error());
}
while ($row = mysqli_fetch_assoc($result)) {
if ($row["activeness"] == 0) {
echo "<script language='javascript' type='text/javascript'>";
echo "alert('This account in deactivated.');";
echo "</script>";
}
else {
$_SESSION['login_user'] = $row['userid'];
$_SESSION['login_time'] = time();
header("location: homepage_admin.php");
};
};
};
?>
<!DOCTYPE html>
<html lang="en-US">
<html>
<head>
<title>Login</title>
<script src="scripts/index.js" type="text/javascript"></script>
</head>
<body>
<form role="form" action="login.php" method='post'>
<fieldset>
<div>
<label for="userid" ></label>
User ID <input type="text" name="txtLogin" id="txtLogin" placeholder="enter user ID" value="admin" required>
</div>
<br/>
<div>
<label for="password"></label>
Password <input type="password" name="txtPassword" id="txtPassword" placeholder="enter password" value="admin" required>
</div>
<br/>
<input type="submit" name="btnLogin" id="btnLogin" value="Login"> <br/>
<input type="reset" name="btnReset" id="btnReset" value="Reset">
</fieldset>
</form>
<footer id="footer">
</footer>
</body>
</html>
最佳答案
在您的显示部分中,您用 time()
覆盖了 login_user...
if( !isset( $_SESSION['login_user'] ) || time() - $_SESSION['login_time'] > 1800) {
session_unset();
session_destroy();
header("Location:login.php");
} else {
$_SESSION['login_time'] = time();
}
正如 Ernani Azevedo 指出的那样,它应该更新 login_time
,尽管我会将 login_time
重命名为 last_seen
以便更清晰。
关于php - 使用 session 回显来欢迎用户 ID,但回显数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52912809/