Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No me respeta la condición

Estas en el tema de No me respeta la condición en el foro de PHP en Foros del Web. Hola de nuevo Estoy re-haciendo la forma de restablecer contraseñas, y para ello uso un código aleatorio. Dicho código se envía por email como enlace ...
  #1 (permalink)  
Antiguo 24/03/2015, 17:59
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 8 meses
Puntos: 145
Busqueda No me respeta la condición

Hola de nuevo

Estoy re-haciendo la forma de restablecer contraseñas, y para ello uso un código aleatorio.
Dicho código se envía por email como enlace a el usuario que lo requiera y también lo guardo en mi base de datos.

Al hacer click, en esta página de pruebas, por PHP recojo ese código, y si es correcto, le establezco una contraseña que se encuentra en una variable.
Para determinar si es correcto, le "pregunto" a PHP cuál es el 'REQUEST_URI' + el código de activación.

El problema es que no me respeta la condición de "si el URI no es igual a /ruta/archivo.php? + el código de activación, muestra el error, pero si lo es, introduce la contraseña".

Os dejo el código...

Código PHP:
Ver original
  1. $codigo_activacion = $_GET["codigo"]; //Obtenemos la clave del email
  2.  
  3. $password="PRUEBA011";
  4.  
  5. if( $_SERVER['REQUEST_URI'] != "/BD/nueva_pass.php?codigo=".$codigo_activacion) {
  6. $query = "UPDATE usuarios SET password='$password' WHERE codigo_nueva_pass='$codigo_activacion' ";
  7. mysqli_query($connection, $query) or die(mysql_error());
  8. $mensaje = "Todo OK, nueva password asignada";
  9. }
  10. else {
  11. $mensaje = "Error, código inválido. ".mysql_error();
  12. }

Sin embargo, aunque el código sea correcto, no me lo da por válido.
Lo compruebo de esta manera:

Código HTML:
Ver original
  1. <p>$_SERVER['REQUEST_URI'] = <?php echo $_SERVER['REQUEST_URI'] ?></p>
  2. <p>$codigo_activacion = <?php echo $codigo_activacion ?></p>
  3. <p><?php echo $mensaje ?></p>

Ejemplo gráfico:



__________________
¿Te sirvió la respuesta? Deja un +1
  #2 (permalink)  
Antiguo 24/03/2015, 18:51
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: No me respeta la condición

Revisa tu condición
Código PHP:
Ver original
  1. if( $_SERVER['REQUEST_URI'] != "/BD/nueva_pass.php?codigo=".$codigo_activacion)
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 24/03/2015, 18:51
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 8 meses
Puntos: 145
Respuesta: No me respeta la condición

Solucionado.

Código PHP:
Ver original
  1. //Obtenemos la clave del email
  2. $codigo_activacion = $_GET["codigo"];
  3.  
  4. //Establecemos una contraseña de prueba
  5. $password="PRUEBA011";
  6.  
  7. //Conectamos a la BD y seleccionamos todos los códigos de activación
  8. $consulta = "SELECT * FROM usuarios WHERE codigo_nueva_pass='$codigo_activacion' ";
  9. $resultado = mysqli_query($connection, $consulta) or die(mysql_error());
  10. $datos = mysqli_fetch_array($resultado);
  11.  
  12. //Mostramos el código de activación válido
  13. $codigoDB = $datos['codigo_nueva_pass'];
  14.  
  15. //Si la ruta del archivo es igual a la ruta + el código, hacemos un UPDATE en la DB con la contraseña
  16. if( $_SERVER['REQUEST_URI'] == "/BD/nueva_pass.php?codigo=".$codigoDB) {
  17. $query = "UPDATE usuarios SET password='$password' WHERE codigo_nueva_pass='$codigoDB' ";
  18. mysqli_query($connection, $query) or die(mysql_error());
  19. $mensaje = "Todo OK, nueva password asignada";
  20. }
  21. //Si ruta del archivo NO es correcta, mostramos error
  22. else if ( $_SERVER['REQUEST_URI'] <> "/BD/nueva_pass.php?codigo=".$codigoDB || $_SERVER['REQUEST_URI'] == "/BD/nueva_pass.php?codigo=" || $_SERVER['REQUEST_URI'] == "/BD/nueva_pass.php?codigo"|| $_SERVER['REQUEST_URI'] == "/BD/nueva_pass.php") {
  23. $mensaje = "Error, código inválido. ".mysql_error();
  24. };



NOTA: Es de pruebas, hay que obtener la contraseña desde un campo de formulario, encriptar la contraseña, etc.
__________________
¿Te sirvió la respuesta? Deja un +1

Etiquetas: condición, mysql, sql, usuarios, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:40.