Php 如何查找上次登录时间和当前时间之间的持续时间?
我在谷歌上搜索解决方案并编辑了一些适合我想要的功能的部分。这就是它的样子:Php 如何查找上次登录时间和当前时间之间的持续时间?,php,time,Php,Time,我在谷歌上搜索解决方案并编辑了一些适合我想要的功能的部分。这就是它的样子: $query = "SELECT *from role,user WHERE user_name='$entered_username' AND PASSWORD = SHA1('$entered_password') AND user.role_id = role.role_id"; $result = mysqli_query($link, $query) or die(mysqli_error($link));
$query = "SELECT *from role,user WHERE user_name='$entered_username' AND PASSWORD = SHA1('$entered_password') AND user.role_id = role.role_id";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
if (mysqli_num_rows($result) == 1) {
$update = "UPDATE `user` SET last_login = NOW() WHERE user_name='$entered_username' ";
$_SESSION['lastlog'] = $row['last_login'];
$time = strtotime($_SESSION['lastlog']]);
function humanTiming($time) {
$time = time() - $time; // to get the time since that moment
$tokens = array(
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach ($tokens as $unit => $text) {
if ($time < $unit)
continue;
$numberOfUnits = floor($time / $unit);
return $numberOfUnits . ' ' . $text . (($numberOfUnits > 1) ? 's' : '');
}
}
$query=“从角色中选择*用户,其中用户名=“$entered\u username”和密码=SHA1(“$entered\u PASSWORD”)和user.role\u id=role.role\u id”;
$result=mysqli_query($link,$query)或die(mysqli_error($link));
if(mysqli_num_rows($result)==1){
$update=“update`user`SET last\u login=NOW(),其中user\u name='$entered\u username';
$\u会话['lastlog']=$row['last\u login'];
$time=strottime($\会话['lastlog']]);
函数时间($time){
$time=time()-$time;//获取从该时刻开始的时间
$tokens=数组(
31536000=>“年”,
2592000=>“月”,
604800=>“一周”,
86400=>“天”,
3600=>“小时”,
60=>“分钟”,
1=>“秒”
);
foreach($unit=>$text形式的令牌){
如果($时间<$单位)
继续;
$numberOfUnits=楼层($time/$unit);
返回$numberOfUnits.'.$text.($numberOfUnits>1)?'s':'';
}
}
在html中
<?php
if (isset($_SESSION['user_id'])) {
if ($_SESSION['role_id'] == "Admin") {
?>
<?php echo 'You logged in ' . humanTiming($time) . ' ago'; ?>
尝试此操作后,它设法以小时为单位显示计算的时间。例如,“您在23小时前登录”。在我将用户注销,然后再次登录后,它只显示“您在23小时前登录”。即使在我注销后以秒为单位,它也没有显示时间。如何修复此问题?我只是在编辑您的函数。我认为它的语法错误。希望这对您有所帮助:
$time = "";
$query = "SELECT *from role,user WHERE user_name='$entered_username' AND PASSWORD = SHA1('$entered_password') AND user.role_id = role.role_id";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
if (mysqli_num_rows($result) == 1) {
$update = "UPDATE `user` SET last_login = NOW() WHERE user_name='$entered_username' ";
$_SESSION['lastlog'] = $row['last_login'];
$time = strtotime($_SESSION['lastlog']]);
}
function humanTiming($time) {
$time = time() - $time; // to get the time since that moment
$tokens = array(
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);
$humanTime = "";
foreach ($tokens as $unit => $text) {
if ($time < $unit)
continue;
$numberOfUnits = floor($time / $unit);
$humanTime .= $numberOfUnits . ' ' . $text . (($numberOfUnits > 1) ? 's' : '');
}
return $humanTime; //you should return string like this
}
$time=”“;
$query=“从角色中选择*用户,其中用户名称=“$ENTERTED\U username”和密码=SHA1(“$ENTERTED\U PASSWORD”)和用户.role\U id=角色.role\U id”;
$result=mysqli_query($link,$query)或die(mysqli_error($link));
if(mysqli_num_rows($result)==1){
$update=“update`user`SET last\u login=NOW(),其中user\u name='$entered\u username';
$\u会话['lastlog']=$row['last\u login'];
$time=strottime($\会话['lastlog']]);
}
函数时间($time){
$time=time()-$time;//获取从该时刻开始的时间
$tokens=数组(
31536000=>“年”,
2592000=>“月”,
604800=>“一周”,
86400=>“天”,
3600=>“小时”,
60=>“分钟”,
1=>“秒”
);
$humanTime=“”;
foreach($unit=>$text形式的令牌){
如果($时间<$单位)
继续;
$numberOfUnits=楼层($time/$unit);
$humanTime.=$numberOfUnits.'.$text.($numberOfUnits>1)?'s':'';
}
return$humanTime;//应该像这样返回字符串
}
编辑:函数未返回任何字符串,因此未显示
问题:为什么在if语句中使用函数???我想你知道答案。我只是在编辑你的函数。我认为它的语法错误。希望这对你有所帮助:
$time = "";
$query = "SELECT *from role,user WHERE user_name='$entered_username' AND PASSWORD = SHA1('$entered_password') AND user.role_id = role.role_id";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
if (mysqli_num_rows($result) == 1) {
$update = "UPDATE `user` SET last_login = NOW() WHERE user_name='$entered_username' ";
$_SESSION['lastlog'] = $row['last_login'];
$time = strtotime($_SESSION['lastlog']]);
}
function humanTiming($time) {
$time = time() - $time; // to get the time since that moment
$tokens = array(
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);
$humanTime = "";
foreach ($tokens as $unit => $text) {
if ($time < $unit)
continue;
$numberOfUnits = floor($time / $unit);
$humanTime .= $numberOfUnits . ' ' . $text . (($numberOfUnits > 1) ? 's' : '');
}
return $humanTime; //you should return string like this
}
$time=”“;
$query=“从角色中选择*用户,其中用户名称=“$ENTERTED\U username”和密码=SHA1(“$ENTERTED\U PASSWORD”)和用户.role\U id=角色.role\U id”;
$result=mysqli_query($link,$query)或die(mysqli_error($link));
if(mysqli_num_rows($result)==1){
$update=“update`user`SET last\u login=NOW(),其中user\u name='$entered\u username';
$\u会话['lastlog']=$row['last\u login'];
$time=strottime($\会话['lastlog']]);
}
函数时间($time){
$time=time()-$time;//获取从该时刻开始的时间
$tokens=数组(
31536000=>“年”,
2592000=>“月”,
604800=>“一周”,
86400=>“天”,
3600=>“小时”,
60=>“分钟”,
1=>“秒”
);
$humanTime=“”;
foreach($unit=>$text形式的令牌){
如果($时间<$单位)
继续;
$numberOfUnits=楼层($time/$unit);
$humanTime.=$numberOfUnits.'.$text.($numberOfUnits>1)?'s':'';
}
return$humanTime;//应该像这样返回字符串
}
编辑:函数未返回任何字符串,因此未显示
问题:为什么在if语句中使用函数???我想你知道答案。通常很小的间隔显示为“刚刚”而不是“2秒前”。通常很小的间隔显示为“刚刚”而不是“2秒前”。