如果服务器时间较少,则数据库行时间戳



我想设置一个禁令上诉时间,如果禁止用户,我将将来设置时间戳x小时或几天,并且只允许用户在存储的时间戳后登录。<<<<<<<<<<<<<<<<<</p>

我使用PHP设置服务器时间,因此它遵循本地时间,只是为了确保人们无法将其设备日期设置为以后的日期,然后禁令上诉时间。

我有1列检查是否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

使用内置的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"));
    }
}

最新更新