Limitar acesso ao sistema

  • Como faço para que o usuário só tenha acesso ao sistema de 1 ou mais meses dependendo da quantidade de dias que eu determine através de um campo input?
  • Como faria isso?

Observação: linguagem PHP com Banco MySQL?.

Faça assim:

No cadastro de usuário que servirá como base para os logins dos seus usuários, na hora que o usuário digitar usuário e senha (para entrar no sistema, fazer login), você confere no seu código se a data cadastrada é maior ou igual a data atual do sistema, se sim se deixa o usuário entrar normalmente se não, envie uma mensagem na tela dizendo que o seu tempo expirou.

O que eu te expliquei logo acima é uma regra de negócio, como na sua pergunta não tem código acredito que queria saber a lógica do processo …

Certo, mais o problema é o seguinte amigo, ao salvar o usuário irei salvar com a data de hoje e dar a ele 30 dias de acesso ao sistema, ai eu teria que decrementar esses 30 dias abatendo na data atual e ao chegar em 0 ele não permitir acesso ao sistema entendeu ? só que não sei como faria isso no código, saberia como me ajudar com algum exemplo ?

1 curtida

Basicamente:

<?php

//data atual do sistema
$data_atual = date_create("2015-01-01");

//intervalo de acrescimento de dias em 
//uma data que no caso especifico é 30 dias
$day30 = new DateInterval('P30D');

echo 'Data Atual antes dos 30 dias: ';
echo $data_atual->format('d/m/Y');
echo PHP_EOL;
echo 'Data Atual com mais 30 dias: ';
$data_atual->add($day30);
echo $data_atual->format('d/m/Y');


DEMO

Esse simples código seria pegar a data atual e somar 30 dias, ou seja, a data atual poderia vir da sua base de dados e você acrescentar os 30 dias e agora faça uma comparação de datas assim:

<?php

$data0 = date_create("2015-01-01");
$data1 = date_create("2015-01-02");

if ($data >= $data1)
{
	echo "Não pode logar";
}
else 
{
	echo "pode logar";	
}

DEMO

Comparar é o mais simples, você pode criar uma função para resolver todo o seu problema:

<?php

function date_30dias($data)
{
	$data_do_banco = date_create($data);
	$data_atual    = date_create("2015-01-01");
	
	$data_do_banco->add(new DateInterval('P30D'));
	
	if ($data_do_banco >= $data_atual)
	{
		return true;
	}
	return false;
}
echo date_30dias("2014-12-01") ? "Pode logar" : "Não pode logar";
echo PHP_EOL;
echo date_30dias("2014-12-02") ? "Pode logar" : "Não pode logar";


DEMO

Leitura:

Obrigado amigo, seria isso mesmo! Irei por em meu projeto e qualquer coisa falo, mas ajudou muito! :slight_smile: