Daltox 0 Denunciar post Postado Abril 21, 2011 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
Luckas 0 Denunciar post Postado Abril 21, 2011 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
Daltox 0 Denunciar post Postado Abril 23, 2011 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
Luckas 0 Denunciar post Postado Abril 25, 2011 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
Prog 183 Denunciar post Postado Abril 25, 2011 Sem a data não será possível fazer este tipo de comparação. Compartilhar este post Link para o post Compartilhar em outros sites
romabeckman 0 Denunciar post Postado Abril 25, 2011 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
Flavio Ferreira 0 Denunciar post Postado Abril 25, 2011 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
Daltox 0 Denunciar post Postado Abril 28, 2011 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
Shwa 0 Denunciar post Postado Abril 28, 2011 Compare a data completa. 20110428000000 é maior que 20110427235959. Compartilhar este post Link para o post Compartilhar em outros sites
romabeckman 0 Denunciar post Postado Abril 28, 2011 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
mangakah 217 Denunciar post Postado Abril 28, 2011 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