我想设置一个禁止上诉时间,如果用户被禁止,我会在未来设置一个时间戳x小时或几天,并且只允许用户在存储的时间戳之后登录。
我使用php设置服务器时间,因此它遵循当地时间,只是为了确保人们不能将设备日期设置为晚些时间,然后是禁令上诉时间。
我有一列检查是否ban = 1
,如果是,我想检查另一个名为ban_appeal
的列,并将其与服务器的时间和日期进行比较。
//check if user is banned
if($row['ban'] == 1){
if(if($server_date_time < $row['ban_appeal'])){
$login_ok = false;
die('
<div class="error-msg">
<i class="fa fa-times-circle"></i>
This user has not activated their account yet.
</div>
');
}
}
//server time
date_default_timezone_set('Europe/Oslo');
$server_time = date('h:i a', time());
$server_date = strtotime(date("Y-m-d"));
我100%知道$ server_date_time没有设置,但那是因为我不知道如何设置它以匹配时间戳(2016-11-27 02:33:51
)
答案 0 :(得分:1)
使用内置的PHP DateTime对象来处理不同格式的时间:
//server time
date_default_timezone_set('Europe/Oslo');
$server_date_time = new \DateTime();
$server_time = $server_date_time->format("h:i a");
$server_date = $server_date_time->format("Y-m-d");
//check if user is banned
if($row['ban'] == 1){
// i'm expecting that ban_appeal date format is 2016-11-27 02:33:51
$ban_date_time = \DateTime::createFromFormat("Y-m-d H:i:s", $row['ban_appeal']);
if ($server_date_time < $ban_date_time) {
$login_ok = false;
die("User is banned until " . $ban_date_time->format("Y-m-d H:i:s"));
}
}