Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Leguim

#431
Buenas noches,
Quería hacer un sistema (ya conocido) donde se muestre con x icono o estado a un usuario que está conectado (sesión iniciada)

Yo haría así: crear un campo en la tabla usuarios que se llame campo de (tipo tyni int) de manera que solo guarde 0 y 1... el 0 desconectado y 1 conectado... cuando inicie sesión el usuario su campo conectado será = 1 y cuando cierre sesión (logout) será = 0

Me parece que esta logica se queda corta... que opinan???
#432
Me gusta más long polling ¿Me lo reconmedarías?
#433
PHP / [Pregunta]: mejorar las $_SESSION'S
7 Octubre 2019, 05:22 AM
Buenas noches,
siempre note que mis $_SESSION no funcionan como las veo en cualquier o generalmente en la demás aplicaciones web, estoy seguro que se deben configurar de alguna manera pero no se cual. Es decir, que una $_SESSION['id_user'] por ejemplo pasado x tiempo de inactividad se cierre esa sesión (sesión expirada), ahora en mi aplicación si una persona cierra su navegador su $_SESSION muere y se cierra, a veces pasa que reinicio mi pc con el xampp quedando prendido y al ratito que inicio otra vez xampp cargo la pagina y ya tengo la sesión iniciada y otras veces no (algo que no me gusta nada, mínimo que se decidan :xD)

Quería saber como corregir estas cosas...
#434
Buenas noches,
estaba buscando la forma de poder hacer que mi aplicación web funcione en tiempo real, básicamente un ejemplo sería un chat, o un sistema de notificaciones que no necesita que el usuario haga una petición sino que de forma automática se ejecute.

Con este dilema estoy hace un rato ya, y es que me encuentro entre dos métodos:

Uno me convence más que otro la verdad...

En primero esta push (no estoy seguro que este método se llame así realmente) y websockets

En push es un poco más sencillo y es eficiente por lo que veo, después están los websockets que bueno ya ahí cuando quiero aprender y busco información ya se empieza a hablar en un lenguaje más tecnico y no se les entiende nada...
Que también se necesita tener una consola continuamente abierta, que esto que aquello, que a la larga según lo veo vas a necesitar un servidor aparte para ejecutar esa consola cuando este en un hosting (aunque no estoy seguro si esto funcione así) ... Que necesitas meterle puertos, y no se cuanta película (No digo que sea un método malo, para nada, estuve investigando y parece ser una muy buena forma) aunque en temas de "instalación" por así decir se queda muy corto...

Este es el vídeo de la tecnología push
https://www.youtube.com/watch?v=b6Z75EnIZTQ&t

Seguramente ya la conozcan, o no, quería leer sus sugerencias sobre esto.
#435
Buenas noches,
no voy a pedir códigos y esas cosas por que de eso me ocupo yo pero si que me encantaría que me pudieran dar una mano con la parte por así decir "teórica" la lógica del sistema.

Se me había ocurrido hacer así:

El usuario tendrá que ingresar una dirección de correo electrónico (Naturalmente la de su cuenta que no puede ingresar porque se olvido su contraseña), luego de esto se le enviará un mail con el código de cambió de contraseña, este código lo que permite es que se pueda editar dicha contraseña...

El código esta compuesto por 20 caracteres numéricos random + 2 letras en mayúsculas random.

Entonces no se si esto es muy seguro, no quiero que tampoco una persona la cual no es dueña de dicha cuenta vaya cambiando de código en código hasta poder acertar para cambiar una contraseña de una cuenta que como ya dije no le pertenece.

¿Cuales son sus sugerencias o tienen alguna lógica mejorada para esto?
#436
PHP / [Pregunta]: 1 error y 1 duda (Mail PHP)
3 Octubre 2019, 21:50 PM
Buenos días,
tenía el siguiente error y la siguiente duda.

Lo primero la duda:
Agregue un botón que al dar click reenviara nuevamente el mail..
[click] -> (Reenviar email) -> AJAX -> fichero.php re envia mail.

La pregunta sería, ¿existe algun tipo de vulnerabilidad en esto? ¿debería hacer una especie de tiempo para que vuelva a reenviar el mensaje? "Espera 1 minuto para volver a reenviar el mensaje" ¿O da igual?

El error que tengo es:
Código (php) [Seleccionar]

:  mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in


De antemano imagino que es porque se intento enviar el mail desde localhost pero no estoy seguro. (Ya se que generalmente no se puede enviar mails desde localhost)

#437
Es que tampoco se que es el user agent jeje
#438
Buenas noches,
me preguntaba que es lo que vendría siendo un X-Mailer en una cabecera de un mail que intento enviar por PHP.

Ayer me pasaron la siguiente cabecera en un tema anterior que había publicado:

Código (php) [Seleccionar]

'From: noreply@email.com' . "\r\n" .
'Reply-To: micorreo@gmail.com' . "\r\n" .
'X-Mailer: ?'.
'MIME-Version: 1.0' . "\r\n".
#439
Cita de: #!drvy en  3 Octubre 2019, 02:36 AM
Ya, por eso te he dicho que deberias validar y no sanitizar en este caso. Si, puedes hacer una regex que busque solo esa coincidencia y quite el resto:

Código (javascript) [Seleccionar]
form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/.*([0-9]{20}[A-Z]{2}).*/g, '$1');

Y esto solo te cogeria lo que buscas.. pero es que lo cogerá de cualquier lado, aunque el string sea este:

sad123456789012345das67890AA1234567890123dasdasd45678
90AA12345678901234567890AA12345678901234567890AA123456789
01234567890AA12345678901234567890AA12345678901234567890AA
12345678901234567890AA12345678901234567890AA123456789sadsa
dsa01d45678901234567890dasdAA12345678901234567890AA1234567
890124567890AA12345678901234567890AA12345678901234567890AA
12345678901234567asdas890AA12345678901234567890AA1234567890
1234567890AA12345678901234567890AA12345678901234567890AA123
45678901234567890AA12345678901234567890AAASDASDASDSADSA123
45678901234567890AA12345678901234567890AA


y así te estás exponiendo a que generen un string gigante que casualmente podría contener un código válido y alá, a correr.


Intenta validar antes de sanitizar. Comprueba si el string que te están pasando cumple con el formato que pides, si no lo hace, mandales a fregar, pero no intentes hacerle el favor a un posible atacante.


Saludos

Si igual es más que nada para mejorar un poquito la "experiencia del usuario" ya que esto lo valido con otras técnicas en PHP no necesariamente con expresiones regulares, con poner maxlength = 22 en dicho input no hay problema (ya se que esto lo pueden editar en inspeccionar elemento) a lo que voy es que no me interesa tanto como quede esto en temas de seguridad...

No se si soy muy duro o no entiendo o que, pero tampoco el código este me sirvió.
Según lo que pude entender es que este código debería funcionar pero como dijiste arriba si me ponen cadenas muy largas habrá problemas (pero igual no hay problema para mi que esto pase)
Código (javascript) [Seleccionar]
form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/.*([0-9]{20}[A-Z]{2}).*/g, '$1');
#440
Cita de: #!drvy en  3 Octubre 2019, 02:07 AM
El otro post ya te pase una página donde podías hacer pruebas de regex y aprender a hacerlo pues dicha página te explica el regex que tienes. Vamos a explicar el tuyo.

Primero tienes esto:
Código (regex) [Seleccionar]
[^0-9]{20}

Esto es un set negativo donde buscas cualquier cosa que NO sea un número de 0-9 y que tenga una longitud de 20 caracteres.

Luego tienes esto:
Código (regex) [Seleccionar]
[^A-Z]{21,22}

Otro set negativo donde buscas cualquier cosa que NO sea A-Z y que tenga una longitud de entre 21 y 22 caracteres.


Entonces, lo que le estamos diciendo es, reemplazame, aquellos strings donde haya especificamente 20 caracteres que NO sean un número seguido de 21 o 22 caracteres que no sean mayúsculas... Supongo que ya puedes ver el fallo.


Aquí no tienes que buscar reemplazar (sanitizar), tienes que validar. Es decir, no buscas un replace, buscas que el valor sea especificamente el formato que le estas indicando (test). Por tanto, verifica que de principio (^) a fin ($), el texto contiene exactamente 20 caracteres numéricos y 2 letras mayúsculas. O lo que es lo mismo:


Código (javascript) [Seleccionar]
const tests = [
 '1234567890AB',
 '1234567890AB1234567890',
 '12345678901234567890AABB',
 '123456789012345678901A',
 '1234567890123456789AB2',
 '$$$$$$$$$$$$$$$$$$$$00',
 'dsakdsakldjaksljdklasa',
 'askjdasdjklasjdkasjd12',
 '12345678901234567890AB',
];

const regexCode = /[0-9]{20}[A-Z]{2}$/g;

tests.forEach(function(value) {

 if (!regexCode.test(value)) {
   console.log(value + ' no es un codigo valido');
 }

});


El único que no te saltara como no valido es el ultimo (12345678901234567890AB) puesto que cumple con las condiciones.

Saludos

La expresión regular funciona perfecto! pero no en el contexto que la quiero aplicar, ya que estoy intentando que sea lo opuesto digamos...

Código (javascript) [Seleccionar]

form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/[0-9]{20}[A-Z]{2}/g, '');


ya que si encuentra problemas va a borrar eso del input con .replace

intente estos:
Código (javascript) [Seleccionar]

form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/^[0-9]{20}[A-Z]{2}/g, '');


Código (javascript) [Seleccionar]

form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/[^0-9]{20}[^A-Z]{2}/g, '');


Pero ninguno me está funcionando, (está útil esa pagina que me habías pasado)

EDIT: no soy experto pero creo que a el segundo intento le falta un OR o || pero en expresión regular creo yo jeje, voy a revisar...
EDIT X2: mmm no no tuve suerte