php - 使用 session 回显来欢迎用户 ID,但回显数字

标签 php

登录后,我尝试显示欢迎横幅,上面写着欢迎用户 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/

相关文章:

php - Codeigniter ActiveRecord,按类别统计记录

java - 编写java程序登录HTTP PHP网站

javascript - 隐藏在手机上的元素,但不是桌面响应式布局

php - HTML 文件上传可以在黑莓浏览器上运行吗?

php - 该查询有效,但我想知道是否可以缩短它

php - 如何将表行与 PHP 数组合并?

php - PHP Streams 中的阻塞和非阻塞模式

php - 无法在 Laravel 6.5.1 上制作 "composer require laravel/ui --dev"

php - 分解/分解文本字符串的最佳分隔符 - @、!、<>、# 或 |

javascript - 更新 html 表 AJAX PHP