elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Recorriendo el array $_POST y regresandolo a variables
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Recorriendo el array $_POST y regresandolo a variables  (Leído 9,070 veces)
Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Recorriendo el array $_POST y regresandolo a variables
« en: 8 Mayo 2007, 00:04 am »

Pues, tengo todo listo, casi listo :xD

Miren, lo que quiero es...

Tomar [sub[TODOS[/sub] los valores y variables que traigo en $_POST, una vez que los tengo entonces los limpio, o hago lo que sea (en el ejemplo los codifico en Base64 pero podria usar cualquier otra funcion [htmlspecialchars o similares] )

ok, deberia ser algo asi
Código:
$datos = $_POST;
recorre (todos-LosValores-de$datos){
         TomarNombreApuntador = base64Encode(TomarValorApuntador);
         incremento;
}
Asi le asigno a la variable con el mismo nombre ese valor pero ya codificado :D. Que fail es, cierto?

Ahora, un ejemplo real :D
Código:
<form action="" method="post">
Nombre<input type="text" name="nombre" value="<?= $_POST['nombre'];?>"/><br />
Apellido<input type="text" name="apellido" value="<?= $_POST['apellido'];?>"/><br />
email<input type="text" name="email" value="<?= $_POST['email'];?>"/>
<input type="hidden" name="id" value="<?= md5(time());?>" />
<input type="submit">
</form><hr size=1 color="#ff0000" width="30%" align="left">
<?php
function limpiarCosas(){
$datos = $_POST;
$x=0;
$total = count($datos)-1;
$grupos = array_keys($datos);
while($x<=$total){
// echo "<b>";
// echo $grupos[$x]." vale: ".$datos[$grupos[$x]]."</b> | ";
$variables = '$'.$grupos[$x].' = "'.base64_encode($datos[$grupos[$x]]).'";';
// echo $variables;
eval($variables);
// echo "<hr>";
$x++;
}
}
limpiarCosas();
echo $nombre; // En mi maquina esto me imprime el valor en texto plano del campo "nombre"
echo "<br>".$x; // No me imprime nada, no se como sacarlo de ese ciclo dentro de la funcion ¬¬
?>

Dejo comentadas las lineas que uso para "depuracion?"

y dejo comentarios al ultimo :D

En concreto lo que quiero es que despues de ejecutar esa funcion me regrese en variables los valores codificados de cada campo que envio del formulario :D



Encontre un codigo que le asigna nuevos valores a $_GET y $_POST y $_COOKIE

la funcion es asi
Código:
limiarPorqueria($valor){
//aca muchas cosas que limpian los valores de el array que le pasas
}

y, luego la ejecutan asi
Código:
$_GET =& limpiarPorquerias($_GET);
$_POST =& limpiarPorquerias($_POST);

Nunca habia visto usar ese "=&" para que es? :D


En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Recorriendo el array $_POST y regresandolo a variables
« Respuesta #1 en: 8 Mayo 2007, 00:24 am »

Al parecer ese "=&" le re-Asigna valores a esa variable ¬¬'

esto me da muchas ideas, ahora lo pruebo :P


En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Recorriendo el array $_POST y regresandolo a variables
« Respuesta #2 en: 8 Mayo 2007, 00:38 am »

Nel, no quedo x'DDD
o soy muy malo con esto :xD
puse esto
Código:
$variables = '$final = array(\''.$grupos[$x].'\' => "'.base64_encode($datos[$grupos[$x]]).'");';
y que me regresara el valor de $final
y, luego le dije que
Código:
$_POST =& limpiarCosas($_POST)

y aun no funciona :D
En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Recorriendo el array $_POST y regresandolo a variables
« Respuesta #3 en: 8 Mayo 2007, 01:16 am »

Al final ya quedo con array_map()
x'DDDDDDDDDDDD
y yo compliecandome las cosas jehehehehe

el codigo final es este:
Código:
<form action="" method="post">
Nombre<input type="text" name="nombre" value="<?= $_POST['nombre'];?>"/><br />
Apellido<input type="text" name="apellido" value="<?= $_POST['apellido'];?>"/><br />
email<input type="text" name="email" value="<?= $_POST['email'];?>"/>
<input type="hidden" name="id" value="<?= md5(time());?>" />
<input type="submit">
</form><hr size=1 color="#ff0000" width="30%" align="left">
<?php
function limpia($t){
$t = base64_encode($t);
return $t;
}
function LimpiarTodo($datos){
if(is_array($datos)){
$datos = array_map('limpia',$datos);
}else{
die("<font color=#ff0000><b>Error:</b></font> La funcion <b>LimpiarTodo</b> debe contener un arreglo.");
}
return $datos;
}
$_POST =& LimpiarTodo($_POST);
$nombre = $_POST['nombre'];
$apellido = $_POST['apellido'];
$email = $_POST['email'];
$id = $_POST['id'];

echo "<b>Nombre:</b> $nombre <br>";
echo "<b>Apellido:</b> $apellido<br>";
echo "<b>email:</b> $email <br>";
echo "<b>id:</b> $id";
?>

Con ejemplo y todo xD
En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Recorriendo el array $_POST y regresandolo a variables
« Respuesta #4 en: 8 Mayo 2007, 01:17 am »

mañana hago un solo post y con la funcion por separado y que, ademas limpie el codigo html y los codigos malos ;)
En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Recorriendo el array $_POST y regresandolo a variables
« Respuesta #5 en: 8 Mayo 2007, 16:07 pm »

Perdon, perdon!!!

Como has cerrado el post ¬¬

Código:
<?php
  foreach ($_POST as $key => $value) {
    $$key = limpia($value);
  }
?>

Asi tienes todas las variables limpias :P



Bien, asi limpio las variables, pero, se quedan acaso en el array $_POST ?
es que es lo que quiero hacer >.< tengo ya una aplicasion casi terminada pero se olvidaron de limpiar las variables >.< y tiene XSS hasta por los botontes de submit xDDDDDDD

Entonces quiero que yo al poner una funcion me limpie todo y ya no tenga necesidad de hacerlo a cada archivo :D

Gracias Rentero :D
En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Recorriendo el array $_POST y regresandolo a variables
« Respuesta #6 en: 8 Mayo 2007, 16:15 pm »

Al final quedo asi mi funcion
Código:
<?php
function LimpiarTodo($datos){
if(is_array($datos)){
$datos = array_map('limpia',$datos);
}else{
die("<font color=#ff0000><b>Error:</b></font> La funcion <b>LimpiarTodo</b> debe contener un arreglo.");
}
return $datos;
} ?>

Lo "intereante" es en la linea
$datos = array_map('limpia',$datos);
array_map() Dicho en palabras del manual de PHP en linea
Citar
array_map --  Aplica la llamada de retorno especificada a los elementos de las matrices dadas

O sea, que en el primer parametro de esta funcion deberan poner el nombre de la funcion que desean ejecutar en los valores del array, y, como segundo parametro; el array :D

En mi caso puse una funcion que se llama "limpia"

Ahora, para usar esta funcion debemos hacerlo de esta forma
Código:
<?php
$arreglo = array("a","b","c");
$arreglo =& LimpiarTodo($arreglo);
?>
Y, entonces convierte todos esos valores y los regresa a ese mismo array de datos :D
en caso de $_POST despues de aplicar esta funcion te regresara los datos ya codificados (dependiendo de la funcion que apliquen)
entonces ya podemos usar "normalmente" y sin tener la duda existencial de: ¿"Vulnerable o no vulnerable?"

Espero sirva de algo :d
« Última modificación: 8 Mayo 2007, 17:29 pm por Azielito » En línea

Rentero
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.164


La paciencia es la madre de la ciencia.


Ver Perfil
Re: Recorriendo el array $_POST y regresandolo a variables
« Respuesta #7 en: 8 Mayo 2007, 16:26 pm »

Perdón, Perdón! xD

La verdad es que no leí mucho lo que querias hacer pero bueno :P
Código:
<?php
  foreach ($_POST as $key => $value) {
    $$key = limpia($value);
  }
?>
No lo regresa a $_POST lo que hace es crear una variable con el mismo nombre que tiene en $_POST pero con el contenido ya filtrado.

Otra opción para lo que quieres hacer podría ser:
Código:
<?php
  foreach ($_POST as $key => $value) {
    $_POST[$key] = limpia($value);
  }
?>

Saludos ;)
En línea

Firmado.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recorriendo los elementos de una lista en un array con bucle for me da error
Programación C/C++
dairus20 5 4,809 Último mensaje 5 Marzo 2011, 13:29 pm
por dairus20
Variables de formulario y guardar en un array de sesion
PHP
MarMIX 1 11,281 Último mensaje 7 Marzo 2012, 01:47 am
por s00rk
Ayuda con variable $_POST!
PHP
iMarcSpS 3 2,374 Último mensaje 11 Junio 2012, 20:10 pm
por WHK
Trabajar con array variables
.NET (C#, VB.NET, ASP)
luis456 3 2,794 Último mensaje 21 Octubre 2014, 22:47 pm
por Eleкtro
Problema con extraer indices Array a variables
PHP
dgkrst 1 1,942 Último mensaje 10 Julio 2018, 19:42 pm
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines