Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guhfloripa

session bloquear por 5 min depois de 3 refresh

Recommended Posts

olá,

to tentando fazer um script bem simples com o mínmo de linha possivel, para bloquear por 5min depois do usuario fizer 3 refresh na pagina... e quando passar os 5min ele estar automaticamente desbloqueado.

 

tentei algo, mas nao consigo, alguma luz no final do tuneL?

 

if($_SESSION['time'] == '0') {
$_SESSION['time'] = time() + 60; //60 seconds
}
if($_SESSION['reload'] == 0 ) { $_SESSION['reload'] = 1; } else { $_SESSION['reload']++; };
if($_SESSION['reload'] > '3' && $_SESSION['time'] > time()){
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não costumo usar ELSE, por causa da complexidade ciclomática, mas isso deve resolver seu problema:

/** 
verificar se a sessão existe, caso não existir, 
cria ela e adiciona o valor zero e tempo inicial 
**/
if(!isset($_SESSION['count'])) {
    $_SESSION['count'] = 0;
    $_SESSION['time'] = (new \DateTime())->format('Y-m-d H:i:s');
}

/** 
adiciona +1 ao acesso, 
caso for acesso inicial, vai para 1
**/
$_SESSION['count']++;

/** 
valida se houve mais de 3 tentativas, ou seja, no quarto acesso, 
**/
if($_SESSION['count'] > 3 ) {
    
    /** cria o objeto da data de bloqueio e adiciona 5 minutos ao bloqueio**/
    $blockTime = \DateTime::createFromFormat('Y-m-d H:i:s' , $_SESSION['time']);
    $blockTime->add(new \DateInterval('PT5M'));

    /**
    verificará o tempo de bloqueio
    e caso o bloqueio + 5 minutos for maior que a hora atual, interromperá o script
    **/
    if($blockTime < (new \DateTime())) {
        echo 'bloqueado';
        die();
    }    
    
    /** caso o script não seja bloqueado, coloca o contador em 1, considerando o acesso atual como o primeiro **/
    $_SESSION['count'] = 1;

}

if($_SESSION['count'] <= 3) {
    $_SESSION['time'] = (new \DateTime())->format('Y-m-d H:i:s');
}

/**

    continuidade do script
    .....

**/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.