USER ACCESS CONTROL

0

Friends I try to make a user access control, I used to have it in PHP5 and it worked fine, but I had a hard time trying to update it to PHP 7 , it has given me a lot of headaches and I would like to see if any of You with more experience can support me to find the error in my code, since it gives me a

  

error: mysqli_num_rows () expects parameter 1 to be mysqli_result, null   given in C: \ xampp \ htdocs \ system \ classes \ DB_mysql.php on line 62

I have read a lot on the subject but I still can not find the error, besides that in many forums they comment that a certain practice that I have in the code allows injection, then I just hit the code waiting for someone to support me since I walk a bit -Updated in code:

<?php   
/*Clase para la conexion a la base de datos*/
class DB_mysql{
    //variable de conexion
    var $BaseDatos;
    var $Servidor;
    var $Usuario;
    var $Clave;     
    //identificador de conexion y consulta
    var $Conexion_ID=0;
    var $Consulta_ID=0;     
    //numero de error y texto de error
    var $Errno=0;
    var $Error="";      
    //Constructor
    function DB_mysql($db="dbejemplo",$host="localhost",$user="entsis",$pass="entsis"){
        $this->BaseDatos=$db;
        $this->Servidor=$host;
        $this->Usuario=$user;
        $this->Clave=$pass;
    }       
    //Conexon a la base de datos
    function Conectar($db,$host,$user,$pass){
        if($db!="")     $this->BaseDatos=$db;
        if($host="")    $this->Servidor=$host;
        if($user!="")   $this->Usuario=$user;
        if($pass!="")   $this->Clave=$pass;         
        //Conectamos al servidor
        $this->Conexion_ID=mysqli_connect($this->Servidor,$this->Usuario,$this->Clave);
        if(!$this->Conexion_ID){
            $this->Error="Ha fallado la conexion";
            return 0;
        }           
        //Seleccionamos la base de datos
        if(!@mysqli_select_db($this->BaseDatos,$this->Conexion_ID)){
            $this->Error="Imposible abrir ".$this->BaseDatos;
            return 0;
        }           
        //Si hemos tenido exito al conectarnos devuelve el id de la conexion sino devuelve 0
        return $this->Conexion_ID;
    }       
    //Ejecuta una consulta
    function Consulta($sql=""){
        if($sql==""){
            $this->Error="No ha especificado una consulta";
            return 0;
        }

        //Ejecutamos la consulta
        $this->Consulta_ID=@mysqli_query($sql,$this->Conexion_ID);
        if(!$this->Consulta_ID){
            $this->Errno=mysqli_connect_errno();
            $this->Error=mysqli_connect_errno();
        }

        //Si hemos tenido exito en la consulta devolvemos el id de la conexion
        return $this->Conexion_ID;
    }

    //Devuelve el numero de registros de la consulta
    function NumRegistros(){            
        return mysqli_num_rows($this->Consulta_ID); 

    }

    //Devuelve el nombre de un campo de una consulta
    function NombreCampo($numcampo){
        return mysqli_fetch_field_direct($this->Consulta_ID,$numcampo);         
    }

    //Liberar la consulta

    function FreeConsulta(){
        mysqli_free_result($this->Consulta_ID);
    }

}
?>

HERE THE CLASS

<?php
class classLogin{   
    function LoginUser($user,$password){        
        $idusuario;
        $db=new DB_mysql();
        $db->Conectar(NAME_DB,SERVER_DB,USER_DB,PASSWORD_DB);
//      'idusuario, usuario, password, nombre
        $SQL="SELECT idusuario FROM usuarios WHERE usuario='".$user."' AND password='".$password."' AND borrado=0 LIMIT 1";
        $db->Consulta($SQL);
        $valida=$db->NumRegistros();        
            if($valida){
                $Dato=mysqli_fetch_array($db->Consulta_ID);
                $idusuario=$Dato['idusuario'];
                    session_cache_expire(500);
                    $_SESSION["estatus"]="autorizado";
                    $_SESSION["IDUser"] =$idusuario;
                    header("Location: index1.php");                 
            }else return "Su nombre y/o contrase&ntilde;a son incorrectos para el sistema. Verificar de nuevo.";
    }//fin LoginUser

    function LoginOut(){
        if(isset($_SESSION['estatus'])) {
            unset($_SESSION['estatus']);
            unset($_SESSION['IDUser']);
        if(isset($_COOKIE[session_name()])) 
            setcookie(session_name(), '', time() - 1000);
            session_destroy();
        }
    }   

    function ConfirmaLogin(){
            if(isset($_SESSION["estatus"])!="autorizado"){
                header("Location: login.php");                          
            }
    }

}
?>
    
asked by Oscar Irving Alpuche Hernández 24.05.2018 в 21:27
source

0 answers