Título: Error del reloj Publicado por: Leguim en 10 Junio 2022, 17:04 pm Hola, estaba viendo que si uno tiene en la computadora una fecha incorrecta a la actual todos los time() que son ejecutados en PHP me va a devolver la fecha de mi computadora y no la que realmente es. Lo que no sabía.
Esto me traería algunos problemas pero también veo que los navegadores muestran una alerta al usuario donde se le dice que no puede acceder porque la fecha de su equipo es incorrecta (NET::ERR_CERT_DATE_INVALID). La pregunta es: ¿No hay alguna solución en la que yo como programador pueda validar si esa fecha es la correcta o no? ¿Es seguro confiar en sólo en esa alerta de los navegadores? EDIT: Es raro porque entonces Código Esta declaración es la más inútil que hay entonces... Título: Re: Error del reloj Publicado por: Danielㅤ en 10 Junio 2022, 17:31 pm Hola, tal como comentas PHP va a tomar y devolver la fecha y hora de tu PC aunque esta sea incorrecta.
Los navegadores te dan ese aviso de error de certificado porque no coincide la fecha del certificado con la de tú PC. La mejor forma de lograr lo que deseas, es decir que PHP te devuelva la fecha y hora actual/correcta, es que utilices alguna página web en la que haciendo una petición GET te devuelva por ejemplo la fecha y hora en formato json, por supuesto que el sitio web te va a devolver posiblemente un horario distinto al tuyo debido a las distintas horas de los países y el sitio web toma la zona horaria del servidor en donde está alojado, y en ese caso, tendrías que ajustar la hora a la correcta de tu país. Saludos Título: Re: Error del reloj Publicado por: Leguim en 10 Junio 2022, 18:25 pm Hola, tal como comentas PHP va a tomar y devolver la fecha y hora de tu PC aunque esta sea incorrecta. Los navegadores te dan ese aviso de error de certificado porque no coincide la fecha del certificado con la de tú PC. La mejor forma de lograr lo que deseas, es decir que PHP te devuelva la fecha y hora actual/correcta, es que utilices alguna página web en la que haciendo una petición GET te devuelva por ejemplo la fecha y hora en formato json, por supuesto que el sitio web te va a devolver posiblemente un horario distinto al tuyo debido a las distintas horas de los países y el sitio web toma la zona horaria del servidor en donde está alojado, y en ese caso, tendrías que ajustar la hora a la correcta de tu país. Saludos Me recomendarían alguna API o algo, estoy perdido... Título: Re: Error del reloj Publicado por: MCKSys Argentina en 10 Junio 2022, 19:55 pm Hola!
Revisa éste código: https://stackoverflow.com/questions/16592142/retrieve-time-from-ntp-server-via-php (https://stackoverflow.com/questions/16592142/retrieve-time-from-ntp-server-via-php) Saludos! Título: Re: Error del reloj Publicado por: #!drvy en 11 Junio 2022, 19:19 pm Citar Hola, estaba viendo que si uno tiene en la computadora una fecha incorrecta a la actual todos los time() que son ejecutados en PHP me va a devolver la fecha de mi computadora y no la que realmente es. Lo que no sabía. La fecha que devuelven las funciones de PHP no es la de la fecha de tu PC. Es la fecha del servidor que ejecuta PHP (que puede o no ser tu PC). Si lo alojas en un servidor en Taiwan que tenga configurado el timezone de Taiwan, mostrara fecha de Taiwan. El timezone en las funciones date no es inútil. De hecho, es muy útil porque puede trabajar con diferentes zonas en software que requiera de ello. Lo que tendría menos sentido es que coja la fecha del usuario/navegador, que puede decir cualquier cosa y toca creerlo. Lo recomendable siempre es que el servidor maneje fechas en UTC o GMT +0 y luego esas fechas se presenten al cliente adaptado a su zona horaria. Lo ideal es no fiarse de la hora/fecha del usuario. A no ser que tengas una necesidad muy específica, lo suyo es no fiarse ni recoger el dato siquiera. Si aun así necesitas hacer una verificación (y confias en lo que el usuario te diga), puedes recoger la fecha/hora UTC del usuario con javascript y luego comparar la UTC que tenga tu servidor: fecha.php Código
fecha.js Código
PD: Aquí asumimos que la fecha del servidor esta bien y esta sincronizada. Lo cual no tiene porque ser siempre la verdad. En tal caso, en vez de recoger la fecha del servidor, puedes recoge la de otro servidor NTP del que te fíes tal y como te ha mostrado el compañero @MCKsys Argentina. Saludos Título: Re: Error del reloj Publicado por: MinusFour en 11 Junio 2022, 21:24 pm Yo creo que todavía no aprendes a distinguir una fecha de un timestamp... time() no regresa una fecha, regresa un timestamp.
Un timestamp señala un momento único. Si dos personas que se encuentran del otro lado del planeta obtienen un timestamp al mismo tiempo, los dos obtendrán el mismo timestamp (asumiendo que los relojes estén sincronizados correctamente). Sin embargo, a la hora de convertir ese timestamp a una fecha local, ambos van a ver resultados diferentes. Entonces... no tienes un problema con time... lo tienes con tus funciones de fechas. No intentes cambiar la hora de tu servidor para acomodarte a la zona horaria de tus usuarios... Título: Re: Error del reloj Publicado por: Leguim en 11 Junio 2022, 22:56 pm La fecha que devuelven las funciones de PHP no es la de la fecha de tu PC. Es la fecha del servidor que ejecuta PHP (que puede o no ser tu PC). Si lo alojas en un servidor en Taiwan que tenga configurado el timezone de Taiwan, mostrara fecha de Taiwan. El timezone en las funciones date no es inútil. De hecho, es muy útil porque puede trabajar con diferentes zonas en software que requiera de ello. Lo que tendría menos sentido es que coja la fecha del usuario/navegador, que puede decir cualquier cosa y toca creerlo. Lo recomendable siempre es que el servidor maneje fechas en UTC o GMT +0 y luego esas fechas se presenten al cliente adaptado a su zona horaria. Lo ideal es no fiarse de la hora/fecha del usuario. A no ser que tengas una necesidad muy específica, lo suyo es no fiarse ni recoger el dato siquiera. Si aun así necesitas hacer una verificación (y confias en lo que el usuario te diga), puedes recoger la fecha/hora UTC del usuario con javascript y luego comparar la UTC que tenga tu servidor: fecha.php Código
fecha.js Código
PD: Aquí asumimos que la fecha del servidor esta bien y esta sincronizada. Lo cual no tiene porque ser siempre la verdad. En tal caso, en vez de recoger la fecha del servidor, puedes recoge la de otro servidor NTP del que te fíes tal y como te ha mostrado el compañero @MCKsys Argentina. Saludos La fecha que devuelven las funciones de PHP no es la de la fecha de tu PC. Es la fecha del servidor que ejecuta PHP Era eso, estaba en local :silbar: Gracias! |