Estoy haciendo una sencilla clase para autenticacion de usuarios, en esta se revisa
* el usuario existe en la base de datos
* si existe se revisa que la cuanta este activa
* si la cuenta esta activa se revisa la pertinencia del password pasado por el usuario y el que esta en la BD.
Esta es la funcion que hace las revisiones, como ven existe u metodo de la misma clase que me da la conexion a la BD. todo esto esta dentro de una clase, no se si sea necesario postear toda la clase.
Código PHP:
function acceder(){
$user=$this->getUser();
$resultado;
//select de logeo, REVISAR QUE LA CUENTA HAYA SIDO ACTIVADA
$login="select N_PASS from usuario where N_USER='$user'";
$seleccion=mysql_query($login, $this->getConexion()) or die ("Problemas de acceso".mysql_error()) ;
if($aprob=mysql_fetch_array($seleccion)){// existen resultados de la consulta
//intento de imprimir datos para comprobar errores
$resultado=$aprob['P_ACTIV'];
echo $resultado;
echo $aprob['N_PASS'];
echo $aprob['N_USER'];
echo $aprob['P_ACTIV'];
echo $aprob['N_USER'];
echo $aprob[3];
// si la cuenta esta activada
if($aprob['P_ACTIV']==1){
if($aprob['N_PASS']==$this->getPass()){
//entra al sistema, redireccione
$_SESSION['usuario_nombre']=$this->getUser();
$_SESSION['perfil']=$aprob['N_PERFIL'];
?>
<SCRIPT LANGUAGE='javascript'>
alert('pass e inicio de sesion correcto');
location.href="obras.php";
</SCRIPT>
<?php
}
else{
// el usuario existe, la cuenta esta activada pero el password es incorrecto
header("Location:index.php?errorpass=si");
}
}
else{
// el usuario existe pero la cuenta no esta activada, redireccione
header("Location: index.php?erroractivacion=si");
}
}
else{
// la consulta no genero resultados para logeo, el usuario posiblemente no existe o la activacion tomo demasiado tiempo
header("Location: index.php?errorusuario=si");
//echo "El usuario no existe en nuestra BD";
}
}
Código PHP:
function getConexion(){
$this->conexion=new BDconnection();
$conex=$this->conexion->connect();
return $conex;
}
Despues de comprobar que el user se encuentra en la BD (por esto se que la conexion y la consulta es correcta), intento imprimir en pantalla los datos traidos de la BD por medio del Array asociado creado con mysql_fetch_array, sin embargo estos son nulos.
Como se pueden dar cuenta lo intento por medio de la llamada directa al arreglo asociado por medio del nombre de columna en la BD,tambien lo intento por medio de ID numerico del arreglo, lo intento asignando este valor a una variable y despues imprimiendola pero ningun metodo funciona.
Se me olvidaba el dato $aprob['N_PASS'] efectivamente si es reconocido y su salida por pantalla funciona no entiendo por que los demas no.
Gracias a este error ninguna comprobacion posterior puede ser hecha y el script no funciona para nada.
No tengo la menor idea de cual es el error.
PD: hay algo muy raro de lo que me di cuanta y no encuentro la razon, force a que entre la ejecucion hasta el ultimo if y alli imprimi en pantalla los campos que deseaba comporbar, ahora los vaores no son nulos son 0.
Mas confundido que antes estoy, si a alguien le ha pasado esto agradeceria cualquier observacion.