Caracteres problematicos en el username al registrarse

Alucard Seguir

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
26 Ene 2008
Mensajes
326
El titulo practicamente lo dice todo, el problema es que a los que se intentan registrar en mi foro con ciertos caracteres como por ejemplo la comilla simple, le tira un error de sql (ahora no me acuerdo exactamente lo que dice pero me acuerdo que no especifica ningun error de codigo ni nada en particular), alguno sabe que puede ser y como arreglarlo?

Cabe aclarar que dudo que tenga que ver la verison en esto... ya que me pasaba en versiones anteriores y si no mal recuerdo en 3.8.x tambien me pasaba.

Gracias de antemano.
 

Andrés Durán

Xi
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Abr 2009
Mensajes
4.371
Hola,

Si te es posible, adjunta el mensaje de error completo, para diagnosticar el problema.
 

Alucard

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
26 Ene 2008
Mensajes
326
Hola, disculpa por postear esto un poco tarde pero se me habia pasado este thread...

En estos momentos no podria darte el error... pero sabrias la forma de que los usuarios no se puedan registrar con ciertos caracteres que yo especifique?
 

Andrés Durán

Xi
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Abr 2009
Mensajes
4.371
No es posible mediante una expresión regular evitar el uso de ciertos caracteres. Puedes utilizar algo como esto:

^[a-zA-Z0-9\@_ \?\*]+$

Lo que indica que los usuarios podrán utilizar como caracteres para registrar un nombre de usuario cualquier letra mayúscula o minúscula, el símbolo @, el caracter guión bajo ( _ ), el símbolo ? y el símbolo *. Puedes agregar dentro de los paréntesis tantos símbolos o caracteres como desees.

Eso deberás colocarlo en:

AdminCP -> Opciones de vBulletin -> Opciones de Registro de Usuarios -> Expresión Regular de Nombre de Usuario

Saludos.
 

Alucard

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
26 Ene 2008
Mensajes
326
Muchas gracias... lo que no comprendi es por que me dijiste que no es posible pero luego me diste la solucion xd.

Respecto a la expresion regular, entonces si uso de la siguiente forma:

^[a-zA-Z0-9]+$

Solo se deberia poder usar letras mayusculas o minusculas y todos los numeros... y ningun caracter mas, cierto?

Otra duda que tengo es... por que todos se separaron con la barra \ excepto @_ que estan juntos y por que luego de esos 2 caracteres hay un espacio?

Gracias.
 

Andrés Durán

Xi
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Abr 2009
Mensajes
4.371
Muchas gracias... lo que no comprendi es por que me dijiste que no es posible pero luego me diste la solucion xd.

No existe en la sintaxis de las expresiones regulares un caracter que excluya el uso de ciertos símbolos o caracteres en una cadena.


Respecto a la expresion regular, entonces si uso de la siguiente forma:

^[a-zA-Z0-9]+$

Solo se deberia poder usar letras mayusculas o minusculas y todos los numeros... y ningun caracter mas, cierto?

Es correcto. Tampoco se podrán utilizar acentos ortográficos.


Otra duda que tengo es... por que todos se separaron con la barra \ excepto @_ que estan juntos y por que luego de esos 2 caracteres hay un espacio?

Gracias.

Paso a explicarte cada uno de los componentes de la expresión regular:

[ ]: Los paréntesis cuadrados (o corchetes) indican una agrupación en un patrón de coincidencia.

^: Este símbolo indica el inicio de la expresión regular

a-z: Se puede utilizar cualquier letra minúscula

A-Z: Se puede utilizar cualquier letra mayúscula

0-9: Se puede utilizar cualquier número

@: Es el símbolo "arroba"

_: El caracter guión bajo

\: El "backslash" indica que dentro del patrón de coincidencia existirá un símbolo especial de la sintaxis de las expresiones regulares. A continuación más detalles...

?: Este símbolo puede tener dos funciones:

+ Trabajar como un caracter común cuando se coloca delante de él un backslash.

+ Indicar que cierta cadena dentro de la expresión regular puede estar o no presente en el patrón de coincidencia.


*: Este símbolo también puede tener dos funciones:

+ Trabajar como un caracter común cuando se coloca delante de él un backslash.

+ Indicar que cierta cadena dentro de la expresión regular puede aparecer cero o más veces en el patrón de coincidencia.

Reitero, se coloca delante de ellos el caracter backslash para indicar que esos símbolos no actuarán como caracteres especiales, sino como cualquier otro caracter.


+: El símbolo + indica que todos los caracteres contenidos en la cadena ubicada en la agrupación pueden aparecer una o más veces en el patrón de coincidencia.

$: El símbolo dólar indica el final de la expresión regular

El espacio indica que puede haber un espacio en el patrón de coincidencia. Es decir:

Esta expresión regular:

^[a-zA-Z0-9]+$

Permitirá registrar el nombre "AndresDuran" (no se podrán usar acentos), pero NO el nombre "Andres Duran"

Esta expresión regular:

^[a-zA-Z0-9]+$

Permitirá registrar ambos nombres, con o sin espacio.

El hecho de que el símbolo arroba y el símbolo guión bajo estén juntos, no indica nada especial, puesto que ninguno de los dos es un caracter especial dentro de la sintaxis de las expresiones regulares.

Espero haber aclarado todas tus dudas. Si tienes alguna otra consulta, siéntete libre de preguntar :).

Saludos cordiales.
 
Arriba