Foros del Web » Programando para Internet » PHP »

PHP OO una mano con una clase!!

Estas en el tema de una mano con una clase!! en el foro de PHP en Foros del Web. he creado una sencilla clase para acceso usuarios, como veran son mis primeros paso. el problema es que nop entiendo porque no funciona, llega hasta ...
  #1 (permalink)  
Antiguo 06/10/2010, 13:08
 
Fecha de Ingreso: mayo-2010
Mensajes: 46
Antigüedad: 14 años, 6 meses
Puntos: 0
una mano con una clase!!

he creado una sencilla clase para acceso usuarios, como veran son mis primeros paso.
el problema es que nop entiendo porque no funciona, llega hasta el metodo constructor coge lo datos y luego de alli nada, pagina en blanco!!
la clase conexion funciona correctamente, el query a la base de datos no contiene errores.
este es el codigo:

<?php
include_once('class_conect.php');
if(!$_POST)
{
echo "acceso denegado";
header('location:../usr_access.php');
}else{
$nom = $_POST['nombre'];
$pass = $_POST['password'];
?>
<?php
class user
{
private $usr;
private $pass;
private $auth = false;

public function set_datos($val1,$val2)
{
$this->pass = $val1;
$this->usr = $val2;
}
public function get_datos()
{
$query = "select nombre_usuario, password_usuario from usuarios";
$rec = mysql_query($query,conectar::mx_conectar());
while($datos = mysql_fetch_assoc($rec))
{
$dato1 = $datos['nombre_usuario'];
$dato2 = $datos['password_usuario'];
if($this->usr === $dato1 && md5($this->pass) === $dato2)
{
$this->auth = true;
break;
}
}
if($auth)
{
$_SESSION['username'] = $usr;
$_SESSION['timeout'] = time();
echo "bienvenido! si su navegador no lo redirecciona puede seguir este <a href=\"panel.php\">enlace</a>";
header('location:panel.php');

}else{
echo "sus datos no son correctos vuelva a <a href=\"usr_access.php\">intentarlo</a> si su navegador no lo redirecciona";
header('location:../usr_access.php');
}
}
}
$datos_user = new user();
$datos_user->set_datos($nom,$pass);

}
?>

espero que me puedan dar una mano, estoy comenzando y cada dia me gusta más!!
un saludo
  #2 (permalink)  
Antiguo 06/10/2010, 17:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 9
Respuesta: una mano con una clase!!

Varias cosas:
1) Donde declaras get_datos() ?
2) De la forma que haces la llamada a la base de datos, si tenes una tabla con miles de usuarios te metes en un lio mayusculo, lo mejor seria utilizar la sentencia "where" where usuario = $usuario y a partir de alli si la llamada trae un resultado es porque el usuario existe.
3) el constructor que nombras al principio, no se ve por ningun lado.

4) Te recomiendo que leas bastante sobre POO.
  #3 (permalink)  
Antiguo 06/10/2010, 19:44
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: una mano con una clase!!

pues te doy unos cuantos concejillos que he ido dando creo que es mas sencillo y rapido si la consulta la haces directamente especificando a quien buscas en ves de traerte todos los datos y luego compararlos imagina que tienes 2000 usuarios cuanto tardarias??? creo que de alli al acomodar tu clase para hacerlo directamente con el usuario deberias ver si existe alguno autentificas sino mandas el mensaje que mandaste te ahorrarias codigo y no te generaria ese error que creo que es por el break que estas usando ahi espero te ayude lo que te coloco saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #4 (permalink)  
Antiguo 06/10/2010, 23:53
 
Fecha de Ingreso: mayo-2010
Mensajes: 46
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: una mano con una clase!!

muchas gracias, sin duda que me falta mas teoria y practica!! pero bueno por los errores se comienza.
es verdad me he olvidado de de get_datos, bueno hare varios cambios y lo comentare!!
un saludo

Etiquetas: clase, mano
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 22:33.