Título: [Ayuda] Validacion de formularios Publicado por: danny920825 en 11 Enero 2017, 19:15 pm Hola de nuevo. !drvy hace unos dias me dijo que la primera regla del desarrollador es no confiar en lo que escriben los usuarios y que tenia que validar los formularios. Pues ayer me propuse intentar validar el formulario de registro de mi proyecto (Aunque solo lo voy a usar yo) y descubrí que es más dificil de lo que pensaba.
Intenté algo como Código pero cuando lo probé usando numeros, los asimiló como string y me deja escribirlos. Tendría entonces que validar diciendo que si es int de error, si es float de error y así por cada tipo o hay formas más sutiles y útiles de hacerlo? También está la opción de usar javascript para validar los formularios, pero me gustaría hacer el proyecto lo más puro que pueda en cuanto a los lenguajes. Usar HTML, CSS y PHP&MySqli. Es cierto que tengo 2 script agregados para porpósitos específicos, pero me gustaría validar desde PHP Título: Re: [Ayuda] Validacion de formularios Publicado por: #!drvy en 11 Enero 2017, 21:56 pm Hola,
is_string lo que valida es si el tipo de variable que le pasas es de tipo string. Eso quiere decir que dependiendo de como se declare la variable dará un resultado u otro. Para que me entiendas: Código
El resultado de esto va a ser: Código: string(17) "esto es un string" Como ves, PHP y su dynamic typing (https://es.wikipedia.org/wiki/Sistema_de_tipos#Tipado_din.C3.A1micol) deciden que todo lo que pongas entre comillas es un string a pesar de que puedas colocar un float o un integer. Lo mismo va para los datos obtenidos del servidor http. Todos son tipo string. Para comprobar que una variable solo contiene letras, PHP tiene la función ctype_alpha -> http://php.net/manual/en/function.ctype-alpha.php Código
Eso si, ten en cuenta que solo considera caracteres [A-Za-z], es decir, ni espacio, ni números, ni símbolos, ni nada mas que letras del latín básico (otros abecedarios tampoco, para ello debes usar set_locale) por tanto tampoco te acepta la Ç, la Ñ o palabras con acentos. De forma similar, si quieres comprobar que tienes solo números, puedes usar ctype_digit -> http://php.net/manual/en/function.ctype-digit.php. También puedes usar expresiones regulares (regex) lo cual en un principio te da algo más de poder en cuanto a que puede entrar y qué no. Código Esto por ejemplo dara true (>0) si el texto solo contiene A-Za-z es decir, latín básico tanto mayúsculas como minúsculas. Es prácticamente igual al ctype_alpha Si queremos por ejemplo que acepte la ñ y otros puedes añadirlos a la expresión: Código Mas info sobre expresiones regulares: http://www.regular-expressions.info/tutorial.html https://developer.mozilla.org/es/docs/Web/javascript/Guide/Regular_Expressions La validación de formularios es una tarea bastante tediosa si se hace a mano, por eso cuando pases a usar librerias y frameworks vas a agradecerlo xD Citar También está la opción de usar javascript para validar los formularios, No uses solo javascript. Recuerda que javascript se ejecuta en el lado del cliente y este tiene total libertad sobre lo que puede hacer y lo que no.. en un dado momento, podria deshabilitar por si mismo todas las validaciones si quiere. Lo ideal es usar ambos. Se agradece mucho que no tenga que volver a introducir todos los datos si es que me he equivocado en algo (y eso con javascript se soluciona) y también se agradece no tener que esperar a que la pagina cargue para que me informe de que he tenido un error. De todos modos, aparte de javascript tambien tienes HTML5. La mayoria de los navegadores modernos soportan tipos de campo (input) como email, numeric, date, etc.. y tambien soportan expresiones regulares. Por ejemplo Código Si quieres saber más: https://developer.mozilla.org/es/docs/Web/HTML/Elemento/input Saludos Título: Re: [Ayuda] Validacion de formularios Publicado por: danny920825 en 12 Enero 2017, 18:43 pm Muchas gracias y perdon por no responder ayer, pero me tuve que ir y no me dio tiempo ni a copiar las cosas. Pero estuve revisando en la casa el manual de PHP que lo descargue en chm y no hay forma de validar las fechas ni los datos booleanos. Por suerte yo puse un calendario que descargue para la fecha que no te deja escribir en el campo. Pero no hay una funcion que lo haga. Aparte de eso, vi que no se puede usar más de un string en el ctype
Código eso no se puede hacer, hay que hacer algo asi Código Título: Re: [Ayuda] Validacion de formularios Publicado por: #!drvy en 12 Enero 2017, 21:04 pm No evidentemente no se puede hacer aunque con is_string tampoco puedes hacerlo. Puedes crearte un wrapper para estos casos..
Código
o si usas >= PHP 5.6 Código
Código
En este caso si uno de los argumentos no cumple, toda la función devuelve false.. más o menos como isset. Saludos Título: Re: [Ayuda] Validacion de formularios Publicado por: danny920825 en 19 Enero 2017, 14:26 pm Gracias again. Cada dia algo nuevo que aprender. Ahora estoy un poco enfrascado porque estoy tratando de comprender todos los conceptos de POO para usar CoideIgniter y digamos que me cuesta trabajo. Ya descargue TODA la documentacion de la página de PHP sobre clases. Son cerca de 19 pdf y ni porque está en español. Algo siempre se aprende pero el proceso es lento
|