Problema con una clase

Iniciado por mark182, 29 Agosto 2010, 23:30 PM

0 Miembros y 1 Visitante están viendo este tema.

mark182

Buenas, la verdad que recien estoy arrancando con POO en PHP y me encontre con mi primer problema que nose cual puede ser la solucion ya que prove diferentes cosas. Bien paso a explicar, tengo dos clases: Validar y Persona, la idea es pasarle las variables del formulario a un metodo de Persona que setiara la variable validada, para esto, el metodo de la clases Persona, llama a metodos de la clase Validar que valida que no tenga caracteres extraños ni que este en blanco la variable. A continuacion les pongo el source de cada clase:

Persona:


<?php
include("Validar.php");

class 
Persona extends Validar
{
private 
$verificacion;

public function 
setUsPass($usPass)
    {
        if(
$this->variableVacia($usPass) == 0)
        {
            if(
$this->validaUsPass($usPass) == 1)
            {
                
$this->verificacion1;
                return 
$this->verificacion;
            }
            else
            {
                
$this->verificacion0;
                return 
$this->verificacion;
            }
        }
        else
        {
            
$this->verificacion0;
            return 
$this->verificacion;
        }
    } 
}


Validar:

class Validar
{
    private $bien;

public function variableVacia($variable)
    {
        if(empty($variable) == 1)
        {
            $this->bien= 1;
            return $this->bien;
        }
        else
        {
            $this->bien= 0;
            return $this->bien;
        }
    }

    public function validaUsPass($varible)
    {
        if(ereg("^[a-zA-Z0-9]{1,15}$",$variable) == 1)
        {
            $this->bien= 1;
            return $this->bien;
        }
        else
        {
            $this->bien= 0;
            return $this->bien
        }
    }
}


Main:

$usuario = $_POST["us"];
$personas= new Persona;

if($personas->setUsPass($usuario) == 0 )
{
    $msjUs=1;
    $error=1;
}

if($msjUs == 1)
    echo '<li class="error">El usuario ingresado es incorrecto.</li>';



Bien, el problema es el siguiente: Al parecer esta validando correctamente cuando la variable esta en blanco y cuando no, ya que hice varios juegos de prueba descartando la parte que hace la validacion sobre los caracteres y funciona correctamente. Pero con la parte de validar caracteres extraños me esta trayendo problemas ya que me esta dando siempre que el usuario es incorrecto, o sea que la variable tiene caracteres extraños.

Que es lo que esta ocurriendo? ya probe varias cosas y no pude solucionarlo. Muchas gracias.

novalida

hola, creo que encontré el fallo.
En la función validaUsPass recibes un parámetro llamado $varible y dentro de la función utilizas una variable llamada $variable por lo que siempre trabajarás con una variable (perdón por la redundancia) que no tendrá ningún contenido y de ahí que no pase la validación.
En la última línea de la clase validar faltaría también el ; (por si acaso ;))

Espero que te haya podido ayudar :)

Saludos.

~ Yoya ~

Buenas, nose porque utilizas de esa forma una subclase, cuando se utiliza una subclase se busca optimizar pero haces lo contrario xD...

Bueno, aquí una clase que hice, que hace lo mismo pero en menos lineas xD.

validar.php
Código (php) [Seleccionar]
<?php
class Persona
{
private 
$verificacion;

public function 
setUsPass($pass)
{
  if(
ereg("^[a-zA-Z0-9]{1,15}$",$pass))
  {
    
$this->verificacion=1;
    return 
$this->verificacion;
  }else{
  
$this->verificacion=0;
  return 
$this->verificacion;
  }

}
}

?>


Puedes verificar desde la misma expresión que hiciste si el código contiene espacio en blanco y que permita solo caracteres alfanumérico...

Main
Código (php) [Seleccionar]

<?php
include("validar.php");

$usuario $_POST["us"];
$personas= new Persona;

//Definimos las variables...
$msjUs null;
$error null;
if(!
$personas->setUsPass($usuario))
{
    
$msjUs=1;
    
$error=1;
}

if(
$msjUs == 1){
    
echo '<li class="error">El usuario ingresado es incorrecto.</li>';
}

?>
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

mark182

Gracias por sus dos respuestas.

CitarBuenas, nose porque utilizas de esa forma una subclase, cuando se utiliza una subclase se busca optimizar pero haces lo contrario xD

La verdad es que recien estoy comenzando con POO, y se me habia ocurrido que tener una clase que tenga varios metodos para validar distintas cosas (que es la clase Validar), por eso es que hago eso. Puede ser que no sea los mas optimo, ya que como recien arranco en POO no tengo muy en claro las formas de optimizar. Muchas gracias igualmente.