Foros del Web » Programando para Internet » PHP »

Cómo usar preg_match() en PHP para validar datos

Estas en el tema de Cómo usar preg_match() en PHP para validar datos en el foro de PHP en Foros del Web. Buenas gente de la comu, estoy haciendo los comentarios para mi sitio web y estoy en el tema del XSS, he leído manuales muy interesantes ...
  #1 (permalink)  
Antiguo 06/09/2013, 18:37
Avatar de The_Code  
Fecha de Ingreso: mayo-2012
Ubicación: Argentina
Mensajes: 98
Antigüedad: 11 años, 11 meses
Puntos: 4
Pregunta Cómo usar preg_match() en PHP para validar datos

Buenas gente de la comu, estoy haciendo los comentarios para mi sitio web y estoy en el tema del XSS, he leído manuales muy interesantes sobre eso, así que quiero prevenir mi sitio frente a ataques XSS (todavía no usa BD, los comentarios los archivo en un .txt)

Lo que quiero saber es cómo se usa el preg_match(), ya que no lo entiendo, supongamos que quiero sacar las palabras:

<a href
</a>
<script>
etc

entonces cómo tengo que hacer para que la función me saque esas palabras? Porque los códigos que vi, se usan barras, arrobas, guiones, paréntesis, etc, y no entiendo porqué xD

Gracias
__________________
Mi portafolio
  #2 (permalink)  
Antiguo 06/09/2013, 18:53
Avatar de jgdev13  
Fecha de Ingreso: abril-2013
Mensajes: 40
Antigüedad: 11 años
Puntos: 4
Respuesta: Cómo usar preg_match() en PHP para validar datos

Aquí tiene ejemplos bien claros:
http://php.net/manual/es/function.preg-match.php

Pero en tu caso vería mejor utilizar str_replace()...
__________________
No intentes superar a nadie, ¡supérate a ti mismo!
  #3 (permalink)  
Antiguo 06/09/2013, 19:38
Avatar de The_Code  
Fecha de Ingreso: mayo-2012
Ubicación: Argentina
Mensajes: 98
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Cómo usar preg_match() en PHP para validar datos

Si, pero no lo he entendido, supongamos que quiero sacar la palabra hola de un comentario, entonces, hago esto:

preg_match(/^hola/, substr(NO ENTENDI QUE PONER), $coincidencias, PREG_OFFSET_CAPTURE);

Es decir, quier evitar ataques XSS, por ende, sacar algunos códigos. Supongamos que quiero sacar la palabra HOLA de una frase, cómo tengo que hacer? Porque eso ya lo he leído varias veces y no he comprendido bien
__________________
Mi portafolio
  #4 (permalink)  
Antiguo 06/09/2013, 19:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cómo usar preg_match() en PHP para validar datos

Las expresiones regulares no se usan para "validar datos", ahí tienes un serio problema de concepto, las expresiones (RegExp) se usan para analizar texto y hacer reemplazos básicamente.

Pueden servirte para reemplazar partes de cualquier texto, pero no para "validar" todo el tiempo, es un desperdicio de recursos.

En tu caso no hace falta usar RegExp, lo mejor es que busques una librería especializada en filtrar XSS, ya que de construir una deberías dominar RegExp y sobre todo el lenguaje de PHP, que a todas luces se nota que vas empezando.

No te ahogues en un vaso de agua, si de verdad buscas aprender RegExp, que es otro lenguaje, te invito a visitar el sub-foro de RegExp.

Pero si lo que buscas es resolver tu problema de XSS entonces ya veremos como te podemos ayudar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 07/09/2013, 11:39
Avatar de The_Code  
Fecha de Ingreso: mayo-2012
Ubicación: Argentina
Mensajes: 98
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Cómo usar preg_match() en PHP para validar datos

ok, en realidad si está bien saber de todo un poco, pero yo principalmente estoy cómo desarrollador de videojuegos y estoy haciendo mi página, que por cierto, está algo así:



Estoy usando strip_tags para filtrar algunas etiquetas, pero me fijaré lo de librerías para sacar inyecciones XSS, gracias por la amabilidad ;)
Saludos
__________________
Mi portafolio

Etiquetas: ereg, eregi, match, preg
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 23:31.