PHP - update - no cambia la contraseña

   
Vista:
Imágen de perfil de Tomás

update - no cambia la contraseña

Publicado por Tomás (81 intervenciones) el 13/11/2013 22:48:41
Hola, muy buenas.

Tengo un problema:

Tengo esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
    if(isset($_POST['nuevaclave'])){
        $lanewclavelink = mysqli_query($conexion, "SELECT * FROM sendes WHERE email = '".$_GET['email']."' AND codenr = '".$_GET['key']."'")or die(mysqli_error());
        $nuevaclave = utf8_decode(mysqli_real_escape_string($conexion, $_POST['password']));
        $nuevaclave2 = utf8_decode(mysqli_real_escape_string($conexion, $_POST['repassword']));
        $encrip = md5($nuevaclave);
        $preguntasegura = "Sends";
        if($_POST['password'] == '' or $_POST['repassword'] == '' or $_POST['preguntasegura'] == ''){
            echo "Lo sentimos pero no puede quedar ningún campo en blanco.";
        }
        else if($_POST['preguntasegura'] != $preguntasegura){
            echo "Lo sentimos pero has escrito mal la pregunta de seguridad. Escriba: Sends";
        }
        else{
            $duda = mysqli_fetch_assoc($lanewclavelink);
            $ya = mysqli_query($conexion, "UPDATE sendes SET password = '".$encrip."' WHERE email = '".$email."'")or die(mysqli_error());
            echo "Guardado correctamente. Ya dispones de tu nueva contraseña para acceder a Sends.";
        }
    }
 
    ?>

Y quiero que se le cambié la clave al usuario que contenga ese email.
Tengo ese code, no me da error pero no me se cambia la pssword.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

update - no cambia la contraseña

Publicado por xve (5512 intervenciones) el 14/11/2013 07:25:33
Hola Tomás, he estado revisando tu código y parece correcto...

Lo que se me ocurre, es que no este conectado con la base de datos...
Que devuelve la variable $ya?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Tomás

update - no cambia la contraseña

Publicado por Tomás (81 intervenciones) el 14/11/2013 15:36:56
Observe me di cuenta de:

Me da error aquí:

1
$ya = mysqli_query($conexion, "UPDATE sendes SET password = '".$nuevaclave."' WHERE email = '".$email."'")or die(mysqli_error());

1
Notice: Undefined variable: email in C:\myxampp\htdocs\9e05b4e4ac8darestor2ad4feb6823938e3ac4\index.php on line 52

Me dice que email no está definido.
¿Qué puedo hacer?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

update - no cambia la contraseña

Publicado por xve (5512 intervenciones) el 14/11/2013 15:59:41
De donde viene esta variable Tomás? en el código que nos muestras, no la defines...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Tomás

update - no cambia la contraseña

Publicado por Tomás (81 intervenciones) el 14/11/2013 16:02:55
Ya la solucione la declaré asín:

1
$email = $_GET['email'];

Pero ahora me gustaría hacer lo siguiente... quiero hacer un if... en el cual si el código no lo dispone ese email lo lanze al else .... y si lo tiene pues que entre normal mente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Tomás

update - no cambia la contraseña

Publicado por Tomás (81 intervenciones) el 14/11/2013 16:25:43
Estoy probando esto:

1
2
3
4
5
6
7
8
9
10
$selecg = mysqli_query($conexion, "SELECT codenr FROM sendes")or die(mysqli_error());
 
while($codey = mysqli_fetch_assoc($selecg)){
    if($codey['codenr'] != $_GET['key']){
        echo "Error";
    }
    else{
        echo "aqui todo el html lo que se tiene que mostrar";
    }
}

Pero no me vale, se me muestra los echo en la página.
¿Por qué?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Tomás

update - no cambia la contraseña

Publicado por Tomás (81 intervenciones) el 14/11/2013 18:14:33
Hola, muy buenas.

Ya he solucionado todo eso.

Ahora el problema es el siguiente:

Tengo esto:

1
?email=tomaselbrujo@hotmail.com&key=1693baeb16bda1dcf84f8fe28e11ee495

Y si quito:

1
&key=1693baeb16bda1dcf84f8fe28e11ee495

Se me queda en:

1
?email=tomaselbrujo@hotmail.com

Y me da el siguiente error si quito el &key:

1
Notice: Undefined index: key in C:\myxampp\htdocs\9e05b4e4ac8darestor2ad4feb6823938e3ac4\index.php on line 7

Y esta son las líneas:

1
2
3
4
5
6
$selecg = mysqli_query($conexion, "SELECT codenr FROM sendes")or die(mysqli_error());
$debugg = mysqli_fetch_assoc($selecg);
 
$de1 = mysqli_query($conexion, "SELECT * FROM sendes WHERE email = '".$_GET['email']."'")or die(mysqli_error());
 
$de2 = mysqli_query($conexion, "SELECT * FROM sendes WHERE codenr = '".$_GET['key']."'")or die(mysqli_error());

¿cuál es el error?

--------------------------------------------------------------------------------------------------------------

PD: Quiero que si falta el email o el key, quiero que redirija a la página inicial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

update - no cambia la contraseña

Publicado por Mari Carmen (145 intervenciones) el 14/11/2013 20:53:14
Espero que no te sienta mal lo que te voy a decir.
Tu problema principal es que no compruebas las variables de entrada. Es decir que no compruebas si están definidas o no, si los valores son los que tienen que ser, etc...

Te invito a que intentes desarrollar una clase que expande la clase mysqli y ahí hagas los querys como métodos. Así te ahorras muchas complicaciones en el código final.
A su vez usa las sentencias de bind_param y prepare y demás para escapar las variables después de haberlas comprobado.

Tu código es vulnerable a un SQL INYECTION. Si quieres probarlo solo has de entrar en:
http://tupagina.com/?email=';DROP%20TABLE%20sendes%20--
Directamente te quedas sin tabla "sendes"

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Tomás

update - no cambia la contraseña

Publicado por Tomás (81 intervenciones) el 14/11/2013 21:12:17
He probado lo de la vulnerabilidad y no me da ningún error ya que dispongo de tener todas las variables filtradas correctamentes para estos casos y los pruebos.

Pero voy a revisar las definiciones de las variables haber por que me da ese error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar