0

ユーザーテーブルに「オンライン」の列があり、90分ごとに更新され、最後にオンラインだった時間が次のように表示されます。

2012-11-22 19:15:18

ユーザーが過去 90 分以内にオンラインだった場合、ログインを停止するにはどうすればよいですか?

現在、サイト通貨の正当な金額の 10 倍を獲得することで、人々が私のシステムを悪用しています。

編集:

HTML ログインフォーム:

<form method="post" action="">
            <input class="l_form" onfocus="if(this.value == '<?=$lang['b_14']?>') { this.value = ''; }" onblur="if(this.value=='') { this.value = this.defaultValue }" value="<?=$lang['b_14']?>" name="login" type="text">
            <input class="l_form" onfocus="if(this.value == '<?=$lang['b_15']?>') { this.value = ''; }" onblur="if(this.value=='') { this.value = this.defaultValue }" value="<?=$lang['b_15']?>" name="pass" type="password">                                  
            <?=$errMsg?>
            <div class="buttons">
                <input class="gbut" name="connect" value="<?=$lang['b_13']?>" type="submit"><br /><br />
                <span style="float:right;display:inline"><a href="recover.php" style="font-size:12px"><?=$lang['b_16']?></a></span>
            </div>                                        
        </form>

Is online の機能があります。

/* User Session */
$is_online = (isset($_SESSION['EX_login']) ? true : false);
if(isset($_SESSION['EX_login'])){
$sql                = $db->Query("SELECT *,UNIX_TIMESTAMP(`online`) AS `online` FROM `users`     WHERE (`login`='".$_SESSION['EX_login']."' OR `email`='".$_SESSION['EX_login']."')");
$data               = $db->FetchArray($sql);
if($data['id'] == ''){
    session_destroy();
}elseif($data['online']+90 < time()){
    $db->Query("UPDATE `users` SET `online`=NOW() WHERE `id`='".$data['id']."'");
}
}
4

2 に答える 2

0

ユーザーが次のようなものにログインしようとしたときに、MYSQLでこれを行うことはできませんか

SELECT * FROM users WHERE online <= NOW() - INTERVAL 90 MINUTE;
于 2012-11-22T16:33:58.273 に答える
0

次のようなものを試すことができます:

$currentTime = time();
$limit = $currentTime - 60 * 90;
if ($data['online'] < $limit) {
    echo "You have to wait..";
  exit;
}
于 2012-11-22T16:32:16.250 に答える