Ir para conteúdo

POWERED BY:

Arquivado

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

Daltox

Comparação Meia Noite (horas)

Recommended Posts

Olá Galera ! ! ! :clap:

 

Estou precisando de uma ajuda para montar um script aonde o usuário só possa acessar o sistemas das 19:00h até as 07:00.

No caso a empresa trabalha com 2 turnos de 12 horas.

No turno de Manha/Tarde, é fácil, agora o turno Noite/Madrugada que é complicado, pois quando dá 00:00, o PHP entende que é nova contagem de horas, o que na verdade é, mas para este projeto o calculo dá um nó nos neurônios :skull:

Galera, um forte abraço, e muito obrigado pela atenção! :hug:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara tenta o seguinte. Quando o usuario faz o login tenta usar esta função.

 

$select = mysql_query("SELECT * FROM usuarios WHERE hora BETWEEN ’19:00′ AND  ’07:00′);

 

O campo hora definido como time, o próprio mysql vai verificar isso para você, caso não esteja entre (BETWEEN) os dois horarios o usuario não consegue acessar o sistema.

 

Testa e depois da um toque para a gente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lukas;

Obrigado pela sua ajuda, mas consegui entender a sua idéia, como vou comparar com a hora gravada no banco de dados com a hora do micro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

compara com esta variavel

 

$hora = date("H:m:s");

 

infelizmente não saberia lhe informar como saber a hora do micro, nesta variavel que falei você vai pegar a hora do servidor.

 

Talvez pelo javascript você consiga.

 

espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito q o script abaixo poderá ajuda-lo:

 

No turno na madrugada você pode utilizar a condição 'or' para a comparação:

$hora_inicio = strtotime("19:00:00") / (60 * 60);
$hora_fim = strtotime("07:00:00") / (60 * 60);
$hora_atual = time() / (60 * 60);

if($hora_atual >= $hora_inicio || $hora_atual <= $hora_fim){
   echo "Acesso permitido";
} else{
   echo "Acesso negado";
}

 

Boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comparando a Hora em que o usuario Logar com a hora permitida no seu cadastro você conseguirá essa parametrização.

 

usuariox pode acessar o sistema da 08:00 as 17:00

 

Quando o mesmo acessar, você irá checar a toda atualização do mesmo se o periodo de acesso dele é valido comparando a hora (função date('H:i:s')) com o horario permitido gravado no banco de dados para este usuario.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito q o script abaixo poderá ajuda-lo:

 

No turno na madrugada você pode utilizar a condição 'or' para a comparação:

$hora_inicio = strtotime("19:00:00") / (60 * 60);
$hora_fim = strtotime("07:00:00") / (60 * 60);
$hora_atual = time() / (60 * 60);

if($hora_atual >= $hora_inicio || $hora_atual <= $hora_fim){
   echo "Acesso permitido";
} else{
   echo "Acesso negado";
}

 

Boa sorte!

 

Olá romabeckman,

 

Já tentei esta solução, mas não funciona, pois a $hora_atual sempre será maior que a hora fim, pois às 23:59:59, as variáveis mudam de sinal.

 

Comparando a Hora em que o usuario Logar com a hora permitida no seu cadastro você conseguirá essa parametrização.

 

usuariox pode acessar o sistema da 08:00 as 17:00

 

Quando o mesmo acessar, você irá checar a toda atualização do mesmo se o periodo de acesso dele é valido comparando a hora (função date('H:i:s')) com o horario permitido gravado no banco de dados para este usuario.

 

Olá Flavio Ferreira,

 

Fazer a comparação no turno MATUTINO/VESPERTINO já conseguimos, o problema é o turno NOTURNO/MADRUGADA, ou seja, exemplo, começo o expediente às 19:00 e saio às 07:00, fora deste horário, não posso acessar o sistema, este é o problema.

 

Obrigado pela atenção. :joia: :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade a solução é simples, veja bem. Você irá compara dois turnos, basta uma condição if e else. Veja o exemplo:

 

$hora_inicio = strtotime("07:00:00") / (60 * 60);
$hora_fim = strtotime("19:00:00") / (60 * 60);
$hora_atual = time() / (60 * 60);

if($hora_atual => $hora_inicio && $hora_atual <= $hora_fim){
   $turno = 1;
} else{
   $turno = 2;
}

 

Depois é só verificar qual turno do funcionário e liberar ou não o acesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que a solução do Shwa melhor, pois usa a timestamp. Use a função UNIX_TIMESTAMP() da SQL para retornar a hora do login armazenada no banco de dados e a função date(<formato>) do PHP para pegar a hora atual e a hora do fim do turno. A string timestamp é o número de segundos desde 1/1/1970. Em 12 horas há 43200 segundos (3600 segundos por hora). Daí é só comparar... Não precisa ficar se preocupando com a virada do dia!

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.