只需设置用户上次活动
$waiting = new letUserWait();
$waiting->setConnection()->setActivityTime();并检查他是否再次被允许
$allowed = new letUserWait();
$allowed->setConnection()->isUserAllowed();如果你愿意,你可以在没有碳的情况下做到这一点,但我建议你添加它,它更方便。如果用户在最近2分钟内没有活动,则$allowed将为true。
namespace waitingTime;
use Carbon;
use PDO;
class letUserWait {
protected $waitingTime;
protected $dbconnection;
public $UserAllowed;
public function setConnection() {
try {
$this->dbconnection = new PDO("mysql:host=".DB_HOST.";dbname=".DATABASE, DB_USERNAME, DB_PASSWORD);
} catch (PDOException $e) {
die($e->getMessage());
}
return $this;
}
public function setActivityTime() {
$stmt = $this->dbconnection->prepare('INSERT INTO user_waiting_time (user_id, timestart) VALUES (':user_id',NOW());
$stmt->execute([':user_id' => $_SESSION['user_id']]);
return true;
}
public function isUserAllowed() {
$stmt = $this->dbconnection->prepare("SELECT user_id FROM user_waiting_time WHERE timestart BETWEEN ".Carbon::now()->subMinutes(2)->toDateTimeString." AND ".Carbon::now());
$stmt->execute();
$rows = $sth->fetch(PDO::FETCH_NUM);
$this->UserAllowed = true;
if ($rows[0] > 0) {
$this->UserAllowed = false;
}
return $this->UserAllowed;
}
}