elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 74
11  Programación / Desarrollo Web / Re: Error del reloj 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
  1. <?php
  2. function validateDate(int $dateUser): bool
  3. {
  4.    // Margen de error en segundos.
  5.    // La consulta ajax puede tardar varios segundos en ejecutarse. Asegurate de tener un margen.
  6.    $dateMargin = 120;
  7.  
  8.    // Si el valor absoluto de la diferencia entre Timestamp de usuario y servidor
  9.    // es superior al margen, no es una fecha valida y devolvemos false.
  10.    return (abs(time() - $dateUser) <= $dateMargin);
  11. }
  12.  
  13. if (!empty($_POST['localTime'])) {
  14.    // recogemos localTime y lo comparamos con respuesta en formato JSON
  15.    $status = validateDate((int) $_POST['localTime']);
  16.    echo json_encode(array('status' => $status));
  17.    exit;
  18. }


fecha.js
Código
  1. async function testDate() {
  2.    try {
  3.        // Creamos un formData para pasarselo a PHP
  4.        // Con parametro localTime que es = la fecha UTC acutal en Unix Timestamp.
  5.        const formData = new FormData();
  6.        formData.append('localTime', Math.floor(Date.now() / 1000));
  7.  
  8.        const request   = await fetch('fecha.php', {
  9.            method: 'POST',
  10.            body: formData
  11.        });
  12.        response = await request.json();
  13.  
  14.        // Si el status es falso, la fecha no es valida.
  15.        if (!response.status) {
  16.            alert('Fecha local no valida');
  17.            return false;
  18.        }
  19.  
  20.        alert('Fecha local valida');
  21.        return true;
  22.    } catch(err) {
  23.        // Si occure algun durante el proceso...
  24.        alert('No se ha podido sincronizar la fecha');
  25.        console.log(err);
  26.    }
  27. }
  28.  
  29. testDate();


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!
12  Programación / Desarrollo Web / Re: Error del reloj 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...
13  Programación / Desarrollo Web / Error del reloj 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
  1. date_default_timezone_set('America/Argentina/Buenos_Aires'); // server time
  2.  

Esta declaración es la más inútil que hay entonces...
14  Programación / Desarrollo Web / [Pregunta]: Google Recaptcha en: 25 Abril 2022, 03:46 am
Hola!

Tengo un buscador de usuarios, ¿es necesario usar google recaptcha en este formulario? Hago la pregunta porque en este caso no se va a estar creando un registro en la base de datos, no es como un formulario para registrar usuarios sino de busqueda.
15  Programación / Desarrollo Web / [Pregunta]: Pasar false, true y null (javascript) a PHP usando AJAX en: 10 Enero 2022, 18:31 pm
Básicamente tengo una variable de javascript que tendrá como valor true, false o null... la cual es enviada por ajax a un archivo php donde yo quiero que se recupere el valor true, false o null porque actualmente lo que me pasa es que me está convirtiendo el true, el false o el null en una cadena en el lado del servidor (php)

Me quedaría:

javascript (AJAX)
var x => true

PHP (Archivo ajax php)
$x => 'true'

¿Alguna idea? Podría hacerlo con una función que diga si es una cadena y es igual a true, false, o null se le reemplace la cadena por el valor... en vez de 'true' se ponga = true;
Pero estoy buscando algo mucho más dinámico, seguramente hay una función pensada para esto...









16  Programación / Desarrollo Web / [Pregunta]: ¿Meta descripción va en todos mis html? en: 1 Enero 2022, 19:51 pm
No estoy seguro si esta es la sección pero es "Desarrollo web" creo...
Quería saber si la meta description solamente tendría que ir en el archivo index o tiene que ir en todos mis html, sería lo mismo la meta keywords...
17  Programación / Desarrollo Web / [Pregunta]: Formulario login se auto completa en: 30 Diciembre 2021, 04:32 am
tengo dos inputs, email y contraseña... el punto es que apenas carga la página ya me deja estos inputs con datos y no quiero permitir eso.. hay algo como autocomplete="off"? pero para estos casos donde ya al cargar tiene los datos escritos ...
18  Programación / Desarrollo Web / [Pregunta]: Comportamiento de las $_SESSIONS -parte 2- en: 27 Diciembre 2021, 01:10 am
Hola,

en un tema de hace un par de meses había publicado https://foro.elhacker.net/php/pregunta_comportamiento_de_las_session-t511300.0.html;msg2246971#msg2246971 para que vayan entendiendo el contexto.

El punto es que al usar session_regenerate_id(); me sale "Session ID cannot be regenerated after headers have already been sent"

Lo estoy usando en el login:

Código
  1.  
  2.  

Buscando soluciones terminé más confundido que al principio...
19  Programación / Desarrollo Web / Re: [Pregunta]: Problema con las sesión en el hosting en: 26 Diciembre 2021, 02:19 am
Gracias, ahí funciona bien. Era que tenía que destruir la cookie para que se actualice con la nueva configuración.
20  Programación / Desarrollo Web / Re: [Pregunta]: Problema con las sesión en el hosting en: 25 Diciembre 2021, 22:05 pm
Lo hice así con el segundo método que me pasaste, y lo puse antes del session_start(); pero es como si no trabajara y no hiciera nada.

PD: Es un hosting compartido.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 74
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines