Foros del Web » Programando para Internet » PHP »

pequeño error??

Estas en el tema de pequeño error?? en el foro de PHP en Foros del Web. Buenas noches, pues ya hacia un tiempo que no pasaba por aqui (el trabajo demanda mucho). . . Pero me surgio una duda con respecto ...
  #1 (permalink)  
Antiguo 13/04/2009, 20:00
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
pequeño error??

Buenas noches, pues ya hacia un tiempo que no pasaba por aqui (el trabajo demanda mucho). . .
Pero me surgio una duda con respecto a un script que estoy realizando, ya que al estoy realizando las pruebas depurar los errores que tengo en los scripts, checando uno de estos, observé que el script con el cual comparo los datos ingresados a un login con la BD pasa lo siguiente:
Si tanto el usuario y contraseña existen, deja pasar al usuario, si existe el usuario pero NO coincide la contraseña manda a un error y redirige a la pagina de inicio, pero si el usuario NO existe me manda a ninguna parte, no se a que se deba, ya que se supone que al hacer el query y con el pg_num_rows al no existir el usuario deberia mandar 0 independientemente de si coincida la contraseña o no, sin embargo no lo hace, dejo el código fuente para ver si me pueden ayudar y decir en donde se encuentra mi error.
Gracias por su ayuda.
Salu2!
Código PHP:
<?php
session_start
();
$_SESSION["existe"]='si';
If(isset(
$_POST["usuario"]) and isset($_POST["password"]))
{
    if (empty(
$_POST['usuario']) and empty($_POST['password']))
    {
    echo 
"
            <html>
                <head>
                    <link href='curso/nihongo.css' rel='stylesheet' type='text/css'>
                    <script type='text/javascript'> function redireccionar()
                            {
                                window.location='nihongo.php';
                            }  
                            setTimeout ('redireccionar()', 3500);
                        </script>
                </head>    
                    <body background='curso/menu/fondo.jpg' oncontextmenu='return false'>
                    <p class='titulo'>¡ERROR!, debe ingresar llenar todos los campos.<br>
                                Redireccionando.</p>
                    </body>
            </html>"
;
            exit;
    }
    else
    {
$usuario=$_POST["usuario"]; 
$pass=hash("sha512",$_POST["password"]);
$con=pg_connect("host=127.0.0.1 port=5432 user=japones password=j4p0n35 dbname=japones");
if (!
$con
    {
        echo 
"<html>
                <head>
                    <link href='curso/nihongo.css' rel='stylesheet' type='text/css'>
                </head>    
                    <body background='curso/menu/fondo.jpg' oncontextmenu='return false'>
                    <p class='titulo'>¡ERROR al conectarse a la base de datos.</p>
                    </body>
            </html>"
;
            exit;
    }
 else     
    {
    
$log="SELECT sistema FROM comparacion WHERE usuario='$usuario'";
    
$check=pg_query($log);
    
$show=pg_fetch_array($check);
    if (
$show['sistema']=='t')
    {
        
header ('Location: dentroer.php');
        exit;
    }
    elseif (
$show['sistema']=='f')
    {
    
$sql="SELECT c.usuario, c.nivel, i.nombres, i.nickname FROM comparacion c, id i WHERE c.usuario='$usuario' AND c.contrasena='$pass' AND c.usuario=i.usuario";
$query=pg_query($sql);

    If(
pg_num_rows($query)==1)
    {
        
$row=pg_fetch_array($query);
        
$_SESSION["usuario"]=$row[0];
        
$_SESSION["usuario"]=$row[1];
        
$_SESSION["usuario"]=$usuario;
        
$_SESSION["nivel"]=$row[1];
        
$_SESSION["nombres"]=$row[2];
        
$_SESSION["nickname"]=$row[3];
        
            
        if (
$_SESSION["nivel"]=='f')
        {
            
header ('Location: curso/nihongo_aragon.php?modulo=inicio');
            
$sist="UPDATE comparacion SET sistema='t' WHERE usuario='$usuario'";
            
$kuery=pg_query($sist);
            exit;
        }
        elseif (
$_SESSION["nivel"]=='t')
        {
            
header ('Location: curso/sensei_aragon.php?modulo=inicio');
            
$sist="UPDATE comparacion SET sistema='t' WHERE usuario='$usuario'";
            
$kuery=pg_query($sist);
            exit;
        }
    }    
        else
        {
            
header ('Location: logerror.php');
            exit;
        }
    }
    }
    }
}
?>
__________________
海賊王 に なろ!
  #2 (permalink)  
Antiguo 14/04/2009, 12:30
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: pequeño error??

Buenas tardes, pues ya resolvi este problema, gracias de todas formas por tomarse el tiempo de tratar de resolver este problemilla, les cuento como le hice por si alguien tiene un problema semejante.
segun mi codigo primero checaba un flag (si estaba ya dentro del sistema) como desde aqui no cheque si existia o no el usuario, asi que al seguir en el código cuando ya verificaba que no existia, me mandaba a una página en blanco, ya que no habia acciones para este 'problema', asi que desde que checo este 'flag' verifico si existe el usuario, si no existe ahora si redirecciona a la página de error, y si existe, sigue el codigo hasta la comparacion entre usuario y contraseña.
Código PHP:
<?php
session_start
();
$_SESSION["existe"]='si';
If(isset(
$_POST["usuario"]) and isset($_POST["password"]))
{
    if (empty(
$_POST["usuario"]) and empty($_POST["password"]))
    {
    echo 
"
            <html>
                <head>
                    <link href='curso/nihongo.css' rel='stylesheet' type='text/css'>
                    <script type='text/javascript'> function redireccionar()
                            {
                                window.location='nihongo.php';
                            }  
                            setTimeout ('redireccionar()', 3500);
                        </script>
                </head>    
                    <body background='curso/menu/fondo.jpg' oncontextmenu='return false'>
                    <p class='titulo'>¡ERROR!, debe ingresar llenar todos los campos.<br>
                                Redireccionando.</p>
                    </body>
            </html>"
;
            exit;
    }
    else
    {
$usuario=$_POST["usuario"]; 
$pass=hash("sha512",$_POST["password"]);
$con=pg_connect("host=127.0.0.1 port=5432 user=japones password=j4p0n35 dbname=japones");
if (!
$con
    {
        echo 
"<html>
                <head>
                    <link href='curso/nihongo.css' rel='stylesheet' type='text/css'>
                </head>    
                    <body background='curso/menu/fondo.jpg' oncontextmenu='return false'>
                    <p class='titulo'>¡ERROR al conectarse a la base de datos.</p>
                    </body>
            </html>"
;
            exit;
    }
 else     
    {
    
$log="SELECT usuario, sistema FROM comparacion WHERE usuario='$usuario'";
    
$check=pg_query($log);
    
$show=pg_fetch_array($check);
    if (
$show['sistema']=='t' && !empty ($show['usuario']))
    {
        
header ('Location: dentroer.php');
        exit;
    }
    elseif (
$show['sistema']=='f' && !empty($show['usuario']))
    {
    
$sql="SELECT c.usuario, c.nivel, i.nombres, i.nickname FROM comparacion c, id i WHERE c.usuario='$usuario' AND c.contrasena='$pass' AND c.usuario=i.usuario";
$query=pg_query($sql);

    If(
pg_num_rows($query)==1)
    {
        
$row=pg_fetch_array($query);
        
$_SESSION["usuario"]=$row[0];
        
$_SESSION["usuario"]=$row[1];
        
$_SESSION["usuario"]=$usuario;
        
$_SESSION["nivel"]=$row[1];
        
$_SESSION["nombres"]=$row[2];
        
$_SESSION["nickname"]=$row[3];
        
            
        if (
$_SESSION["nivel"]=='f')
        {
            
header ('Location: curso/nihongo_aragon.php?modulo=inicio');
            
$sist="UPDATE comparacion SET sistema='t' WHERE usuario='$usuario'";
            
$kuery=pg_query($sist);
            exit;
        }
        elseif (
$_SESSION["nivel"]=='t')
        {
            
header ('Location: curso/sensei_aragon.php?modulo=inicio');
            
$sist="UPDATE comparacion SET sistema='t' WHERE usuario='$usuario'";
            
$kuery=pg_query($sist);
            exit;
        }
    }    
        else
        {
            
header ('Location: logerror.php');
            exit;
        }
    }
    elseif (empty (
$show['usuario']))
    {
        
header ('Location: logerror.php');
        exit;
    }
    }
    }
}
?>
Gracias por de menos checar si pueden ayudar,.
Salu2!
__________________
海賊王 に なろ!
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 23:28.