【问题标题】:Changed default time zone messed up count downs更改默认时区搞砸倒计时
【发布时间】:2016-08-22 00:56:18
【问题描述】:

我将 php.ini 中的默认时区从欧洲/柏林更改为另一个时区,突然我的登录限制锁定倒计时搞混了,它以秒为单位显示剩余的 15 分钟,但它正在计数而不是计数下来,请帮我修一下。

节流代码:

<?php
$throttle = array(1 => 1, 10 => 2, 1000 => 'captcha');
$getfailedq = 'SELECT MAX(attempted) AS attempted FROM failed_logins';
$getfailed = $muc->prepare($getfailedq);
$getfailed->bindParam(1, $attempted);
$getfailed->execute();
if ($getfailed->rowCount() > 0) {
    $row = $getfailed->fetch(PDO::FETCH_ASSOC);
    $latest_attempt = (int) date('U', strtotime($row['attempted']));
    $getfailedq = 'SELECT Count(*) AS failed FROM failed_logins WHERE attempted > Date_sub(Now(), INTERVAL 15 minute)';
    $getfailed = $muc->prepare($getfailedq);
    $getfailed->bindParam(1, $attempted);
    $getfailed->execute();
    if ($getfailed->rowCount() > 0) {
        $row = $getfailed->fetch(PDO::FETCH_ASSOC);
        $failed_attempts = (int) $row['failed'];
        krsort($throttle);
        foreach ($throttle as $attempts => $delay) {
            if ($failed_attempts > $attempts) {
                if (is_numeric($delay)) {
                    $remaining_delay = time() - $latest_attempt + $delay;
                    echo 'You must wait ' . $remaining_delay . ' seconds before your next login attempt';
                } else {
                    echo "captcha";
                }
                break;
            }
        }        
    }
}
?>

【问题讨论】:

  • -1 表示“给我看代码”。请阅读How do I ask a good question? 并提供Minimal, Complete, and Verifiable example
  • 你可以只给一个建议而不是反对我是新来的,不是专家,你期望什么?
  • 这是投反对票的正当理由。如果您编辑您的问题以符合网站指南,我很乐意推翻我的投票。至于期望,请访问help center。参观,并在询问之前阅读有关该网站如何运作的更多信息。谢谢。
  • “一些看似随机的数字”到底是什么意思?请描述您希望看到的内容(以及原因)以及您实际看到的内容。
  • @JonSkeet,我现在将编辑代码。

标签: php timezone date-arithmetic arithmetic-expressions throttling


【解决方案1】:

也许您的数据库仍在欧洲/柏林。

尝试编辑你的 my.cnf,添加这个

default_time_zone=TIMEZONE

【讨论】:

  • 我没有名为 my.cnf 的文件,而且我的时区根本不在欧洲,我重新启动了 xampp 但没有区别
  • my.cnf 是mysql配置。你能检查一下你的数据库时区吗?:SELECT @@global.time_zone, @@session.time_zone; 你应该看到 SYSTEM