Foros del Web » Programando para Internet » PHP »

consejo con uso de for en funcion

Estas en el tema de consejo con uso de for en funcion en el foro de PHP en Foros del Web. Hola a todos. Estoy trabajando con una función que limpia las variables post Código PHP: function  recoge ( $var )  {      $tmp  = (isset( $_REQUEST ...
  #1 (permalink)  
Antiguo 17/06/2012, 11:57
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 10 meses
Puntos: 9
consejo con uso de for en funcion

Hola a todos. Estoy trabajando con una función que limpia las variables post

Código PHP:
function recoge($var
{
    
$tmp = (isset($_REQUEST[$var])) ?     strip_tags(trim(htmlspecialchars($_REQUEST[$var]))) : '';
    if (
get_magic_quotes_gpc()) {
        
$tmp stripslashes($tmp);
    
$tmp mysql_real_escape_string($tmp);
        
$tmp addslashes($tmp);
        
$tmp strip_tags($tmp);
           }
    return 
$tmp;
}
$nombre recoge('variable');
echo 
$nombre
Desearía no realizar reiteradamente la llamada a la función para cada variable, por lo que había pensado en utilizar un for: primero declarando los elementos recibidos:
Código PHP:
$numero count($_REQUEST); 
Y luego realizar el for:
Código PHP:
for($i=0;$i<$numero;$i++){
//y ahora algo así para llamar a la función
$nombre recoge('variable');


Qué debería poner en recoge('variable') para luego hacer echos? Se os ocurre algo? Gracias

Última edición por charlyta; 17/06/2012 a las 11:59 Razón: error
  #2 (permalink)  
Antiguo 17/06/2012, 14:29
Avatar de iukaeru  
Fecha de Ingreso: mayo-2012
Mensajes: 127
Antigüedad: 12 años
Puntos: 12
Respuesta: consejo con uso de for en funcion

Si las variables las estás recogiendo vía POST (por ejemplo), tendrías que cambiar a:

$nombre = recoge($_POST["mi_variable"]);

Pero veo que lo que quieres es tomar todas las variables de un formulario por lo que tendrías que meterlas en un array y allí te queda la tarea para que investigues.

foreach($_POST as $nombre_campo => $valor){
$asignacion = "\$" . $nombre_campo . "='" . $valor . "';";
eval($asignacion);
}


JAJAJAJA
  #3 (permalink)  
Antiguo 17/06/2012, 15:21
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: consejo con uso de for en funcion

Cita:
Iniciado por iukaeru Ver Mensaje
Si las variables las estás recogiendo vía POST (por ejemplo), tendrías que cambiar a:

$nombre = recoge($_POST["mi_variable"]);

Pero veo que lo que quieres es tomar todas las variables de un formulario por lo que tendrías que meterlas en un array y allí te queda la tarea para que investigues.

Código PHP:
foreach($_POST as $nombre_campo => $valor){
   
$asignacion "\$" $nombre_campo "='" $valor "';";
   eval(
$asignacion);

JAJAJAJA
FAIL, eval JAMAS debe ser utilizado con variables provenientes del navegador/cliente...

Con respecto al problema, lo mejor es que programes una función recursiva....

Código PHP:
Ver original
  1. function recoge($var)
  2. {
  3.         if (!is_array($var)) {
  4.                 $tmp = (isset($_REQUEST[$var])) ? strip_tags(trim(htmlspecialchars($_REQUEST[$var]))) : '';
  5.                 if (get_magic_quotes_gpc()) {
  6.                         $tmp = stripslashes($tmp);
  7.                         $tmp = mysql_real_escape_string($tmp);
  8.                         $tmp = addslashes($tmp);
  9.                         $tmp = strip_tags($tmp);
  10.                 }
  11.         }else {
  12.                 $tmp = array();
  13.                 foreach($var as $val) {
  14.                         $tmp[] = recoger($val);
  15.                 }
  16.         }
  17.  
  18.     return $tmp;
  19. }
  20.  
  21. echo '<pre>';
  22. var_dump(recoger($_POST));
  23. echo '</pre>';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 18/06/2012, 11:33
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 10 meses
Puntos: 9
Respuesta: consejo con uso de for en funcion

Hola! y gracias por responder!

pues el siguiente código no me parece el más adecuado:
Código PHP:
function recoge($var
{
        if (!
is_array($var)) {
                
$tmp = (isset($_REQUEST[$var])) ? strip_tags(trim(htmlspecialchars($_REQUEST[$var]))) : '';
                if (
get_magic_quotes_gpc()) {
                        
$tmp stripslashes($tmp);
                        
$tmp mysql_real_escape_string($tmp);
                        
$tmp addslashes($tmp);
                        
$tmp strip_tags($tmp);
                }
        }else {
                
$tmp = array();
                foreach(
$var as $val) {
                        
$tmp[] = recoger($val);
                }
        }
 
    return 
$tmp;
}
 
echo 
'<pre>';
var_dump(recoger($_POST));
echo 
'</pre>'
mi intención era realizar llamar a la función para limpiar y utilizar las variables con un simple:
Código PHP:
recoge ($_REQUEST[var]);
echo 
$nombre;
echo 
$apellido
algo así... es posible??? tu code me daba fallo:

Código:
Undefined variable: tmp in
  #5 (permalink)  
Antiguo 18/06/2012, 11:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: consejo con uso de for en funcion

Tendrías que hacer algo que no es muy bueno (jugar con globales) pero pues se puede hacer, por ejemplo:
Código PHP:
Ver original
  1. function recoge($globalVar) {
  2.        // limpias las variables, idealmente usando array_walk
  3.        foreach ($globalVar as $var => $value) {
  4.                 global $$var;
  5.                 $$var = $value;
  6.        }
  7. }
  8.  
  9. recoge($_POST);
  10. echo $nombre;

Saludos.
  #6 (permalink)  
Antiguo 18/06/2012, 12:02
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 10 meses
Puntos: 9
Respuesta: consejo con uso de for en funcion

Entonces es preferible hacer esto?
Código PHP:
function recoge() {
foreach (
$_REQUEST as $key => $value)
{

$value mysql_real_escape_string$value );
$value addslashes($value);
$value strip_tags($value);
if(
$value != ""){}
//echo $key. ' - '.$value.'</br>';

}}
recoge();
echo 
$_POST['post-title']; 
  #7 (permalink)  
Antiguo 18/06/2012, 12:23
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 10 meses
Puntos: 9
Respuesta: consejo con uso de for en funcion

Pues muchas gracias por la aclaración del concepto!!! Finalmente seré un clásico y seguiré utilizando este método:

Código PHP:
function clean($str)
    {
    
$str = @trim($str);
    if(
get_magic_quotes_gpc())
    {
    
$str stripslashes($str);
    }
    return 
mysql_real_escape_string($str); // send back clean
    
}
function 
recoger() {
    
foreach (
$_POST as $key => $value)
{

$key clean($key);
$value clean($value);
}

}
recoger();
echo 
$_POST['post-title']; 

Etiquetas: consejo, funcion, html, mysql, variables
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 00:24.