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: 16 años, 8 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, $asunto, utf8_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: 17 años, 7 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: 16 años, 8 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 08:33.