Autor Tema: Filtrar la variable GET o POST  (Leído 2052 veces)

Desconectado kekoman

  • PHPero Master
  • ******
  • Mensajes: 1.180
  • Karma: 45
  • Sexo: Masculino
  • Mi nuevo usuario es marco811
    • Ver Perfil
Filtrar la variable GET o POST
« en: 06 de Febrero de 2010, 14:26:04 pm »
Hola, cualquier variable POST o GET debe ser filtrada para evitar XSS, Sql injection, etc...
Para eso la mayoria usariais esto:

<?php
$_POST
[&#39;campo1&#39;] = filtro($_POST[&#39;campo1&#39;]);
$_POST[&#39;campo2&#39;] = filtro($_POST[&#39;campo2&#39;]);
//etc......
?>

Si tienes 20 campos en el formulario seria mas razonable hacer esto:

<?php
while (list($key) = each($_POST)) {
$_POST[$key] = filter($_POST[$key]);
}
?>

De este modo se filtra cada elemento array de la variable POST! Podemos hacer lo mismo con GET:

<?php
while (list($key) = each($_GET)) {
$_GET[$key] = filter($_GET[$key]);
}
?>

Esto es todo, un saludo!


Este usuario ya no lo uso, mi nuevo usuario es marco811

Comunidad PHPeros

Filtrar la variable GET o POST
« en: 06 de Febrero de 2010, 14:26:04 pm »

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Filtrar la variable GET o POST
« Respuesta #1 en: 06 de Febrero de 2010, 15:27:01 pm »
Tambien se puede hacer con un foreach.
<?php
foreach($_POST as $algo){
$_POST[$algo] = filtrar($_POST[&#39;$algo&#39;]);
}
?>
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Revancha

  • PHPero Avanzado
  • ****
  • Mensajes: 375
  • Karma: 22
  • Sexo: Masculino
    • Ver Perfil
Re:Filtrar la variable GET o POST
« Respuesta #2 en: 06 de Febrero de 2010, 18:00:21 pm »
o tambien
$_POST filtro($_POST);

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Filtrar la variable GET o POST
« Respuesta #3 en: 06 de Febrero de 2010, 18:25:10 pm »
o tambien
$_POST filtro($_POST);
lo dudo ^^ por que es un ARRAY...

Tambien se puede hacer con un foreach.
<?php
foreach($_POST as $algo){
$_POST[$algo] = filtrar($_POST[&#39;$algo&#39;]);
}
?>

sobran esas comillas simples, además, por si acaso yo haría:

foreach($_POST as $key => $value) {
$_POST[$key] = filtro($value);
}

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Filtrar la variable GET o POST
« Respuesta #4 en: 06 de Febrero de 2010, 18:52:06 pm »
lo dudo ^^ por que es un ARRAY...
sobran esas comillas simples, además, por si acaso yo haría:

foreach($_POST as $key => $value) {
$_POST[$key] = filtro($value);
}

Si, estaba pensando hacer eso pero por estar de vago lo deje asi.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Revancha

  • PHPero Avanzado
  • ****
  • Mensajes: 375
  • Karma: 22
  • Sexo: Masculino
    • Ver Perfil
Re:Filtrar la variable GET o POST
« Respuesta #5 en: 06 de Febrero de 2010, 19:34:11 pm »
lo dudo ^^ por que es un ARRAY...
Lo haz probado?.. A mi me funciona a la perfección :)

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Filtrar la variable GET o POST
« Respuesta #6 en: 06 de Febrero de 2010, 19:46:27 pm »
Pues no se que versión usarás tú de PHP, pero a mí con:

<?php
function filtro($texto) {
return 
"-->$texto<--";
}
$array = array(&#39;hola&#39;, &#39;ejeje&#39;, &#39;ef&#39;, &#39;efwf¡faf&#39;, &#39;ff&#39;);
$array filtro($array);
print_r($array);
?>

Me sale -->Array<--

...