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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Resuelto] [Pregunta]: Función "is_timestamp"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] [Pregunta]: Función "is_timestamp"  (Leído 3,293 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
[Resuelto] [Pregunta]: Función "is_timestamp"
« en: 20 Agosto 2019, 19:32 pm »

Buenos días!

Busque en internet sobre si existía una función para validar un timestamp cualquiera..

Código
  1. $timestamp = date('Y-m-d H:i:s');
  2.  

La idea seria validarlo y decir si es un timestamp o no.

Una de las funciones que encontré fue esta:

Código
  1. function is_timestamp($timestamp)
  2. {
  3.    return ((int)(string) $timestamp === $timestamp)
  4.    && ($timestamp <= PHP_INT_MAX)
  5.    && ($timestamp >= ~PHP_INT_MAX);
  6. }
  7.  

Pero no me funciona, vi otras funciones mucho más largas y complicadas y del año 2008 a 2013. Quizás hoy en día hay formas más eficientes de hacer esto y quería ver si alguien podía ayudarme.

Gracias!


« Última modificación: 24 Septiembre 2019, 12:03 pm por #!drvy » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Pregunta]: Función "is_timestamp"
« Respuesta #1 en: 20 Agosto 2019, 20:14 pm »

Esa función no regresa un timestamp. Timestamps son números, date regresa cadenas de caracteres, fechas.
Código
  1. strtotime($fecha)

Regresa un timestamp si es una fecha valida o falso si es una fecha que no pudo procesar.


En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: Función "is_timestamp"
« Respuesta #2 en: 21 Agosto 2019, 00:40 am »

Entonces debería validar el timestamp, esta bien la función esa es interesante y puede complementarse a lo siguiente. Validar si es un valor numérico "is_numeric" ? pero si me decis que date regresa cadena de caracteres como sería?
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Pregunta]: Función "is_timestamp"
« Respuesta #3 en: 21 Agosto 2019, 01:02 am »

Entonces debería validar el timestamp, esta bien la función esa es interesante y puede complementarse a lo siguiente. Validar si es un valor numérico "is_numeric" ? pero si me decis que date regresa cadena de caracteres como sería?

No entendí la pregunta. Para que quieres usar is_numeric si no trabajas con timestamps. Lo que has puesto ahí son fechas. Si estuvieras haciendo:

Código
  1. time();

Estarías trabajando con números, con timestamps de verdad.

Otra cosa que se me olvido mencionar, si tu quieres valida una fecha contra un formato en específico tienes que usar:

Código
  1. Date::createFromFormat('Y-m-d H:i:s', $fecha);

Edit: Ah, si quieres validar que $fecha es un string puedes usar:

Código
  1. is_string($fecha);

Pero creo que no es necesario, PHP probablemente regrese falso si no es un string o una conversión de un string valido.
« Última modificación: 21 Agosto 2019, 01:04 am por MinusFour » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: [Pregunta]: Función "is_timestamp"
« Respuesta #4 en: 21 Agosto 2019, 01:08 am »

Citar
esta bien la función esa es interesante y puede complementarse a lo siguiente. Validar si es un valor numérico "is_numeric" ?

No tiene ningún sentido validar si es numérico cuando ya estas comprobando que el valor de lo que le das, forzado a un Integer, debe estar en un rango determinado.

Citar
pero si me decis que date regresa cadena de caracteres como sería?

Date regresa la fecha en formato humano. Bueno, en verdad regresa la fecha según el formato que le pasas, en tu caso, le estas pasando un formato de tipo 0000-00-00 00:00:00.

Si quieres sacar un timestamp actual, usa time();


PD: Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

Meh xD

Saludos
En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: Función "is_timestamp"
« Respuesta #5 en: 21 Agosto 2019, 01:14 am »

No tiene ningún sentido validar si es numérico cuando ya estas comprobando que el valor de lo que le das, forzado a un Integer, debe estar en un rango determinado.

Date regresa la fecha en formato humano. Bueno, en verdad regresa la fecha según el formato que le pasas, en tu caso, le estas pasando un formato de tipo 0000-00-00 00:00:00.

Si quieres sacar un timestamp actual, usa time();


PD: Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

Meh xD

Saludos

La razón de esto es:

digamos que tengo un input que le pido al usuario enviar un timestamp o mejor dicho una fecha que es esta "2019-08-13 00:10:04" ahora el usuario si quiere me puede mandar un "afdasdf" y no quiero eso, o me puede mandar "85934-fasdfasdf" que tampoco quiero...

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
xD ami también me salio eso jaja

En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: [Pregunta]: Función "is_timestamp"
« Respuesta #6 en: 21 Agosto 2019, 01:54 am »

Vale, pero ahí no quieres validar un UNIX TIMESTAMP, quieres validar un TIMESTAMP. Hay diferencia. En esencia, la palabra "timestamp" signfica marca de tiempo o marca temporal, entonces, puede tener muchas definiciones como es el caso.

Lo más habitual en el mundo de la programación, es que cuando menciones timestamp, te refieras a un UNIX TIMESTAMP que son los segundos que han pasado desde el 1 de Enero de 1970. Sin embargo, cuando en dices TIMESTAMP en bases de datos, y más en MySQL y derivados, quieres decir un formato YYYY-MM-DD HH:MM:SS.

Entonces, aclarada la confusión, usa lo que te ha pasado el compañero @Minusfour:

Código
  1. function is_timestamp($timestamp, $format = 'Y-m-d H:i:s')
  2. {
  3.    $date = DateTime::createFromFormat($format, $timestamp);
  4.    return ($date && $date->format($format) === $timestamp);
  5. }
  6.  
  7. var_dump(is_timestamp('2019-08-20 23:54:59')); // true
  8. var_dump(is_timestamp('85934-fasdfasdf')); // false

Aunque yo personalmente le pondría otro nombre para evitar confusiones. xD

Saludos
« Última modificación: 21 Agosto 2019, 01:57 am por #!drvy » En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: Función "is_timestamp"
« Respuesta #7 en: 21 Agosto 2019, 02:39 am »

Te agradezco mucho jaja  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines