Я хочу создать ограничение после действия для разных идентификаторов, поэтому я решил сохранить время входа и идентификатор сообщения в переменную сеанса. Затем я могу получить недавнюю временную метку и запретить пользователю выполнять это действие с идентификатором в течение 5 минут, чтобы остановить спам запросов
$vars = (object) array("idpost" => $idpost,"time" => time());
$_SESSION['ids'][] = $vars;
А если количество массивов больше 5, то остановить выполнение скрипта. Но через 5 минут продолжить сценарий.
$neededObject = array_filter( //filtering the array for a specific idpost
$_SESSION['ids'],
function ($e) use ($idpost) {
return $e->idpost === $idpost;
}
);
if (count($neededObject) > 5){// user has used id it many times
$timestamps = array_filter(
$neededObject,
function ($e) use ($idpost) {
return $e->timestamp // do something here to check the recent timestamps from all others;
}
}
Я не могу найти способ сравнить последнюю отметку времени и проверить, прошло ли 5 минут. Как я могу получить самую последнюю временную метку и проверить, что прошло 5 минут? Я могу сделать это, если я получу самую последнюю метку времени из массива.
if (time() - $mostrecenttimestampfromarray < 5*60*60 ) // 5 mins have passed