Foros del Web » Programando para Internet » PHP »

htmlspecialchars + arrays

Estas en el tema de htmlspecialchars + arrays en el foro de PHP en Foros del Web. Hola, Supongamos que recogo los valores de un formulario y los meto en un array: Código PHP: $form  = array(     "nombre"  =>  $_POST [ 'nombre' ...
  #1 (permalink)  
Antiguo 08/04/2009, 02:05
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 2 meses
Puntos: 7
htmlspecialchars + arrays

Hola,

Supongamos que recogo los valores de un formulario y los meto en un array:

Código PHP:
$form = array(
   
"nombre" => $_POST['nombre'],
   
"edad" => $_POST['edad'],
   
"comentario" => $_POST['comentario']
); 
Y como medida de seguridad, una de las cosas que hago, es tratar ambos datos recogidos.

Código PHP:
$comentario htmlspecialchars($form['comentario']); 
Y sí funciona. Pero tengo que ir formateando array por array. Mi pregunta es si no hay una forma de hacerlo global. Algo así como:

Código PHP:
htmlspecialchars($form); // Warning, array given... ya sabéis el error que da.. 
Y que formatee todo el array entero.
  #2 (permalink)  
Antiguo 08/04/2009, 02:38
 
Fecha de Ingreso: diciembre-2005
Mensajes: 39
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: htmlspecialchars + arrays

No soy muy bueno en PHP que digamos, la solucion que se me ocurre es hacer un for each del array :D
  #3 (permalink)  
Antiguo 08/04/2009, 06:46
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: htmlspecialchars + arrays

Pues, eso mismo. Hacer una funcion que recorra el array y valla aplicando htmlspecialchars() a cada uno de sus elementos. Hasta podrias hacerla recursiva.

foreach($array as $key => $value) {
$array[$key] = htmlspecialchars($value);
}
  #4 (permalink)  
Antiguo 08/04/2009, 11:14
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: htmlspecialchars + arrays

Hola,

Gracias Kleimore, gracias Ronruby.
Probaré y os cuento qué tal.

Un saludo!
  #5 (permalink)  
Antiguo 08/04/2009, 11:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: htmlspecialchars + arrays

Código PHP:
array_map('htmlspecialchars'$array); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 14/04/2009, 02:31
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: htmlspecialchars + arrays

Hola,

Cita:
Iniciado por pateketrueke Ver Mensaje
Código PHP:
array_map('htmlspecialchars'$array); 
Así, como me explicas, me imprime directamente en pantalla:

Código HTML:
array_map("htmlspecialchars", $postvars);
  #7 (permalink)  
Antiguo 14/04/2009, 12:57
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: htmlspecialchars + arrays

Cita:
Así, como me explicas, me imprime directamente en pantalla:
Huh? Pon el codigo dentro de etiquetas PHP <?php y ?>
  #8 (permalink)  
Antiguo 14/04/2009, 15:51
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: htmlspecialchars + arrays

Hola,

Nada, nada. Ya está solucionado. Utilicé -como me indicó Ronruby- un foreach y va de maravilla.

Gracias a todos,
Un saludo.
  #9 (permalink)  
Antiguo 14/04/2009, 16:06
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: htmlspecialchars + arrays

Muy buenas d-Art,
Si no fuera mucha la molestia según tu ejemplo, me interesa este tema asi que podrias compartir como fué la solución.

Gracias,
  #10 (permalink)  
Antiguo 14/04/2009, 16:10
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: htmlspecialchars + arrays

Hola,

Claro que no tí@, para eso estamos. He aquí lo que usé (Ejemeplo de Ronruby):

Código PHP:
// Recogo los campos con el array
$form = array(
   
"nombre" => $_POST['nombre'],
   
"mensaje" => $_POST['mensaje']
);

// Recorro todo el array formateando los caracteres html
foreach($form as $key => $value){
   
$form[$key] = htmlspecialchars($value);

  #11 (permalink)  
Antiguo 14/04/2009, 16:23
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: htmlspecialchars + arrays

Agradesco por compartir d-ART, esta muy entendible.
Asi mismo quisiera tocar un puntito que tiene alguna relación con tu tema...es sobre el uso del htmlspecialchars: 1. En que momento usarlo (ojo k entiendo k la usas para el campo k recojo de la bd) 2. Y xk no usas htmlentities (k de diferencias podria haber) 3. Y en mi pagina yo uso lo siguiente para recoger el campo: <?php echo utf8_decode($row['producto']) ?>.

Mil disculpas por estas preguntas a tu post...gracias.
  #12 (permalink)  
Antiguo 14/04/2009, 16:28
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: htmlspecialchars + arrays

Bueno, a ver si las entendi todas:

1. La puedes usar cuando insertas los datos, o cuando los recuperas. Tu decides como deseas hacerlo, yo acostumbro a transformar los caracteres cuando los recupero de la base de datos (depende el caso).

2. htmlspecialchars convierte solo ciertos caracteres a sus entidades HTML, mientras que htmlentities convierte TODOS.
http://www.php.net/manual/es/functio...ecialchars.php
http://www.php.net/manual/es/function.htmlentities.php

3. xD No es una pregunta ...
  #13 (permalink)  
Antiguo 14/04/2009, 16:38
Avatar de dART  
Fecha de Ingreso: enero-2009
Ubicación: Madrid
Mensajes: 246
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: htmlspecialchars + arrays

Hola,

Se me adelantó Ronruby, jeje. Ahi tienes sus respuestas.
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 20:15.