Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: SrTrp en 1 Julio 2018, 20:10 pm



Título: [Resuelto] Permitir caracteres que quiera
Publicado por: SrTrp en 1 Julio 2018, 20:10 pm
Como puedo permitir caracteres que yo quiera ejemplo números y letras y estos caracteres $#-_ pero si ponen algo como /' que detecte estaba pensando en un ciclo for ir leyendo carácter por carácter y compararlos en un arreglo que tenga los caracteres que quiero pero sería muy tardado, investigue esta función:
Código
  1. if (!preg_match("/^[0-9a-zA-Z]+$/",$_POST['campo'])) {
  2.  
  3.                echo "hay un carácter no valido";
  4.         }else{
  5. echo "todo bien";
  6. }
  7.  
pero al parecer no funciona según esa función debería solo aceptar números y letras pero meto cualquier tipo de carácter y no surge nada


Título: Re: Permitir caracteres que quiera
Publicado por: #!drvy en 2 Julio 2018, 00:53 am
Esa función esta bien y cumple su objetivo que es detectar cualquier carácter que no sea A-Z a-z o 0-9, eso quiere decir que todo lo demás es "ilegal" incluidos los espacios. Para lo que buscas, solo tendrias que añadir el resto de caracteres:

Código
  1. if (!preg_match("/^[0-9a-zA-Z$#-_]+$/",$_POST['campo'])) {


Saludos


Título: Re: Permitir caracteres que quiera
Publicado por: SrTrp en 2 Julio 2018, 07:09 am
Cierto ya probe y si me funciona así ahora tengo un detalle quiero implementar muchos mas caracteres que sería así:
Código
  1. if (!preg_match("/^[0-9a-zA-Z#$%&/()?_;:.,<>+-*ªº=[]{}¿!ç\'~]+$/",$_POST['campo'])) {
pero al momento que lo corro me da esa alvertencia quite unos caracteres ()'[] por si afectaban pero no siguio dandome esa alvertencia.. alguna idea?
Código:
Warning: preg_match(): Unknown modifier '(' in C:\...dircion.. on line N


Título: Re: Permitir caracteres que quiera
Publicado por: #!drvy en 3 Julio 2018, 00:14 am
Eso es porque en REGEX (que es lo que estas usando), algunos caracteres son especiales. Dichos caracteres los has de escapar con \ (barra invertida).

Código
  1. if (!preg_match("/^[0-9a-zA-Z#$%&\/\(\)\?_;:\.,<>\+\-*ªº\=\[\]\{\}¿!ç\\'~]+$/",$_POST['campo'])) {

Saludos


Título: Re: Permitir caracteres que quiera
Publicado por: SrTrp en 3 Julio 2018, 05:19 am
 ;-) ;-) ;-) muchísimas gracias me ah servido.