en el documento de la clase, tengo los parámetros que quiero buscar en propiedades array, luego lo proceso todo para buscar con métodos si alguno de esos parámetros se encuentra ahí, este es el documento:
Código PHP:
Ver original
//aplico el constructor que recibe los parámetros del usuario public function __construct( $usr, $emil, $paswd, $paswd2 ) { $this->usuarioc = $usr; $this->emailc = $emil; $this->passwdc = $paswd; $this->passwd2c = $paswd2; $this->all_parametros = array( "usuario" => $usr, "email" => $emil, "passwd" => $paswd, "passwd2" =>$paswd2 ); } //funcion para evitar que el usuario, email, passwd y passwd2 no contienen sql injection public function seguridad_usuario() { foreach( $this->seguridad_total as $seguridad ) { //si no contiene sql injection entonces doy valor true if ( $this->res === false ) { $this->validar[$seguridad][] = true; } else { //sino compruebo que no contiene espacios, si lo contiene doy valor "espacio" if( $seguridad == " " ) { $this->validar[$this->usuarioc][] = "espacio"; } //retorno el parametro de seguridad que da problemas $this->validar[$this->usuarioc][] = $seguridad; } } return $this->validar; } public function seguridad_email() { foreach ( $this->seguridad_email as $seguridad ) { if ( $this->res === false ) { $this->validar[$seguridad][] = true; } else { //sino compruebo que no contiene espacios, si lo contiene doy valor "espacio" if( $seguridad == " " ) { $this->validar[$seguridad][] = "espacio"; } //retorno el valor $this->validar[$this->emailc][] = $seguridad; } } return $this->validar; } /////////////////////////// //validando la contraseña /////////////////////////// public function seguridad_passwd () { foreach ( $this->seguridad_total as $seguridad ) { { //si $passwd y $passwd2 no coinciden if($this->passwdc !== $this->passwd2c) { $this->validar [$this->passwdc] ['coincidencia_password'] = false; } else { $this->validar [$this->passwdc] ['coincidencia_password'] = true; } } //si la contraseña es insegura (inferior a 6 caracteres) { $this->validar [$this->passwdc] ['longitud_password_2'] = false; } else { $this->validar [$this->passwdc] ['longitud_password_2'] = true; } } return $this->validar; }
luego tengo en funciones (el controlador según modelo MVC) tengo la instancia a la clase y también los foreach anidados para imprimir todo aquello que me devolvió un valor diferente a true, es decir valores false o "espacio". este es el documento:
Código PHP:
Ver original
//////////////////////////////////////////////////////////////////////////////// //valida los datos introducidos por formulario de registro de nuevos usuarios //////////////////////////////////////////////////////////////////////////////// function validar($usuario, $email, $passwd, $passwd2, $nombre) { //creo una instancia para obtener un usuario, una contraseña y un email existentes $usuario_class = new Validar($usuario, $email, $passwd, $passwd2); //compruebo que los campos no contienen sql injection, email injection, url's ni operadores $validar_usuario = $usuario_class->seguridad_usuario(); $validar_email = $usuario_class->seguridad_email(); $validar_passwd = $usuario_class->seguridad_passwd(); //print_r($validar_campos); foreach ( $validar_usuario as $caja=>$valor ) { { foreach ( $valor as $caja2=>$valor2 ) { if ( $valor2 !== true ) { echo "Error en " .$caja. ", <b>".$valor2."</b> no es válido <br>"; } } } } foreach ( $validacion as $caja=>$valor ) { { foreach ( $valor as $key => $result ) { { foreach ( $result as $primero=>$segundo ) { //print_r($result); if ( $segundo !== true) { echo "Error en " .$key. ", <b>".$segundo."</b> no es válido <br>"; } } } } } else { echo $caja." ".$valor; } } }
¿cual es el problema?
pues que imprime tres veces el mensaje de error. por ejemplo, si como usuario escribo un CONTENT-TYPE: me devuelve tres veces el mensaje de error
Código PHP:
Ver original
echo "Error en " .$key. ", <b>".$segundo."</b> no es válido <br>";
Cita:
Error en CONTENT-TYPE:, <b>Content-type:</b> no es válido