Foros del Web » Programando para Internet » PHP »

Siempre ejecuta la rama del ELSE

Estas en el tema de Siempre ejecuta la rama del ELSE en el foro de PHP en Foros del Web. Miren, tengo este codigo sencillo para que el administrador pueda entrar a una pagina donde carga noticias: Código PHP: <?php  function  conectar () { $base_de_datos  ...
  #1 (permalink)  
Antiguo 11/06/2009, 22:20
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 10 meses
Puntos: 4
Exclamación Siempre ejecuta la rama del ELSE

Miren, tengo este codigo sencillo para que el administrador pueda entrar a una pagina donde carga noticias:

Código PHP:
<?php 

function conectar()
{
$base_de_datos "base";
$db_usuario "user";
$db_password "pass";

if (!(
$link mysql_connect("localhost"$db_usuario$db_password)))
{
echo 
"Error conectando a la base de datos.";
exit();
}
if (!
mysql_select_db($base_de_datos$link))
{
echo 
"Error seleccionando la base de datos.";
exit();
}
return 
$link;
}

$db=conectar();
$usuario=$_POST['nick'];
$password=$_POST['password'];
if (
$usuario=='' || $password=='') return false;
 
$query "SELECT id,login,pass FROM usuarios WHERE usuario = '$usuario'";
  
      
$resultado mysql_query($query,$db);
  
      
$row mysql_fetch_array($resultado);
  
      
$password_from_db $row['pass'];
  
      if ( 
$row['pass'] == $password ) {
  
      
Header("Location:editor.html");
 
      } else echo 
"El password y el nombre de usuario no coinciden, intente de nuevo";
?><a href="index.php">Vuelva a la pagina principal</a><?
      
?>
Que es lo que falla?
  #2 (permalink)  
Antiguo 11/06/2009, 23:06
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: Siempre ejecuta la rama del ELSE

Por lo menos yo no veo error en tu codigo, todo parece logico

que tal si haces la consulta de esta forma

$verifica=mysql_query("SELECT * FROM usuarios WHERE usuario = '$usuario' and pass='$password'");

if(mysql_num_rows($verifica)>0{
header("location:editor.html");
}
  #3 (permalink)  
Antiguo 11/06/2009, 23:07
Avatar de titocba  
Fecha de Ingreso: agosto-2008
Ubicación: Cordoba
Mensajes: 256
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Siempre ejecuta la rama del ELSE

Es probable que las variables que intentas setear por post no hayan estado dentro del form que realizo el post.
No esta muy claro tu problema pero espero que te sea util la info
  #4 (permalink)  
Antiguo 11/06/2009, 23:10
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: Siempre ejecuta la rama del ELSE

Si, ademas intenta hacer un echo a las variables que recibes por el metodo POST para verificar que contengar algo.
  #5 (permalink)  
Antiguo 11/06/2009, 23:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Siempre ejecuta la rama del ELSE

Pueden ser varias cosas

Lo primero siempre haz un echo a las variables a ver si comparten la misma información tu viendolas a traves del navegador.

Segundo verifica que no haya dos cuentas con el mismo usuario puede ser que tengas dos y siempre te va a traer la primera que ve y tal vez la contraseña sea diferente a la que estas colocando en el post

Tercero no se que mas escribir solo mencione este punto porque dije que pueden ser varios puntos :S

Pero eso si verifica los dos primeros puntos a ver que te sale. Especialmente el primero te puede sacar de dudas. A todas las variables dale un echo a ver que te sale.

Me dejas saber
  #6 (permalink)  
Antiguo 13/06/2009, 17:11
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Siempre ejecuta la rama del ELSE

Muchas gracias por todas sus respuestas, le cuento que mi error estaba aca:

Código PHP:
$query "SELECT id,login,pass FROM usuarios WHERE usuario = '$usuario'"
Era que en la tabla, no existia un campo llamado USUARIO, si, solamente era eso, me confundi con el nombre de campo.
Ya se, les dejo mi direccion para que vengan a pegarme si quieren jajaja, disculpen por haberlos molestado en algo tan tonto.

Saludos a todos!
  #7 (permalink)  
Antiguo 13/06/2009, 19:02
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: Siempre ejecuta la rama del ELSE

mmm puede ser cierto, pero si lo que hay algo serio es la forma de tu programación, necesita una refactorización pero tremenda.

dime no es más visible y comprensible hacer esto??

Código :
Ver original
  1. //otras senetencias
  2.  
  3. $sql="SELECT c FROM t WHERE cu LIKE '$usuario" AND cp LIKE "$password";
  4. $query=mysql_query($sql,$conn);
  5. if(mysql_num_rows($query)>0)
  6. {
  7. //existe usuario y redireccionar(ejm con header - utilizar exit después de este-, con javascript)
  8. }
  9. else
  10. {
  11. //no existe usuario
  12. }
suerte.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #8 (permalink)  
Antiguo 14/06/2009, 15:29
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Siempre ejecuta la rama del ELSE

Argy, no entiendo tu consulta a la base de datos, lo demas esta todo bien, pero me explicarias en que consiste?, es decir, hasta el like llegue, jaja
Te aclaro que soy totalmente novato, asi que cualquier metodo mas eficaz o enseñanza es muy bien recibida, mientras mas me corrijan mejor!

Muchas gracias por tu ayuda, saludos!
  #9 (permalink)  
Antiguo 14/06/2009, 19:43
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: Siempre ejecuta la rama del ELSE

mmm lamento decirte que no puedo explicarte de una manera más fácil jajajaja.

simplemente estoy construyendo la consulta con el usuario y el password ingresado por el usuario, luego la ejecuto, seguidamente hago la pregunta de si para la consulta hecha existen registros.

suerte.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
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 20:36.