PHP - Problema al comparar dos variables

 
Vista:

Problema al comparar dos variables

Publicado por Fede (10 intervenciones) el 13/11/2018 00:42:36
Hola. Estoy teniendo un problema super básico y es la comparación de dos variables con el uso de IF.
Tengo un formulario para editar email y contraseña. Cada uno, tiene un checkbox para habilitar los input correspondientes (nuevo email, repetir email - nuevo password, repetir password). Resulta que al pasar el resutlado a PHP, puedo comprobar correctamente si el valor de los input de email coinciden y cuando da como resultado TRUE, ejecuta la consulta SQL.
Hasta ahí todo bien. El problema es que si el resultado es FALSE (es decir, los campos de email no coinciden) la consulta sql NO se ejecuta, pero tampoco redirecciona al header indicado:

1
header('Location: cpanel.php?opc=editarPerfil&go=eFailed');

De una forma u otra, siempre termina redireccionando a "&go=success" como si todo hubiera salido correctamente, aunque en la base de datos no se producen cambios.

Les dejo el código a ver si me pueden dar una mano:

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
51
52
53
54
55
<?php
require('funciones.php');
 
session_start();
conectarBD();
 
   if(isset($_SESSION['Usuario']) && time() < $_SESSION['Limite'] && $_SESSION['Permisos'] >= "1") {
 
	   $usuario = $_SESSION['Usuario'];
	   $email_check = $_POST['editar_email'];
	   $password_check = $_POST['editar_password'];
 
	      if($email_check == "on") {
 
	        $email_1 = $_POST['email_1'];
			$email_2 = $_POST['email_2'];
 
			if($email_1 == $email_2) {
 
				$query_email = mysqli_query($conexion, 'UPDATE usuarios SET email = "'.$email_1.'" WHERE usuario = "'.$usuario.'"') or die ('Error: '.mysqli_error($conexion));
 
			} else {
 
				header('Location: cpanel.php?opc=editarPerfil&go=eFailed');
 
			}
		  }
 
		  if($password_check == "on") {
 
			  $password_1 = $_POST['password_1'];
			  $password_2 = $_POST['password_2'];
 
			  if($password_1 == $password_2) {
 
				  $pswd_final = password_hash($password_1, PASSWORD_DEFAULT);
 
				  $query_password = mysqli_query($conexion, 'UPDATE usuarios SET password = "'.$pswd_final.'" WHERE usuario = "'.$usuario.'"') or die ('Error: '.mysqli_error());
 
			  } else {
 
				  header('Location: cpanel.php?opc=editarPerfil&go=pFailed');
 
			  }
 
		  }
 
		header('Location: cpanel.php?opc=editarPerfil&go=success');
 
   } else {
 
	   header('Location: index.php');
 
   }
?>

PD: Se que no estoy verificando lo que ingresa y es vulnerable a posibles inyecciones SQL, pero se trata de un sistema interno que vamos a utilizar entre 3 o 4 personas. En breves, lo corregiré con PDO.

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
sin imagen de perfil
Val: 602
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema al comparar dos variables

Publicado por Miguel (218 intervenciones) el 14/11/2018 02:06:15
Hola,

Después de cada ejecución de la función "header" tienes que usar"exit()" para terminar la ejecución del script, porque si no seguirá ejecutando el demás código y puede reemplazar el header enviado (si no se ha comenzado a enviar contenido).
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