Foros del Web » Programando para Internet » PHP »

PHP POO - Está bien hacer esto para iniciar sesión de usuario?

Estas en el tema de PHP POO - Está bien hacer esto para iniciar sesión de usuario? en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 25/10/2013, 16:05
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
PHP POO - Está bien hacer esto para iniciar sesión de usuario?

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
  #2 (permalink)  
Antiguo 25/10/2013, 17:35
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 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.
  #3 (permalink)  
Antiguo 25/10/2013, 18:04
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 2 meses
Puntos: 96
Respuesta: PHP POO - Está bien hacer esto para iniciar sesión de usuario?

Lo otro es que es mas optimo comparar si el metodo existeUsuario retorna true que comparar si es igual a true
Código PHP:
Ver original
  1. if($this->existeUsuario($user, $pass) === true){
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #4 (permalink)  
Antiguo 25/10/2013, 21:10
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: PHP POO - Está bien hacer esto para iniciar sesión de usuario?

Gracias por los consejos.
Sobre las sesiones, no seria medio inutil crear sesion cada vez q se instancie un usuario?, ya q se crearia una sesion por mas q el usuario sea incorrecto o no exista?, segun como lo entendi

Etiquetas: poo, registro, select, sesión, tabla, usuarios
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 11:26.