PHP - Consulta preparada para actualizar contraseña

 
Vista:
sin imagen de perfil

Consulta preparada para actualizar contraseña

Publicado por Kevin (24 intervenciones) el 11/09/2016 19:50:41
Buenos dias Jovenes,

Alguien me podria ayudar indicándome que estoy haciendo mal en mi consulta preparada? he intentado ya diferentes cosas pero no logro actualizar el campo contraseña en la base de datos, les dejo por aca el codigo y ustedes me diran.
1
2
3
4
$sql= "UPDATE tbl_users SET userPass= ? WHERE userEmail= ?";
			$resultado = mysqli_prepare($con, $sql);
			mysqli_stmt_bind_param($resultado, "ss", $newpass1,$emailcheck);
			mysqli_stmt_execute($resultado);

Gracias!
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 kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Consulta preparada para actualizar contraseña

Publicado por kip (877 intervenciones) el 11/09/2016 22:43:19
Hola, donde defines las variables del email y la contraseña?

Saludos
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
sin imagen de perfil

Consulta preparada para actualizar contraseña

Publicado por Kevin (24 intervenciones) el 11/09/2016 22:51:55
Hola, te muestro todo el codigo, es curioso porque cuando deseo ver el password si puedo, pero cuando lo deseo actualizar no funciona :S

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
//Verificando sesión
session_start();
require_once 'config.php';
$user_home = new USER();
if(!$user_home->is_logged_in())
{
  $user_home->redirect('index.php');
}
$stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid");
$stmt->execute(array(":uid"=>$_SESSION['userSession']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
//Iniciando codigo de verificacion
include "conexion.php";
$currentpass = md5($_POST['CurrentPass']);
$newpass1 = md5($_POST['NewPass1']);
$newpass2 = md5($_POST['NewPass2']);
 
$emailcheck = $row['userEmail'];
 
//Get current pass
$sql= "SELECT userPass FROM tbl_users WHERE userEmail= ?";
$resultado = mysqli_prepare($con, $sql);
$ok= mysqli_stmt_bind_param($resultado, "s", $emailcheck);
$ok= mysqli_stmt_execute($resultado);
if ($ok == true){
	$Ok= mysqli_stmt_bind_result($resultado, $passSaved);
		mysqli_stmt_fetch($resultado);
}
 
if ($passSaved == $currentpass) {
	if ($newpass1 == $newpass2) {
 
			$sql= "UPDATE tbl_users SET userPass= ? WHERE userEmail= ?";
			$resultado = mysqli_prepare($con, $sql);
			mysqli_stmt_bind_param($resultado, "ss", $newpass1,$emailcheck);
			mysqli_stmt_execute($resultado);
 
		header("Location:http://www.miweb/Clientes/ActualizarPass.php?PassChanged");
	}else{
		header("Location:http://www.miweb/Clientes/ActualizarPass.php?NoMatch");
	}
}else{
		header("Location:http://www.miweb/Clientes/ActualizarPass.php?CurrentNoMatch");
	}
 
 
?>
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 kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Consulta preparada para actualizar contraseña

Publicado por kip (877 intervenciones) el 12/09/2016 05:39:56
Te lanza algun error? Puedo ver que usas las mismas variables, intenta cambiar el nombre de aquellas que estan en el bloque donde ejecutas el UPDATE de la nueva contraseña.
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
sin imagen de perfil

Consulta preparada para actualizar contraseña

Publicado por Kevin (24 intervenciones) el 15/09/2016 01:47:53
De hecho hice un echo para asegurarme que las variables si tenian valores, pero aun sigue sin funcionar, incluso al finalizar la primer consulta preparada agregue mysqli_stmt_close(); porque pense que talvez no cerrarlo me genera el error, pero no entiendo que sucede

Intente tambien cambiar el nombre de las variables como me aconsejaste :S pero no entiendo porque no funciona.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
//Verificando sesión
session_start();
require_once 'class.user.php';
$user_home = new USER();
if(!$user_home->is_logged_in())
{
  $user_home->redirect('index.php');
}
$stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid");
$stmt->execute(array(":uid"=>$_SESSION['userSession']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
//Iniciando codigo de verificacion
include "conexion.php";
$currentpass = md5($_POST['CurrentPass']);
$newpass1 = md5($_POST['NewPass1']);
$newpass2 = md5($_POST['NewPass2']);
 
$emailcheck = $row['userEmail'];
 
//Get current pass
$sql= "SELECT userPass FROM tbl_users WHERE userEmail= ?";
$resultado = mysqli_prepare($con, $sql);
$ok= mysqli_stmt_bind_param($resultado, "s", $emailcheck);
$ok= mysqli_stmt_execute($resultado);
if ($ok == true){
	$Ok= mysqli_stmt_bind_result($resultado, $passSaved);
		mysqli_stmt_fetch($resultado);
		mysqli_stmt_close();
}
if ($passSaved == $currentpass) {
	if ($newpass1 == $newpass2) {
			$NewPassForDB = md5($_POST['NewPass2']);
			$EmailForDB = $row['userEmail'];
 
			$sql= "UPDATE tbl_users SET userPass=? WHERE userEmail=?";
			$resultado = mysqli_prepare($con, $sql);
			mysqli_stmt_bind_param($resultado, "ss", $NewPassForDB, $EmailForDB);
			mysqli_stmt_execute($resultado);
			echo $NewPassForDB . " " . $EmailForDB;
		//header("Location:http://www.mipagina/Clientes/ActualizarPass.php?PassChanged");
	}else{
		header("Location:http://www.mipagina/Clientes/ActualizarPass.php?NoMatch");
	}
}else{
		header("Location:http://www.mipagina/Clientes/ActualizarPass.php?CurrentNoMatch");
	}
 
 
?>


Lo curioso es que no se muestra ningun error, solo cuando agrego un IF en mysqli_stmt_execute($resultado); me muestra False.
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