Fórum Clock do Servidor #185269

30/09/2003

0

Estou com um problema que ainda não cosegui resolver. tenho um pequeno aplicativo de controle de ponto, que usa o clock do micro pra registrar a hora, o que deixa o mesmo sujeito a fraude, pois o usuário pode alterar a hora do mesmo e forjar um horário indevido. preciso que este horário seja baseado no clock do servidor, Alguem poderia me ajudar a resolver este problema ?

Grato

Joselito Nascimento
www.jjnascimento@bol.com.br


Joselito Nascimento

Joselito Nascimento

Responder

Posts

30/09/2003

Mmtoor

Prezado amigo:
tive um problema similar em um sistema que desenvolvi e, pensando nume forma de descobrir isso, decidi criar um contador e gravar o resultado no BD.
Inseri um timer no form e criei uma tabela com a seguinte estrutura:
codigo = chave, data, hora, horaabre e contador.
Dessa forma fica mais fácil, pois cada incremento no contador se dá a cada segundo (1000 no timer). Assim sendo, posso, por uma query, varrer a tabela verificando alterações e/ou fazer o cálculo dos segundos para saber se houve algum tipo de alteração.
o campo horaabre marca a data e a hora no evento onshow do form.
Dai me perguntaram o seguinte: E se atrasarem o relógio antes de abrir o sistema:
Analisei o que havia criado e percebi que pelo cálculo de segundos no contador é possível verificar isso do seguinte modo: Cada vez que o sistema abre ele verifica o último número gravado no contador, pega a hor atual e incrementa o número de contadores necessários para preencher a tabela, como se o sistema não tivesse sido fechado.
Dai, pelo contador, dá pra saber a veracidade do clock no sistema.
Acho que deu pra explicar. Me desculpe se não soube explicar de forma mais clara.
MMTOOR2003


Responder

Gostei + 0

01/10/2003

Hegs

Se for no SQL Server vc poderia fazer assim:

select Convert(char(2),datepart(hh,getdate()))+´:´+Convert(char(2),datepart(mm,getdate()))+´:´+Convert(char(2),datepart(ss,getdate()))

Será retornado: 11:7:32


Responder

Gostei + 0

01/10/2003

Fava

Se for Firebird/Interbase

Em versões anteriores ao IB6:

select
cast(´today´ as date), /*zero in the time portion*/
cast(´yesterday´ as date), /*zero in the time portion*/
cast(´tomorrow´ as date), /*zero in the time portion*/
cast(´now´ as date) /*date plus time*/
from rdb$database


No IB6-dialect1:

select
cast(´today´ as date), /*zero in the time portion*/
cast(´yesterday´ as date), /*zero in the time portion*/
cast(´tomorrow´ as date), /*zero in the time portion*/
cast(´now´ as date), /*date plus time*/
current_timestamp /*date plus time*/
from rdb$database



No IB6-dialect3:

select
cast(´today´ as date), /*date-only field*/
current_date, /*date-only field*/
cast(´yesterday´ as date), /*date-only field*/
cast(´tomorrow´ as date), /*date-only field*/
cast(´now´ as timestamp), /*date plus time*/
current_timestamp, /*date plus time*/
current_time /*time-only field*/
from rdb$database


Responder

Gostei + 0

02/10/2003

Dedi

em Um controle de ponto eu fiz assim:

ao Iniciar o aplicativo:
 
 WinExec(NET TIME \\IP DO SERVIDOR /SET /YES, SW_HIDE);
 if FileExists(´C:\windows\system\Timedate.cpl´)then RenameFile(´C:\windows\system\Timedate.cpl´,´C:\windows\system\Timedate.pow´);


Isso dificulta a fraude;mas não impede,já que o funcionário poderá modificar via dos.

Obs: pegar hora do servidor quando for registrar o horário é uma ideia interessante,na pratica torna-se inviavel por tornar a aplicação muito lenta a não ser nos casos acima com uso do Ib......e o contador que merece uma atenção bem maior.

Dedi.


Responder

Gostei + 0

02/10/2003

Fava

Para não deixar sua aplicação lenta, pegue a hora no momento de fazer sua inserção/atualização no banco de dados.

insert into registroponto matricula, horario value :matricula, current_time

Se o usuário xunxar a hora do micro é problema dele pois o que está sendo registrado é a hora do servidor.

Isto jamais deixará sua aplicação mais lenta.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar