Foros del Web » Programando para Internet » PHP »

Filtrar variables en un formulario

Estas en el tema de Filtrar variables en un formulario en el foro de PHP en Foros del Web. Hola a tod@s, Hice un formulario hace poco empezando apenas con php. Quedó muy bien y funciona correctamente. Ocurre que me recomendaron filtrar las variables ...
  #1 (permalink)  
Antiguo 31/03/2012, 16:05
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 2 meses
Puntos: 2
Filtrar variables en un formulario

Hola a tod@s,

Hice un formulario hace poco empezando apenas con php. Quedó muy bien y funciona correctamente. Ocurre que me recomendaron filtrar las variables para evitar inyecciones. No me gustaría dejarlo para más adelante porque sino quedará en el olvido y luego podría ser tarde.

El código es este:

Código PHP:
<?php
$nombre 
$_POST['nombre'];
$apellidos $_POST['apellidos'];
$dni $_POST['dni'];
$mail $_POST['mail'];
$telefono $_POST['telefono'];
$direccion $_POST['direccion'];
$ip $_SERVER['REMOTE_ADDR'];
  if( isset( 
$_POST['condiciones'] ) ) { 
    
// El cliente aceptó las condiciones 
  
} else { 
    
// El cliente no aceptó las condiciones 
  


$header 'From: ' $mail " \r\n";
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje "Este mensaje fue enviado por " $nombre ", con apellidos " $apellidos " \r\n";
$mensaje .= "Condiciones: " $_POST['condiciones'] . " \r\n";
$mensaje .= "Su e-mail es: " $mail " \r\n";
$mensaje .= "Dni: " $_POST['dni'] . " \r\n";
$mensaje .= "Teléfono: " $_POST['telefono'] . " \r\n";
$mensaje .= "Dirección: " $_POST['direccion'] . " \r\n";
$mensaje .= "Su ip: " $ip " \r\n";
$mensaje .= "Enviado el " date('d/m/Y'time());

$para '[email protected]';
$asunto 'Cliente nuevo';

mail($para$asuntoutf8_decode($mensaje), $header);

header('Location: http://www.web.es'); 

?>
¿Alguna idea o recomendación para crear los filtros? Estoy comiéndome manuales, veré si saco algo por mi cuenta. Gracias de antemano,

Saludos.
  #2 (permalink)  
Antiguo 31/03/2012, 16:12
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Filtrar variables en un formulario

La mejor manera de filtrar variables es con expreciones regulares, capaz es avanzado para tu nivel.
Mientras podrias ir definiendo que contiene cada variable:

Por ejemplo Nombre, Apellido
Se entiende que no tiene numeros o simbolos puedes filtrarlo con: ctype_alpha().

Podes chequear:

ctype_ alnum
ctype_ alpha
ctype_ cntrl
ctype_ digit
ctype_ graph
ctype_ lower
ctype_ print
ctype_ punct
ctype_ space
ctype_ upper
ctype_ xdigit
is_numeric

Te aparecera a izquierda cuando entres aqui ctype_alpha().

PD: cuando filtres todo, chequea el codigo, ya que si prestas atencion, pones

$telefono = $_POST['telefono'];

Y despues:

$mensaje .= "Teléfono: " . $_POST['telefono'] . " \r\n";
__________________
Mono programando!
twitter.com/eguimariano
  #3 (permalink)  
Antiguo 12/05/2012, 01:46
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Filtrar variables en un formulario

Retomando el tema...me parece avanzado la verdad! pero te lo agradezco mucho.

¿Qué tal si utilizo esto?

Código PHP:
$correo=$_POST['correo_electronico'];
if(!
filter_var($correo,FILTER_VALIDATE_EMAIL))
echo 
"El correo introducido no es válido"
Lo he visto buscando por ahí...me parece sencillo la verdad. Y si con eso se filtra bien pues listo :)

Saludos!

Etiquetas: filtrar, formulario, 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 06:36.