Bem, eu sou algo "exagerado" com as validações de dados. Garanto sempre que no meu trabalho só passa mesmo aquilo quero e o que é correcto.
Quando digo exagerado, obviamente que tenho de colocar aspas na palavra, porque a segurança nunca é demais.
Até aparecer o PHP 5, fazíamos a validação usando basicamente expressões regulares, como preg_match() e/ou ereg() (em desuso), de facto continuo a usar bastantes expressões regulares e adoro usá-las para validar determinados dados.
A verdade é que com o PHP 5 trouxe-nos um conjunto de novas funções que nos poupam o uso de expressões regulares para aquelas validações mais comuns, o que resulta num código mais limpo, sem demasiadas expressões regulares.
O PHP a partir da versão 5.2.0 já vem com esta função por defeito, portanto se vos der erro quando tentarem usar a função filter_var(), exijam a actualização do PHP.
Hoje vou falar-vos da função filter_var(), usando para tal alguns exemplos.
De notar que estes são exemplos básicos e apenas de validação, pois a função filter_var() é bastante flexível, mas vou deixar os exemplos mais complexos talvez para outro tutorial, para já dedique-mo-nos à validação:
<?php
/**
* @author =IceBurn=
* @copyleft 2010
*/
// Endereço de E-mail
echo filter_var( 'email@dominio.com', FILTER_VALIDATE_EMAIL ) !== false ? 'Válido' : 'Incorrecto';
// URL
echo filter_var( 'http://maistrafego.pt/', FILTER_VALIDATE_URL ) !== false ? 'Válido' : 'Incorrecto';
// Número Inteiro
echo filter_var( '22', FILTER_VALIDATE_INT ) !== false ? 'Válido' : 'Incorrecto';
// Float
echo filter_var( '100.50', FILTER_VALIDATE_FLOAT ) !== false ? 'Válido' : 'Incorrecto';
// Boolean
echo filter_var( 'true', FILTER_VALIDATE_BOOLEAN ) !== false ? 'Válido' : 'Incorrecto';
// IPV4
echo filter_var( '120.120.120.120', FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) !== false ? 'Válido' : 'Incorrecto';
// IPV6
echo filter_var( '2001:0db8:85a3:08d3:1319:8a2e:0370:7344', FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) !== false ? 'Válido' : 'Incorrecto';
// Expressão regular
echo filter_var( 'Vai retornar válido', FILTER_VALIDATE_REGEXP, array( 'options'=>array( 'regexp' => '/^[à-úa-z\s]+$/i' ) ) ) !== false ? 'Válido' : 'Incorrecto';
?>
E pronto, agora já ninguém tem desculpa para não fazer validações básicas aos dados submetidos. Obviamente que devem ter o cuidado de inserir cuidadosamente os dados na Base de Dados se for o caso, usando a função mysql_real_escape_string(), mas nunca usem addslashes(), mal aplicada é um erro tremendo que vos deixa vulneráveis a intrusões.
Espero que tenham gostado.