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

PHP OO Opinion acerca de codigo

Estas en el tema de Opinion acerca de codigo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Me gustaría que por favor me dieran opiniones acerca de este código.... mas que todo acerca de extract, me gustaría colocarlo en el construct pero ...
  #1 (permalink)  
Antiguo 08/04/2011, 19:21
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Opinion acerca de codigo

Me gustaría que por favor me dieran opiniones acerca de este código.... mas que todo acerca de extract, me gustaría colocarlo en el construct pero no me funciono.

De todas formas si alguien puede dar mejoras, les estaré eternamente agradecido.

Código PHP:
<?php
class Logueo {
    
//private $variablesPost;
    
    
function __construct()
    {        
        
//$variablesPost = extract($_POST);
    
}
    
    
    function 
loguear(){
        
        
extract($_POST);
        
$basededatos = new PDO('mysql:host=localhost;dbname=prog_db''''');
        
$consulta $basededatos->prepare("SELECT id_acceso, acc_correo, acc_seudonimo, acc_contrasena, id_roll, acc_confirmado, acc_estado FROM `prog_db`.`tbl_acceso` WHERE acc_seudonimo = ? OR acc_correo = ?");

        
$consulta->execute(array($usuario$usuario));
        
        
$resultado $consulta->fetch(PDO::FETCH_ASSOC);

        if (
$resultado['acc_contrasena'] != $contrasena){
            
// codigo aqui;
        
}else{
            
// codigo aqui;
        
}
        
    }
}
?>
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #2 (permalink)  
Antiguo 08/04/2011, 22:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Opinion acerca de codigo

extract() puede resultar muy como para evitar el uso de $array['indice'], pero las variables son solo visibles en el ambito donde fueron creadas, en este caso, solo podras usarlas dentro del metodo loguear(); esto no es muy legible que digamos, aunque en PDO creo que no representa riesgos.

Por otra parte, no es recomendable guardar directamente las contraseñas en la base de datos, solo guarda una cadena encriptada, puede ser con md5() o similar. Cuando verifiques si los datos de usuario son correctos puedes hacer esto:

if(md5($_POST['contrasena']) == $resultado['acc_contrasena'])

Con eso incrementas un poco el nivel de seguridad de tu aplicacion.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 09/04/2011, 03:14
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Opinion acerca de codigo

Que tal jotaincubus,

En lo personal trato de evitar el uso de extract, suelo trabajar en equipo y no me agrade que el que esta al lado pierda tiempo buscando donde se define que, el código debería ser lo mas claro posible y extract a veces esconde esa claridad.

Estas trabajando con MVC ?, no me parece bien que Logueo acceda directamente al $_POST.

También esta lo que comenta Triby, el password mínimo debería estar encriptado con md5 + salt y en la query buscar la identidad correspondiente con el password ya encriptado.


Código PHP:
Ver original
  1. class Logueo
  2. {
  3.     const SALT = '%·s#!a/l)($t';
  4.     ...
  5.     public function loguear()
  6.     {  
  7.         ...
  8.         $query = "SELECT id_acceso, acc_correo, acc_seudonimo, acc_contrasena "
  9.                . ", id_roll, acc_confirmado, acc_estado "
  10.                . "FROM `prog_db`.`tbl_acceso` "
  11.                . "WHERE (acc_seudonimo = ? OR acc_correo = ?) AND passwd = ?"
  12.         $consulta = $basededatos->prepare($query);
  13.         $passwd   = md5(self::SALT . $passwd):
  14.         $consulta->execute(array($usuario, $usuario, $passwd));
  15.         ...
  16.     }
  17. }

y por último, estas utilizando PHP 4 ?, si no es el caso deberías declarar la visibilidad de las propiedades y métodos.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 10/04/2011, 06:55
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Opinion acerca de codigo

Wow espectacular, con dos respuestas ya me han dado muchas ideas de como manejar mi código, si esta lo de MD5 solo que no lo he colocado ya que solo quiero probar la funcionalidad del código antes de colocarle los elementos que amplían la seguridad.

Cita:
$array['indice']
Tryby podrias ser tan amable por favor de mostrarme un pequeño ejemplo de como haces una consulta o insersion con este metodo de array-indice ?

Cita:
const SALT = '%·s#!a/l)($t';
Master si no es mucha molestia me podrías decir por favor para que usas esta constante o que función cumple dentro de la clase ?

Muchas gracias por sus respuestas y disculpen las molestias.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #5 (permalink)  
Antiguo 10/04/2011, 13:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Opinion acerca de codigo

Lo unico que consigues con extract es crear variables provenientes de una matriz asociativa, ahorrandote hacer esto:

$indice = $matriz['indice'];

Extract te permite incluir directamente esa variable generada en una cadena, consulta, etc., pero, como ya se menciono, se pierde legibilidad, principalmente porque no cualquier usuario sabe las variables que se crearan al usar esta funcion.

Mas legible, aunque sea mas tardado de teclear:

$consulta->execute(array($datos['usuario'], $datos['password'], $datos['otro_campo']));
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 10/04/2011, 17:24
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Opinion acerca de codigo

Cita:
Iniciado por jotaincubus Ver Mensaje
Master si no es mucha molestia me podrías decir por favor para que usas esta constante o que función cumple dentro de la clase ?
salt es para reforzar el password, si miras el código vas a ver que se utiliza en combinación el password:

Código PHP:
Ver original
  1. $passwd   = md5(self::SALT . $passwd):

se sobreentiende que a la hora de hacer los inserts, updates, aplicarias el mismo método, lo agregue a la clase para que quede mas gráfico, en realidad el salt debería estar en archivo de configuración.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 11/04/2011, 06:59
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Opinion acerca de codigo

Les agradezco enormemente la información que me han brindado, me pondré a organizar el código y apenas este listo lo posteare para futuras consultas y futuras opiniones.

Muchas gracias.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: Ninguno
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 21:08.