Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: bgnumis en 17 Diciembre 2017, 23:34 PM

Título: Bucle if no se tiene en cuenta
Publicado por: bgnumis en 17 Diciembre 2017, 23:34 PM
Hola,

A ver si me podéis ayudar. He hecho una pregunta hace poco pero no es la misma y por eso la abro en este nuevo post.

Sé que utilizo mysql y debería utilizar mysqli (estoy en ello).

La duda es la siguiente:

En el siguiente código quiero que me dirija a una página si if( $rs[0]="2") es 2 o me lleve a otra si es 1.

No hay manera que me lo haga, parece como que lo omite (no sé por qué)

Si me registro con un usuario que tenga id_TipoUsuario=1 el código tal como está no debería seguien en el if( $rs[0]="2") y sin embargo lo omite y sí lo logea.

Mi idea era poner al final del código lo mismo con if( $rs[0]="1")  y copiar pero redireccionando a administrador.php pero nada, no hay manera.

A ver si me podéis orientar en dónde está el error

Código (php) [Seleccionar]


<?php
    
include("conectar_bd.php");  
    
conectar_bd();

$usr $_POST['usuario'];
    
$pw $_POST['password'];
    
//Obtengo la version cifrada del password
    
$pw_enc md5($pw);
     
    
$sql1 "SELECT id_TipoUsuario FROM tbl_users
  WHERE tx_username = '"
.$usr."'";
            
    
$result1=mysql_query($sql1,$conexio); 
 
    
$uid "";
$rs=mysql_fetch_array($result1);

if( 
$rs[0]="2"){ 
     
    
$sql "SELECT id_usuario FROM tbl_users
            INNER JOIN ctg_tiposusuario
            ON tbl_users.id_TipoUsuario = ctg_tiposusuario.id_TipoUsuario
            WHERE tx_username = '"
.$usr."'
            AND tx_password = '"
.$pw_enc."' ";  
    
$result     =mysql_query($sql,$conexio); 
 
    
$uid "";
     
    
//Si existe al menos una fila
    
if( $fila=mysql_fetch_array($result) )
    {       
        
//Obtener el Id del usuario en la BD        
        
$uid $fila['id_usuario'];
        
//Iniciar una sesion de PHP
        
session_start();
        
//Crear una variable para indicar que se ha autenticado
        
$_SESSION['autenticado']    = 'SI';
        
//Crear una variable para guardar el ID del usuario para tenerlo siempre disponible
        
$_SESSION['uid']            = $uid;
        
//CODIGO DE SESION
         
        //Crear un formulario para redireccionar al usuario y enviar oculto su Id 
?>

        <form name="formulario" method="post" action="principalcero.php">
            <input type="hidden" name="idUsr" value='<?php echo $uid ?>' />
        </form>

<?php
    
}
    
 
    else {
      
?>

        <form name="formulario" method="post" action="index.php">
            <input type="hidden" name="msg_error" value="1">
        </form>
<?php
    
}
?>

                     
   
                     
<script type="text/javascript">
    //Redireccionar con el formulario creado
    document.formulario.submit();
</script>
     <?php
}

?>

Título: Re: Bucle if no se tiene en cuenta
Publicado por: engel lex en 17 Diciembre 2017, 23:50 PM
Código (php) [Seleccionar]
if ($rs[0]="2")

tatuate -> "=" es asignacion, "==" es comparación!

Título: Re: Bucle if no se tiene en cuenta
Publicado por: bgnumis en 18 Diciembre 2017, 00:00 AM
Mil gracias. ME ha encantado lo de tatuate. Graciassss
Título: Re: Bucle if no se tiene en cuenta
Publicado por: bgnumis en 18 Diciembre 2017, 14:42 PM
Hola,

He conseguido que me incorpore la validación por tipo de usuario, pero me falta añadir un else (en caso de que el usuario se equivoque en el user o en pass) que me redireccione a index.php

Lo incluyo en diferentes partes (entendría que debería aparecer dos veces por cada if $rs[0]=="2" o "1" pero no hay manera que me redirija al index.php

A ver si me podéis dar una orientación

Mi código es:

Código (php) [Seleccionar]



<?php
    
include("conectar_bd.php");  
    
conectar_bd();

$usr $_POST['usuario'];
    
$pw $_POST['password'];
    
//Obtengo la version cifrada del password
    
$pw_enc md5($pw);
     
    
$sql1 "SELECT id_TipoUsuario FROM tbl_users
  WHERE tx_username = '"
.$usr."'
   AND tx_password = '"
.$pw_enc."' ";  
  
 
            
    
$result1=mysql_query($sql1,$conexio); 
 
    
$uid "";
$rs=mysql_fetch_array($result1);

if( 
$rs[0]=="2"){ 
     
    
$sql "SELECT id_usuario FROM tbl_users
            INNER JOIN ctg_tiposusuario
            ON tbl_users.id_TipoUsuario = ctg_tiposusuario.id_TipoUsuario
            WHERE tx_username = '"
.$usr."'
            AND tx_password = '"
.$pw_enc."'

"
;  
    
$result     =mysql_query($sql,$conexio); 
 
    
$uid "";
     
    
//Si existe al menos una fila
    
if( $fila=mysql_fetch_array($result) ) {       
        
//Obtener el Id del usuario en la BD        
        
$uid $fila['id_usuario'];
        
//Iniciar una sesion de PHP
        
session_start();
        
//Crear una variable para indicar que se ha autenticado
        
$_SESSION['autenticado']    = 'SI';
        
//Crear una variable para guardar el ID del usuario para tenerlo siempre disponible
        
$_SESSION['uid']            = $uid;
        
//CODIGO DE SESION
         
        //Crear un formulario para redireccionar al usuario y enviar oculto su Id 
?>

        <form name="formulario" method="post" action="principalcero.php">
            <input type="hidden" name="idUsr" value='<?php echo $uid ?>' />
        </form>

<?php
    



    

}

    

elseif( 
$rs[0]=="1"){ 
     
    
$sql "SELECT id_usuario FROM tbl_users
            INNER JOIN ctg_tiposusuario
            ON tbl_users.id_TipoUsuario = ctg_tiposusuario.id_TipoUsuario
            WHERE tx_username = '"
.$usr."'
            AND tx_password = '"
.$pw_enc."'



"
;  
    
$result     =mysql_query($sql,$conexio); 
 
    
$uid "";
     
    
//Si existe al menos una fila
    
if( $fila=mysql_fetch_array($result) )
    {       
        
//Obtener el Id del usuario en la BD        
        
$uid $fila['id_usuario'];
        
//Iniciar una sesion de PHP
        
session_start();
        
//Crear una variable para indicar que se ha autenticado
        
$_SESSION['autenticado']    = 'SI';
        
//Crear una variable para guardar el ID del usuario para tenerlo siempre disponible
        
$_SESSION['uid']            = $uid;
        
//CODIGO DE SESION
         
        //Crear un formulario para redireccionar al usuario y enviar oculto su Id 
?>

        <form name="formulario" method="post" action="administrador.php">
            <input type="hidden" name="idUsr" value='<?php echo $uid ?>' />
        </form>


<?php
    



   else {
        
//En caso de que no exista una fila...
        //..Crear un formulario para redireccionar al usuario a la pagina de login 
        //enviandole un codigo de error
?>

        <form name="formulario" method="post" action="index.php">
            <input type="hidden" name="msg_error" value="1">
        </form>
<?php
    
}


}
?>

   
                     
<script type="text/javascript">
    //Redireccionar con el formulario creado
    document.formulario.submit();
</script>





Título: Re: Bucle if no se tiene en cuenta
Publicado por: bgnumis en 18 Diciembre 2017, 17:55 PM
He visto que a veces se utiliza este código en el else

Código (php) [Seleccionar]


<?php
else{


echo 
"<script>alert('Se ha equivocado en el pass o en el usuario');</script>"//saco una alerta de no autorizacion
echo "<script>window.location='index.php' ;</script>;" /// lo redirecciono a la pagina de login

}

?>




¿Esto dónde lo podría colocar para que me redireccionara si el pass o el user no coinciden?

Muchas Gracias a ver si me podéis ayudar