Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Ayuda con clase para login

Estas en el tema de Ayuda con clase para login en el foro de Frameworks y PHP orientado a objetos en Foros del Web. tengo la siguiente clase que utilizo para conectarme a la BD Código: class Conexion { private $cn; private $rs; public function __construct($serverName = "localhost", $user ...
  #1 (permalink)  
Antiguo 18/05/2010, 10:42
 
Fecha de Ingreso: febrero-2009
Ubicación: mexico
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 1
Ayuda con clase para login

tengo la siguiente clase que utilizo para conectarme a la BD

Código:
class Conexion
{
	private $cn;
	private $rs;
		
	public function __construct($serverName = "localhost", $user = "root", $pass = "220785", $db = "login")
	{
		$this->cn = new mysqli($serverName, $user, $pass, $db);
	}
	
	public function dbExecute($query) {
		$this->rs = $this->cn->query($query);	
		return $this->rs;
	}
	
	public function getInsertedId()
	{
		return $this->cn->insert_id;
	}
	
	public function getAffectedRows()
	{
		return $this->cn->affected_rows;
	}
}
pero quieron implementarla para hacer una clase de login, hasta le momento llevo echo esto, pero me falta mucho por hacer

Código:
class Login
{
    private $usuario;
    private $pass;
    private $cn;

    public function __construct()
    {
        $this->cn = new Conexion();
    }

    private function clean($value)
    {
        if (get_magic_quotes_gpc()) {
            $value = stripslashes($value);
        }
        $value = mysql_real_escape_string(htmlspecialchars($value));
        return $value;
    }

    public function comprueba($usuario, $pass)
    {
        $usuario = $this->clean($usuario);
        $pass = $this->clean(md5($pass));

        $query = "SELECT username,password FROM login WHERE username='$usuario' AND password='$pass'";
        
        return $this->cn->dbExecute($query);
    }
}
Esta clase la utilizo asi

Código:
$consulta = new Login();
$rs = $consulta->comprueba("admin", "root");
$row=$rs->fetch_assoc();
echo $row["username"];
echo $row["password"];
me trae el resultado de la consulta, habia pensado poner ahi todo lo del login pero a mi parecer estaria incorrecto hacerlo asi, ya que yo solamente quiero que en la instancia de la clase ponga usuario, contraseña y el nivel del usuario para que comprube los datos y me cree la sesion correspondiente a cada usuario

  #2 (permalink)  
Antiguo 18/05/2010, 11:51
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Ayuda con clase para login

Cita:
Iniciado por negro1985 Ver Mensaje
me trae el resultado de la consulta, habia pensado poner ahi todo lo del login pero a mi parecer estaria incorrecto hacerlo asi, ya que yo solamente quiero que en la instancia de la clase ponga usuario, contraseña y el nivel del usuario para que comprube los datos y me cree la sesion correspondiente a cada usuario
Por que estaría incorrecto? Que te impide hacerlo como tu quieres, sinceramente no se exactamente lo que pides.

Saludos!
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #3 (permalink)  
Antiguo 18/05/2010, 12:07
 
Fecha de Ingreso: febrero-2009
Ubicación: mexico
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Ayuda con clase para login

Pos quiero tener una clase completa de login, pero con separando el codigo php del codigo html. Se supone que cuando haces un script de login con estructuras te queda asi, este es un ejemplo que yo tengo el cual quiero pasarlo a clases

Código:
include("funciones/sumar_dias_a_fecha.php");
include("funciones/fecha_mysql.php");
include("funciones/fecha_normal.php");
include("funciones/tratar_cadena.php");
include("funciones/conexion.php");
$link=Conectarse();

$usuario=$_POST["usuario"];
$password=$_POST["password"];
$tipo=$_POST["tipo"];
$usuario=sql_quote($usuario);
$password=sql_quote($password);

//$password=md5($password);

if($tipo=="alumno"){
$alumnos=mysql_query("SELECT id_alumno,password FROM alumnos WHERE id_alumno='$usuario' AND password='$password' AND status='Activo'",$link);
$a=mysql_fetch_array($alumnos);
$matricula_alumnos=($a["id_alumno"]);
$password_alumnos=($a["password"]);

if($usuario==$matricula_alumnos && $password==$password_alumnos && $usuario!=null && $password!=null){
session_start();
session_register("autentificado");
$autentificado = "ALUMNOS";
$_SESSION["alumnos"]=$usuario;
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
header("Location: alumnos/index.php");
}
else{
header("Location: ../index.php?error=3");
}
}
elseif($tipo=="docente"){
$docentes=mysql_query("SELECT id_docente,password FROM docentes WHERE id_docente='$usuario' AND password='$password'",$link);
$d=mysql_fetch_array($docentes);
$matricula_docentes=($d["id_docente"]);
$password_docentes=($d["password"]);

if($usuario==$matricula_docentes && $password==$password_docentes && $usuario!=null && $password!=null){
session_start();
session_register("autentificado");
$autentificado = "DOCENTES";
$_SESSION["docentes"]=$usuario;
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
header ("Location: docentes/index.php");
}
else{
header("Location: ../index.php?error=3");
}
}
elseif($tipo=="tutor"){
$tutores=mysql_query("SELECT id_tutor,password FROM tutores WHERE id_tutor='$usuario' AND password='$password'",$link);
$t=mysql_fetch_array($tutores);
$matricula_tutores=($t["id_tutor"]);
$password_tutores=($t["password"]);

if($usuario==$matricula_tutores && $password==$password_tutores && $usuario!=null && $password!=null){
session_start();
session_register("autentificado");
$autentificado = "TUTORES";
$_SESSION["tutores"]=$usuario;
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
header ("Location: tutores/index.php");
}
else{
header("Location: ../index.php?error=3");
}
}
elseif($tipo=="administrador"){
$administradores=mysql_query("SELECT id_administrador,password FROM administradores WHERE id_administrador='$usuario' AND password='$password'",$link);
$ad=mysql_fetch_array($administradores);
$matricula_administradores=($ad["id_administrador"]);
$password_administradores=($ad["password"]);

if($usuario==$matricula_administradores && $password==$password_administradores && $usuario!=null && $password!=null){
session_start();
session_register("autentificado");
$autentificado = "ADMINISTRADORES";
$_SESSION["administradores"]=$usuario;
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
$hora=date("h:i:s");
$fecha=date("Y-m-d");
header("Location: administrador/index.php");
}
else{
header("Location: ../index.php?error=3");
}
}
elseif($tipo=="administrativo"){
$administrativos=mysql_query("SELECT id_administrativo,password FROM administrativos WHERE id_administrativo='$usuario' AND password='$password'",$link);
$adm=mysql_fetch_array($administrativos);
$matricula_administrativos=($adm["id_administrativo"]);
$password_administrativos=($adm["password"]);

if($usuario==$matricula_administrativos && $password==$password_administrativos && $usuario!=null && $password!=null){
session_start();
session_register("autentificado");
$autentificado = "ADMINISTRATIVOS";
$_SESSION["administrativos"]=$usuario;
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
header("Location: administrativos/index.php");
}
else{	
header("Location: ../index.php?error=3");
}
}
?>
Quiero lo anterior pasarlo a una clase que me controle todo esto pero no se como hacerlo, ayuda por favor, soy casi un novato con clases
  #4 (permalink)  
Antiguo 18/05/2010, 12:12
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Ayuda con clase para login

Yo en tu caso implementaría el patrón de diseño MVC, te dejo un enlace donde hace una breve referencia a el para que entiendas el concepto.

http://www.librosweb.es/symfony_1_2/...atron_mvc.html

El enlace es un capítulo del manual de Symfony, en este capítulo hacen un ameno acercamiento al patrón de diseño MVC y creo que es bastante instructivo para cualquiera que desee aprender a implementarlo.

Saludos!
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #5 (permalink)  
Antiguo 18/05/2010, 13:02
 
Fecha de Ingreso: febrero-2009
Ubicación: mexico
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Ayuda con clase para login

Me parece perfecto lo de MVC pero como hago la clase en php, codigo necesito codigo y no pido que me hagan la clase, si no que me den ideas de como puedo o cuales serian los metodos de la clase login
  #6 (permalink)  
Antiguo 18/05/2010, 13:15
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Ayuda con clase para login

Cita:
Iniciado por negro1985 Ver Mensaje
Me parece perfecto lo de MVC pero como hago la clase en php, codigo necesito codigo y no pido que me hagan la clase, si no que me den ideas de como puedo o cuales serian los metodos de la clase login
Cuando programas con POO (Programación Orientada a Objetos) lo mejor que puedes hacer es dividir tu aplicación en trocitos mas pequeños, cada trozo será un objeto. Lo que tenemos que hacer es definir cuales serán las tareas y responsabilidades de cada objeto, así sabremos como programar la clase que lo representa.

Por ponerte un ejemplo, imaginemos que tu problema es un restaurante.

Lo primero que hay que hacer es dividir el problema en trozos mas pequeños.

Crearemos una clase Cocinero, y otra Camarero, ya que las responsabilidades y tareas de cada uno son diferentes, lo mismo debes hacer tu, identificar cuales son las tareas y responsabilidades en tu aplicación y unificarlas en clases.

Espero que te sirva un poco para empezar a profundizar mas en todo esto.

Saludos!
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #7 (permalink)  
Antiguo 19/05/2010, 14:56
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Ayuda con clase para login

Sip ... por ejemplo, ¿qué hace tu funcion private function clean($value) en la clase login? ya que esa función (pública) la puedes usar en diferentes situaciones, quizas sería mejor que la pongas en tu clase de conexión y la usas en las diferentes clases que van a usar conexión.

Y el concepto de hacer una clase de login no es difícil si ya sabes como trabajarla estructuradamente. Por ejemplo: construyes la sesión, creas una funcion que te verifica si la sesion está vacía, otra que te verifique que permisos tiene la sesión y otra que consulta en la base de datos los datos ingresados en el formulario de login (que creo que ya la desarrollaste).

Y trata de estandarizarla lo más que puedas para que la uses en tus diferentes aplicaciones y listo, ya tienes un objeto reutilizable.
__________________
Quitenme la vida pero no la bebida.

Etiquetas: clase, login
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 07:20.