Foros del Web » Programando para Internet » PHP »

Confusion con IF y ELSEIF

Estas en el tema de Confusion con IF y ELSEIF en el foro de PHP en Foros del Web. Hola, tengo un codigo de login donde todo funciona bien, solo que cuando el usuario mete un password incorrecto (unico campo que utilizo) no lo ...
  #1 (permalink)  
Antiguo 02/11/2007, 14:12
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Confusion con IF y ELSEIF

Hola, tengo un codigo de login donde todo funciona bien, solo que cuando el usuario mete un password incorrecto (unico campo que utilizo) no lo redirecciona a la pagina que quiero sino que se queda en el codigo de gestion con pagina en blanco (ingresar.php)

Pongo codigo y explico:
Código PHP:
<?php 
include("connect.php"); 
function 
quitar($mensaje

$mensaje str_replace("<","&lt;",$mensaje); 
$mensaje str_replace(">","&gt;",$mensaje); 
$mensaje str_replace("\'","'",$mensaje); 
$mensaje str_replace('\"',"&quot;",$mensaje); 
$mensaje str_replace("\\\\","&#92",$mensaje); 
return 
$mensaje

if(
trim($HTTP_POST_VARS["password"]) != ""

$passN quitar($HTTP_POST_VARS["password"]); 
$result mysql_query("SELECT password FROM usuarios WHERE password='$passN'"); 
if(
$row mysql_fetch_array($result)) 

if(
$row["password"] == $passN

//90 dias dura la cookie 
setcookie("usPass",$passN,time()+7776000); 
header ("Location: index.php");

}
mysql_free_result($result); 

elseif (
$passN == "") {
header ("Location: no_pass.html"); 

mysql_close(); 
?>
Con el anterior codigo, si coloco el password correcto, perfecto, entro a la pagina index.php. Hasta alli todo bien. Si dejo la casilla de password en blanco, perfecto, me lleva a la pagina con un mensaje (no_pass.html). Todo bien.

El asunto es que si meto cualquier password incorrecto aunque utilice:
Código PHP:
<?
elseif ($passN == "false") { 
header ("Location: wrong_pass.html"); 
}
?>
Me muestra la pagina blanca de ingresar.php, es decir, no logro ingresar pero queda feo no redireccionar a la pagina del mensaje correspondiente (wrong_pass.html)

Lo que no logro definir es donde colocar el
Código PHP:
<?
elseif ($passN == "false") { 
header ("Location: wrong_pass.html"); 
}
?>
O si no es ELSEIF sino IF o que me toca colocar.

Gracias
  #2 (permalink)  
Antiguo 02/11/2007, 14:15
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Re: Confusion con IF y ELSEIF

Por que no lo haces con switch ?
  #3 (permalink)  
Antiguo 02/11/2007, 14:17
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Re: Confusion con IF y ELSEIF

Hola porke no pones
else{
if ($passN == "false") {
header ("Location: wrong_pass.html");
}


}
o prueba utilizar switch()
__________________
"Eres grande por que caminas entre gigantes"
  #4 (permalink)  
Antiguo 02/11/2007, 14:36
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Confusion con IF y ELSEIF

Gracias a ambos, voy a probar...
  #5 (permalink)  
Antiguo 02/11/2007, 15:27
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Confusion con IF y ELSEIF

Hola:

ferbux... no me funciona en ningun lugar donde lo coloque haciendo todas las combinaciones posibles.

Italico76 y ferbux... intente con swish tambien de todas las formas y nada.

No es que muestre errores, es que sigue mostrando una pagina blanca (ingresar.php) en vez de direccionar a el mensaje (wrong_pass.html)
  #6 (permalink)  
Antiguo 02/11/2007, 16:03
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Re: Confusion con IF y ELSEIF

puede ser por que el php se confunde es decir no sabe ke ejecutar ya ke el elseif viene precedido de varios if, prueba organizar tu codigo de forma que te quede

if(su password es valido){entra al sistema}
else{
if(su password nos es valido){lo manda al error}
}

tal vez tu codigo este bien lo que puede estar pasando es que se va por otro lado.

Ojala me haya dado a entender y tambien espero que te ayude.

salu2
__________________
"Eres grande por que caminas entre gigantes"
  #7 (permalink)  
Antiguo 03/11/2007, 00:31
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 1 mes
Puntos: 33
Re: Confusion con IF y ELSEIF

iarrieta:
Yo lo haria asi:
if($passN == "") {
header("Location: no_pass.html");
}
if($row["password"] == $passN) {
header("Location: index.php");
} else {
header("Location: wrong_pass.html");
}
RESUMEN: SI EL PASSWORD ES "" O NADA, LO MANDA
A NO_PASS.HTML SI EL PASSWORD ES CORRECTO LO MANDA
A LA INDEX.PHP Y SI ES INCORRECTO LO MANDA A WRONG_PASS.HTML
Saludos
Y espero te ayude
Franco
  #8 (permalink)  
Antiguo 03/11/2007, 00:50
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Confusion con IF y ELSEIF

Gracias franco190453. Probe tu concepto pero no me funciono. Sigue entrando bien pero ahora tanto vacio como incorrecto no direccionan a mensaje sino pagina blanca. Aqui la adaptacion del codigo con tu sugerencia...

Código PHP:
<?php 
include("connect.php"); 
function 
quitar($mensaje

$mensaje str_replace("<","&lt;",$mensaje); 
$mensaje str_replace(">","&gt;",$mensaje); 
$mensaje str_replace("\'","'",$mensaje); 
$mensaje str_replace('\"',"&quot;",$mensaje); 
$mensaje str_replace("\\\\","&#92",$mensaje); 
return 
$mensaje

if(
trim($HTTP_POST_VARS["password"]) != ""

$passN quitar($HTTP_POST_VARS["password"]); 
$result mysql_query("SELECT password FROM usuarios WHERE password='$passN'"); 
if(
$row mysql_fetch_array($result)) 
{
if(
$passN == "") {
header("Location: no_pass.html");

if(
$row["password"] == $passN

//90 dias dura la cookie 
setcookie("usPass",$passN,time()+7776000); 
header ("Location: index.php");
} else {
header("Location: wrong_pass.html");
}
}
mysql_free_result($result); 

mysql_close(); 
?>
  #9 (permalink)  
Antiguo 03/11/2007, 10:28
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 1 mes
Puntos: 33
Re: Confusion con IF y ELSEIF

Cita:
if(trim($HTTP_POST_VARS["password"]) != "")
{
$passN = quitar($HTTP_POST_VARS["password"]);
$result = mysql_query("SELECT password FROM usuarios WHERE password='$passN'");
if($row = mysql_fetch_array($result))
{
if($passN == "") {
header("Location: no_pass.html");
}
if($row["password"] == $passN)
{
//90 dias dura la cookie
setcookie("usPass",$passN,time()+7776000);
header ("Location: index.php");
} else {
header("Location: wrong_pass.html");
}
}
mysql_free_result($result);
}
mysql_close();
?>[/PHP]
Probemos asi:
if(trim($HTTP_POST_VARS["password"]) = "") {
header("Location: no_pass.html");
}
$passN = quitar($HTTP_POST_VARS["password"]);
$result = mysql_query("SELECT password FROM usuarios WHERE password='$passN'");
$row = mysql_fetch_array($result);
if($row["password"] == $passN) {
setcookie("usPass",$passN,time()+7776000);
header ("Location: index.php");
} else {
header("Location: wrong_pass.html");
}
mysql_free_result($result);
mysql_close();
?>

Prueba esto
Saludos
Franco
  #10 (permalink)  
Antiguo 03/11/2007, 11:34
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Confusion con IF y ELSEIF

Gracias...

Probe tal cual me lo diste y en cualquiera de los 3 casos (vacio, incorrecto o correcto) me arroja el siguiente error:

Parse error: syntax error, unexpected '=' in /home/bogota/public_html/admin/ingresar.php on line 12

La linea 12 es:
Código PHP:
<? if(trim($HTTP_POST_VARS["password"]) != ""?>
Esto es lo malo de dominar aun el PHP, me toca probar cambiando codigo de lugar y combinar sin muchas veces saber realmente que es lo que estoy haciendo. Me gustaria poder entender realmente que hace cada cosa y no tener que copiar y pegar codigo a ciegas... Algun dia aprendere del todo!!!

Que opinas del error? Detectas el problema? Gracias
  #11 (permalink)  
Antiguo 03/11/2007, 15:54
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 1 mes
Puntos: 33
Re: Confusion con IF y ELSEIF

iarrieta:
Lamentablemente no tengo tu codigo completo,
pero cuando php te muestra una linea especifica, el error se encuentra en la anterior.
sigue haciendo pruebas y yo tratare de investigar mas.
Saludos.
Franco
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 17:41.