PHP - validacion de usuario en mysqli

 
Vista:

validacion de usuario en mysqli

Publicado por carlos (1 intervención) el 30/11/2021 05:43:23
Hola quisiera que me ayuden a resolver este error PHP Notice: Undefined offset: 0 in line 21 y line 25 (gracias de antemano por sus respuesta)
<?php
include_once("conexion.php");
include("constantes.php");
class Usuario
{
private $login;
private $contrasena;
function __construct($login,$contrasena)
{
$this->login=$login;
$this->contrasena=md5($contrasena);
}
function Buscar()
{ global $Datos;

$BaseDato=new BaseDeDato(SERVIDOR,USUARIO,CLAVE,BD);//declarar el objeto de la clase base de dato
$Consulta="SELECT * FROM tf_usuarios AS a WHERE (a.usuario='$this->login') AND
(a.clave='$this->contrasena')";//declarar la consulta
$Resultado=$BaseDato->Consultas($Consulta);//llamar a la funcion de la base de dato que realiza las consulta
$Datos=mysqli_fetch_all($Resultado);//Devuelve los datos en forma de arreglo
if($Datos[0]['estado']=='1') // (linea 21) si estado es 1 es usuario inactivo si es 0 es usuario activo
echo "<script>alert('Usuario no activado por Administrador!');
document.location.href='../login.php';</script>\n";

if($Datos[0]['usuario']) //(linea 25) verificar si arrojo algun resultado
{
//aqui confirmamos la validaci�n
//verifica si usuario es 1 es administrador y muestra todo el menu
$row=$Datos;
$id=trim($row[0]['id_usuario']);
$n=ucfirst($row[0]['nombres']);
$ap=ucfirst($row[0]['ape_paterno']);
$am=ucfirst($row[0]['ape_materno']);
$tipo_isu=$row[0]['tipo_usuario'];

$nombre = $n." ".$ap." ".$am;
$login=$this->login;
//uso sesiones
session_set_cookie_params( time() + 600);

$_SESSION["usuario"] = $login;
$_SESSION["nombre"] = $nombre;
$_SESSION["id_usuario"]= $id;
$_SESSION["tipo_usuario"]= $tipo_isu;


echo "<script>;
document.location.href='../menu.php';</script>\n";

}
else
{
echo "<script>alert('Usuario y/o Clave Incorrecto(s) ! ');
document.location.href='../login.php';</script>\n";

return 0;
}
}

function Existencia($Condicion)
{
$BaseDato=new BaseDeDato(SERVIDOR,USUARIO,CLAVE,BD);

if($Condicion=='login')
$Condicion="login="."'$this->login'";

else
$Condicion="contrasena="."'$this->contrasena'";

$Consulta="SELECT *FROM tf_usuarios WHERE ".$Condicion;

$Resultado=$BaseDato->Consultas($Consulta);//llamar a la funcion de la base de dato que realiza las consulta
$Datos=mysqli_fetch_all($Resultado);//Devuelve los datos en forma de arreglo

if($Datos[0]['login'])
return 1;
else
return 0;
}

}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Fabian
Val: 157
Ha disminuido su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

validacion de usuario en mysqli

Publicado por Fabian (60 intervenciones) el 01/12/2021 13:12:23
Hola. El mensaje que te tira de error se refiere a que no encuentra el indice que estas indicando dentro del array.
Cuando creas la variable global $Datos tendría que ser de esta manera:
global $Datos = array();

Aparte cuando vos consultas en $Datos[0]['estado']=='1', al ser un array no podes hacerlo con el nombre del campo "estado". Los indices deben ser numericos, por ejemplo: $Datos[0][0]=='1';

Si lo queres hacer de la manera que lo estas haciendo, tenes que convertir el array a JSON.

Yo lo haria asi:

$Datos = array();
$DatosJSON; //creo esta variable para almacenar el array $Datos en formato JSON.

$DatosJSON = json_encode($Datos); //convierto el array $Datos en JSON

Ahora sí pode consultar de la siguiente manera:

$DatosJSON[0]['estado']=='1'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar