我有一个PHP文件,用户可以登录和注销。我目前正在运行。我想在用户登录时显示一个数字。
例如,用户A登录并重定向到userpage.php,我想显示一个1,2,3之类的数字并且仍然计数。我已经创建了这个。
但是问题是当用户注销并再次尝试登录时,号码不继续吗?它再次变成1,2,3。
即使用户注销,是否仍有可能继续计数?
谢谢
答案 0 :(得分:0)
要获得此结果,您不能尝试记录登录时间和注销时间,并取时间之间的差值,并显示自首次登录以来经过的秒数。
第1步:记录首次登录时间并将其保存在数据库中。
第2步:记录注销时间并将其保存在数据库中。
第3步:如果您希望第一次登录和最后一次注销所花费的时间过长,请以秒为单位计算时间差。 如果您希望上次登录的时间已到,请计算上次登录与当前时间之间的时差。
第4步:在HTML用户页面上显示经过的时间。
答案 1 :(得分:0)
更新:由于您希望数字在后台增加而不考虑登录/注销,请使用cron jobs
参见this了解更多信息
您必须为每个用户登录使用计数器,该计数器必须是永久性的,因此,请将此计数器保存在数据库中,无论您使用哪种应用程序。
流量会像这样:
检查登录名>成功登录>从数据库获取当前登录计数器 对于该特定用户>递增1>将其保存回数据库
php的一般实现就像(考虑用户名始终是唯一的)
注意:以下代码未经测试
.
.
.
$stmt = $con->prepare("SELECT user_id, username, password, login_count FROM users WHERE username=? AND password=? LIMIT 1");
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->bind_result($user_id, $username, $password, $loginCount);
$stmt->store_result();
if($stmt->num_rows == 1) //To check if the row exists
{
if($stmt->fetch()) //fetching the contents of the row
{
$_SESSION['Logged'] = 1;
$_SESSION['user_id'] = $user_id;
$_SESSION['username'] = $username;
$loginCount = $loginCount+1; //increment login counter by 1
//this should be default as 0 when a new user register
//Now save it back to DB using update query
$Updatesql = "UPDATE Table SET loginCount=? WHERE username=?";
$Updatestmt = $con->prepare($Updatesql);
$Updatestmt->bind_param('ds', $loginCount,$username);
$Updatestmt->execute();
if ($Updatestmt->error) {
//Update failed
echo "FAILURE!!! " . $Updatestmt->error;
}
else echo "Updated {$Updatestmt->affected_rows} rows"; //Update succeeded
$Updatestmt->close();
exit();
}
}
else {
echo "INVALID USERNAME/PASSWORD Combination!";
}
$stmt->close();
答案 2 :(得分:-1)
最初在用户数据库中设置一个计数字段。 登录并重定向到userpage.php文件后,显示count字段中count的计数,注销后,将最大数量保存到count字段中