Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] validar mediante expresion regular

Estas en el tema de validar mediante expresion regular en el foro de PHP en Foros del Web. Hola amigos a ver si me pueden ayudar con esto: Miren tengo una expresion regular para validar un nombre introducido a traves de un formulario. ...
  #1 (permalink)  
Antiguo 14/04/2015, 02:27
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
validar mediante expresion regular

Hola amigos a ver si me pueden ayudar con esto:

Miren tengo una expresion regular para validar un nombre introducido a traves de un formulario.

Imagino que la funcion "ereg" esta en desuso, a favor de "preg_match", pero esto es lo de menos ahora.


El problema es que el codigo funciona cuando no esta dentro de una funcion , pero si lo pongo dentro de una funcion no funciona.

Dicho de otro modo:


Asi funciona:

Código PHP:
Ver original
  1. if (!ereg("^[a-zA-Z]{1,30}$", $nombre))
  2.      
  3.          {
  4.              return header("Location:logueado.php?tipo_error_registro_usuario=patron_nombre");               
  5.          }



Y asi no funciona:

Código PHP:
Ver original
  1. function filtroDeActualizacion($nombre) {
  2.  
  3.     if (!ereg("^[a-zA-Z]{1,30}$", $nombre))
  4.      
  5.          {           header("Location:logueado.php?tipo_error_registro_usuario=patron_nombre");              
  6.          }
  7.  
  8.  
  9. } filtroDeActualizacion($nombre);


Podrian decirme que estoy haciendo mal ? es que no lo veo.

O es que no se puede hacer , es decir meterdentro de una funcion una expresion regular?


Gracias de antemano.
  #2 (permalink)  
Antiguo 14/04/2015, 02:55
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: validar mediante expresion regular

Asegúrate de que no se haya mostrado nada antes de la llamada a header, de lo contrario, no funcionará. Y trata de empezar a usar las funciones PCRE.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 14/04/2015, 02:57
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: validar mediante expresion regular

Tienes que pasarle la variable $nombre

Código PHP:
Ver original
  1. filtroDeActualizacion('Juan');

o

Código PHP:
Ver original
  1. $filtro_nombre = 'Juan';
  2. filtroDeActualizacion($filtro_nombre);

PD: Comprueba que realiza bién la llamada header.

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #4 (permalink)  
Antiguo 14/04/2015, 03:51
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: validar mediante expresion regular

Ok lo he solucionado en parte

MaNuX0218 decirte que el valor de $nombre lo recoge de un $_post de un formulario.

Por otro lado Alexis88, he utilizado un preg_match.


Mi ultima parte del problema viene ahora.

Miren, la pregunta es la siguiente:

¿Se puede meter dentro de una funcion una llamada a un metodo de una clase externa?

es decir algo asi:


Código PHP:
Ver original
  1. function filtrosDeActualizacion($id, $nombre, $apellidos, $nick, $email, $password, $repassword, $sexo, $dia, $mes, $ano) {    
  2.        
  3.     if (!preg_match("/^[a-zA-Z]{1,30}$/", $nombre))
  4.      
  5.          {
  6.              header("Location:logueado.php?tipo_error_registro_usuario=patron_nombre");              
  7.          }     
  8.        
  9.  
  10.          else          
  11.        
  12.          {
  13.  
  14. $nombre_tabla = $op->nombre_tabla;         
  15.                     $op->ActualizarUsuario($nombre_tabla, $nombre, $apellidos, $nick, $email, $password, $repassword,
  16.                
  17.                     $sexo, $dia, $mes, $ano, $directorio_img_bbdd);
  18.                    
  19.                     header('Location: logueado.php');  
  20.  
  21.         }      
  22.          
  23.    
  24. } filtrosDeActualizacion($id, $nombre, $apellidos, $nick, $email, $password, $repassword, $sexo, $dia, $mes, $ano);


Me dice "Undefined variable: op"

¿Hay alguna manera se pueda hacer esto, me falta por poner algo, o simplemente no se puede hacer?
  #5 (permalink)  
Antiguo 14/04/2015, 07:30
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: validar mediante expresion regular

Lo he intentado de mil maneras y nada.

Pero la cuestion es que la llamada al metodo ActualizarUsuario debe formar parte del "if"

Se me ocurre desde fuera, pasar por parametro "$nombre_tabla" que corresponde a

$nombre_tabla = $op->nombre_tabla;


Pero aunque funcionara, no se como pasar por parametro esto (si es que se pudiera):

$op->ActualizarUsuario($nombre_tabla, $nombre, $apellidos, $nick, $email, $password, $repassword,

$sexo, $dia, $mes, $ano, $directorio_img_bbdd);
  #6 (permalink)  
Antiguo 14/04/2015, 07:41
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: validar mediante expresion regular

para pasar un objeto a una función lo debes de hacer como parámetro:
Código PHP:
Ver original
  1. function do_something_with($user)
  2. {
  3.     echo $user->getUsername();
  4. }
  5.  
  6. $object = new User();
  7. do_something_with($user);
Con eso solucionas el error: "Undefined variable: op"
Por otro lado si tienes una función con muchos parámetros puede ser sinónimo de que esta manejando mas cosas de las que debe o que requieres pensar en otra forma de hacer lo que requieres para que sea mas legible.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 14/04/2015, 09:53
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: validar mediante expresion regular

Gracias fenomeno, me sirvio , he conseguido arreglarlo

Etiquetas: expresion, formulario, mediante, registro, regular
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 18:01.