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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 74
71  Programación / PHP / Re: [Pregunta]: ¿Qué estoy haciendo mal con esta consulta PDO? en: 5 Mayo 2021, 01:36 am
No creo que te hayas equivocado, esa consulta de los LIMIT :x, :y no funciona a no ser que concatene LIMIT '.($x).', '.($y)

No sé si se podría arreglar esta vulnerabilidad de inyecciones para estas variables que quedarán concatenadas, con alguna función para "limpiar". Para este caso puedo decir si es numerico x e y pero ya cuando la variable es una cadena se complica.
72  Programación / PHP / Re: [Pregunta]: ¿Qué estoy haciendo mal con esta consulta PDO? en: 4 Mayo 2021, 20:21 pm
Entonces tampoco se puede parametrizar los limites en una consulta, no?

Código
  1. "... ORDER BY id_x DESC LIMIT :start, :quantity"
  2.  

donde start es 0, y quantity es 10.
73  Programación / PHP / [Pregunta]: ¿Qué estoy haciendo mal con esta consulta PDO? en: 4 Mayo 2021, 00:21 am
Estoy mejorando todas mis consultas, antes usaba este método:

Código anterior (siempre use esto y funciona correctamente), como "dato curioso" en esta consulta sino concateno '.($by).' no me devuelve datos, es decir que no puedo usar :by en la consulta. No entiendo por qué (si me pudieran ayudar con eso también)
Código
  1. $con = Connection(USERNAME, PASSWORD);
  2. $query = $con->prepare('SELECT id_album FROM albums WHERE '.($by).' = :by_value');
  3. $query->execute(array(':by_value' => $by_value));
  4. $results = $query->fetchAll();
  5.  

Pero viendo un poco parece ser que hacerlo de la siguiente manera es más eficiente y seguro:
Pero me dice "Uncaught Error: Call to a member function bindParam() on bool" busqué el error pero veo ninguna relación con lo que escribí, lo ví varias veces pero parece que todo está correcto.
Código
  1. $con = Connection(USERNAME, PASSWORD);
  2. $query = $con->prepare('SELECT id_album FROM albums WHERE :by = :by_value');
  3. $query = $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  4. $query->bindParam(':by', $by);
  5. $query->bindParam(':by_value', $by_value);
  6. $query->execute();
  7. $results = $query->fetchAll();
  8.  
74  Programación / Bases de Datos / [Pregunta]: ¿Cómo hacer esta consulta 2? en: 23 Abril 2021, 00:07 am
Hola,

bueno la anterior consulta ya la hace correctamente ahora tengo problemas con esta otra que es muy similar. Para este caso ya no va a eliminar las tentativas de un usuario si este llego a 6 sino que las va a eliminar si son 1 o 5 tentativas pero las eliminará si la fecha (unix) de creación tiene una antiguedad de 12 horas o más. (pero solo se evalua la más reciente)

Es decir, como son los unix no son mas que numeros enteros lo que hago para evaluar la mas reciente y ver si tiene esa antiguedad de 12 horas es tomar dentro de todos los registros/tentativas del usuario el unix mas grande.

Es decir:
Código
  1. $query = $con->prepare('DELETE FROM attempts WHERE id_user IN (SELECT A.id_user, MAX(A.unix_date) FROM attempts A INNER JOIN users U ON A.id_user = U.id_user WHERE (:unix_grace_delete_attempts >= MAX(A.unix_date)) AND U.login_banned = 0 GROUP BY A.id_user HAVING COUNT(*) >= 1 AND COUNT(*) <= 5');
  2. $query->execute(array(':unix_grace_delete_attempts' => $unix_grace_delete_attempts));
  3.  

Siempre uso BETWEEN en vez de hacer COUNT(*) >= 1 AND COUNT(*) <= 5 pero mientras mas simple de entender la consulta mejor para todos.

En relación a sobre qué es $unix_grace_delete_attempts lo que le estoy haciendo es restarle a el unix actual unas 12 horas.

Código
  1. $unix_now = time();
  2. $unix_grace_delete_attempts = strtotime('-12 hours', $unix_now);
  3.  
75  Programación / Bases de Datos / Re: [Pregunta]: ¿Cómo puedo hacer esta consulta? en: 22 Abril 2021, 05:24 am
Nop, sigue igual sin hacer nada

Si ya pongo alias e Inner JOIN ya no funciona pero si lo dejo tal cual si pero estoy en la nada porque necesito hacerlo así...


Solucionado:
Ya logré hacer que funcione,

Código
  1. "DELETE FROM attempts WHERE id_user IN (SELECT A.id_user FROM attempts A INNER JOIN users U ON A.id_user = U.id_user WHERE U.login_banned = 0 GROUP BY A.id_user HAVING COUNT(*) >= 6)"
  2.  
76  Programación / Bases de Datos / Re: [Pregunta]: ¿Cómo puedo hacer esta consulta? en: 22 Abril 2021, 02:30 am
Hola,

Me sigue sin funcionar, ya estuve revisando varias veces la consulta pero no encuentro fallos.
77  Programación / Bases de Datos / Re: [Pregunta]: ¿Cómo puedo hacer esta consulta? en: 22 Abril 2021, 00:26 am
Hola!

Así como está me funciona, pero para que funcione tal cual quiero necesito hacerlo así.. pero no pasa nada:

Código
  1. DELETE FROM attempts A INNER JOIN users U ON A.id_user = U.id_user WHERE A.id_user IN (SELECT A.id_user FROM attempts A INNER JOIN users U ON A.id_user = U.id_user GROUP BY A.id_user HAVING COUNT(*) >= 6) AND U.login_banned = 0
  2.  
78  Programación / Bases de Datos / [Pregunta]: ¿Cómo puedo hacer esta consulta? en: 21 Abril 2021, 19:58 pm
Hola,

tengo una tabla 'attempts' donde guardará todas las tentativas erróneas de login de los usuarios,  como máximo pueden llegar a tener 6 tentativas.

Ejemplo:
Código
  1. * ID_USER IP
  2. 1. 37  ::1
  3. 2. 37  ::1
  4. 3. 37  ::1
  5. 4. 37  ::1
  6. 5. 37  ::1
  7. 6. 37  ::1
  8. 7. 79  225.341.63
  9.  

Básicamente tenemos 6 tentativas del usuario 37 y una tentativa en la cuenta del usuario 79 (id_user de attempt ya está relacionado con el id_user de users)

Hecho eso ahora necesito que por medio de una consulta eliminar todas las tentativas a uno de estos usuarios si llega a tener 6.

Código
  1. "DELETE FROM attempts WHERE [Aquellos usuarios que tengan = 6 tentativas]"
  2.  
79  Programación / PHP / Re: [Pregunta]: Modificar la variable original en PHP en: 2 Abril 2021, 21:26 pm
Gracias!

EDIT: Estoy teniendo un problema cuando quiero mandar como parametro NULL, ya que si no es nulo entonces si va a reemplazar el valor de la variable, pero si es nulo se toma como que no va a reemplazar nada.

El error dice que no se puede "Only variables can be passed by reference" tiene sentido que solamente variables se puedan pasar por referencia y no un valor nulo, ¿existe alguna manera?

EDIT 2:

Hay una solución que sería ponerle a ese parámetro:
Código
  1. function MyFunction(&$x = null) // por defecto si no se pone nada el valor será nulo
  2. {
  3.      // [...]
  4. }
  5.  
  6. MyFunction(); // si no quiero editar nada, dejo esto así..
  7.  

Esto me va bien, hasta que tengo dos variables entre ese parametro:
Código
  1. function MyFunction($a, &$x = null, $b) // por defecto si no pone nada el valor será nulo
  2. {
  3.     // [...]
  4. }
  5.  
  6. MyFunction('A', , 'B'); // si no quiero editar nada, dejo esto así.. pero que meto en medio de eso porque así como está dará un error..
  7.  
80  Programación / PHP / [Pregunta]: Modificar la variable original en PHP en: 30 Marzo 2021, 18:44 pm
Hola,

tengo 2 archivos PHP donde en el primer archivo tengo definida una función:
Código
  1. function myFunction($variable)
  2. {
  3.      $variable = 3;
  4. }
  5.  



En mi segundo archivo PHP tengo definida $variable (no es un parámetro como antes), y una llamada a myFunction()
Código
  1. $variable = 7;
  2. myFunction($variable); // entonces le mando por parámetro la variable a la que le quiero modificar el valor
  3.  

Entiendo que con return en la función y $variable = myFunction($variable); asunto arreglado pero necesito hacerlo de esta forma (si es que se puede).

Capaz usando global $variable o algo así, se pueda hacer algo...
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 74
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines