Um dos principais objectivos ao criar formulários PHP é mantê-los seguros e protegidos contra spammers e programas automatizados. Com a quantidade de spam que o Akismet detém todos os dias, não preciso de vos lembrar sobre a importância de manter os formulários seguros. Uma vez que 90 e muitos % dos meus formulários são via POST, já despendi algum tempo a desenvolver algumas protecções e formas de debug.
Uma função que costumo utilizar para manter o controlo dos formulários POST é a minha função imprimir_xml(). A função recebe um array de dados (no meu caso, $ _POST), percorrendo todos os valores e transforma cada valor no formato XML, a partir do qual, posso guardar o XML num ficheiro ou colocar o XML numa Base de Dados.
A função pode ser usada em qualquer array ($ _SESSION e $ _GET, que também são boas opções!).
Código PHP
/* imprimir o conteúdo de uma url */
function imprimir_xml($arr, $wrapper = 'dados', $ciclo = 1)
{
//variáveis úteis
$break = "\n";
//construir o conteudo
if($ciclo == 1)
{
$output = '<?xml version="1.0" encoding="UTF-8" ?>'.$break;
}
$output.= tabelar_dados($ciclo - 1).'<'.$wrapper.'>'.$break;
foreach($arr as $key => $valor)
{
if(!is_array($valor))
{
$output.= tabelar_dados($cuclo).'<'.htmlspecialchars($key).'>'.$valor.'</'.htmlspecialchars($key).'>'.$break;
}
else
{
$output.= imprimir_xml($valor,$key,$ciclo + 1).$break;
}
}
$output.= tabelar_dados($ciclo - 1).'</'.$wrapper.'>';
//retornar o output
return $output;
}
/* Tabelar os dados */
function tabelar_dados($numero_tabelas)
{
for($x = 1; $x <= $numero_tabelas; $x+)
{
$return.= "\t";
}
return $return;
}
De notar que esta função é usada de forma recursiva quando a informação é um array.
Como Usar
$_POST = array(
'primeiro_nome'=>'Carlos',
'ultimo_nome'=>'Gonçalves',
'site_url'=>'http://cgoncalves.com',
'linguagens_programacao'=>array('python','php','c#','asp'),
'titulo'=>'Web Developer'
);
echo imprimir_xml($_POST);
O Resultado
<?xml version="1.0" encoding="UTF-8"> <data> <primeiro_nome>Carlos</primeiro_nome> <ultimo_nome>Gonçalves</ultimo_nome> <site_url>http://cgoncalves.com</site_url> <linguagens_programacao> <0>python</0> <1>php</1> <2>c#</2> <3>asp</3> </linguagens_programacao> <titulo>Web Developer</titulo> </data>

Tenho muitas opiniões/pontos de vista controversos, e não tenho medo de os deitar cá para fora. Desde a minha
(3 votos, média: 4,33 num total de 5)





