Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/10/2013, 17:35
AlanChavez
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 14 años, 5 meses
Puntos: 95
Respuesta: PHP POO - Está bien hacer esto para iniciar sesión de usuario?

Cita:
Iniciado por reborn Ver Mensaje
Hola,
me estoy iniciando en php poo y me estoy actualizando en PDO, ya que hace rato no me sentaba a codificar y me estoy actualizando.

Ok, estoy haciendo un pequeño login de usuario para practicar y queria saber lo siguiente.

Explico un poco: hice la clase Usuarios donde se valida el usuario y clave q se introdujo en el form.
Lo q hago es verificar q el usuario existe con un método, y con otro método termino de completar el login.
Por q hago esto?, porq después del login quiero pasar a hacer el registro, entonces con ese método verifico si el usuario existe o no, entonces se insertan los datos a la tabla.

Otra consulta: como verán, en el método existeUsuario, verifico si existe el user y pass usando rowCount() y retorna true... eso es suficiente para comprobar?, o tambien tendria q hacer un fetch para obtener los datos del usuario?

Esto es lo q hice:

Código PHP:

<?php
require_once('Conexion.php');

class 
Usuario{

    private 
$_db;

    public function 
__construct(){

        
$this->_db = new Conexion();
        
$this->_db $this->_db->conectar();
    }

    
    public function 
login($user$pass){
        
        if(
$this->existeUsuario($user$pass) == TRUE){
            
             
//session_start();
             
echo "Hola ".$user;

        }else{

            echo 
"No pasa nada";

        }
    }

    private function 
existeUsuario($user$pass){

        
$this->_usuario $user;
        
$this->_password $pass;
        
        
$con $this->_db->prepare("SELECT * FROM usuarios WHERE nombre = ? AND pass = ?");
        
$con->bindParam(1$this->_usuario);
        
$con->bindParam(2$this->_password);
        
$con->execute();

        if(
$con->rowCount() == 1){

            return 
TRUE;

        }else{
            
            return 
FALSE;
        }            

            
    }
Saludos
Superficialmente, se ve que es una implementación adecuada. Solo una recomendación, yo haria dependencia de inyecciones para tus sesiones en la clase de Usuario.

Y pondria el manejo de sesiones a traves de una clase "Sesión" o algo por el estilo.

entonces cambiaria el constructor de tu clase Usuario por el siguiente:

Código PHP:
public function __construct($sesion) {


DE esta manera, cada vez que instancies la clase Usuario, tambien instancias la clase Sesión y ya no hay necesidad de utilizar

session_start();

En cada método de tu clase usuario.