Foros del Web » Programando para Internet » PHP »

Problemas con if() anidados

Estas en el tema de Problemas con if() anidados en el foro de PHP en Foros del Web. Tengo el siguiente código que corresponde a la validación de un nombre de usuario y una contraseña. Todo funciona a la perfección, menos al final. ...
  #1 (permalink)  
Antiguo 10/03/2004, 13:43
 
Fecha de Ingreso: enero-2004
Mensajes: 3
Antigüedad: 20 años, 3 meses
Puntos: 0
Problemas con if() anidados

Tengo el siguiente código que corresponde a la validación de un nombre de usuario y una contraseña.

Todo funciona a la perfección, menos al final. Lo que no funciona es cuando el nombre de usuario no existe. No me muestra nada. O sea, envio en form con un nombre de usuario incorrecto y me aparece una página en blanco. Ahí les va el código.

<?

$conexion = mysql_connect($bdd_servidor, $bdd_usuario, $bdd_contrasenia); // Establece conexión con el servidor de BDD

// Comprueba que no se haya dejado ningún casillero en blanco
if (($_POST["nombre_usuario"] == "") || ($_POST["contrasenia"] == "")) {
$msg_error = "<p class=\"chico\"><font color=\"#FF0000\">Error:</font> No se puede dejar ningún casillero en blanco.</p>\n";

$mostrar_html = 1;
}

// Si se han llenado todos los casilleros
else {
// Comprueba si existe el nombre de usuario ingresado
$consulta = mysql_db_query($bdd_base, "SELECT id, nombre FROM ".$bdd_prefijo."usuarios WHERE nombre='".$_POST["nombre_usuario"]."'");
while ($campo = mysql_fetch_array($consulta)) {
// Si el usuario existe
if ($campo["id"]) {
// Comprueba que la contraseña sea correcta
$consulta2 = mysql_db_query($bdd_base, "SELECT contrasenia FROM ".$bdd_prefijo."usuarios WHERE nombre='".$campo["nombre"]."'");
while ($campo2 = mysql_fetch_array($consulta2)) {
// Si la contraseña es correcta
if ($_POST["contrasenia"] == $campo2["contrasenia"]) {
$_SESSION["nombre_usuario"] = $campo["nombre"];

mysql_db_query($bdd_base, "UPDATE ".$bdd_prefijo."usuarios SET activo='1' WHERE id='".$campo["id"]."'"); // Le indicamos a la BDD que el usuario está activo

// Averigua el nombre del equipo dirijido por este usuario
$consulta3 = mysql_db_query($bdd_base, "SELECT nombre FROM ".$bdd_prefijo."equipos WHERE id_dt='".$campo["id"]."'");
while ($campo3 = mysql_fetch_array($consulta3)) {
$_SESSION["nombre_equipo"] = $campo3["nombre"];
}
mysql_free_result($consulta3);

// Redirecciona hacia la página principal de Mi Cuenta
header("Location: index.php");
}

// Si la contraseña es incorrecta
else {
$msg_error = "<p class=\"chico\"><font color=\"#FF0000\">Error:</font> La contraseña ingresada no corresponde al usuario <b>".$campo["nombre"]."</b>.</p>\n";

$mostrar_html = 1;
}
}
mysql_free_result($consulta2);
}

// Si el nombre de usuario no existe
else {
$msg_error = "<p class=\"chico\"><font color=\"#FF0000\">Error:</font> El nombre de usuario ingresado no corresponde a ninguna cuenta registrada.</b>.</p>\n";

$mostrar_html = 1;
}
}
mysql_free_result($consulta);
}

mysql_close($conexion); // Cierra la conexión con el servidor de BDD

?>
  #2 (permalink)  
Antiguo 10/03/2004, 14:33
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
// Si el nombre de usuario no existe
else {
$msg_error = "<p class=\"chico\"><font color=\"#FF0000\">Error:</font> El nombre de usuario ingresado no corresponde a ninguna cuenta registrada.</b>.</p>\n";
echo $msg_error;
$mostrar_html = 1;
}

sin un echo no se ve el mensaje. Espero que eso sea.
  #3 (permalink)  
Antiguo 10/03/2004, 16:27
 
Fecha de Ingreso: enero-2004
Mensajes: 3
Antigüedad: 20 años, 3 meses
Puntos: 0
No, no es eso. NO tiene nada que ver. A lo que voy es que nunca llegaba a ese else. igualmente ya lo soluciones ye ncontre el error. Muchisimas gracas
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 02:43.