Sempre gostei de fazer funções recursivas e quando posso tento utilizá-las pois acho charmosas e economizam código mas elas requerem um pouco mais de raciocíonio e atenção devido a facilidade de se criar loop/laço infinito.
A primeira função recursiva você nunca esquece. Eu lembro que a minha primeira foi uma implementação de um rm -rf em PHP.
A função recursiva que está logo abaixo é útil quando se tem um site vulnerável a Sql Injection por falta de crítica dos dados ou por causa da diretiva register_globals estar habilitada. Eu fiz e nunca mais precisei dar manutenção nessa função mas se precisarem é só falar.
<?php function escape($var) { if (!is_array($var)) { if(get_magic_quotes_gpc() == 1) $var = stripslashes($var); return mysql_escape_string($var); } foreach ($var as $chave => $valor) $var[$chave] = escape($valor); return $var; } ?>
Seu funcionamento é muito simples.
1 - Receber Argumento.
2 - Se o argumento não for um array ele deverá ser escapado e retornado.
3 - Caso contrário o elemento é um array.
3.1 - Logo a função escape() deverá ser chamada para cada elemento do array.
3.2 - O resultado da chamada da função escape() deverá ser salvo na posição em que estava o elemento.
3.3 - O array deverá ser retornado com os seus elementos escapados.
O modo de usar essa função é muito simples e é orientado que seja chamada antes das queries que recebem valores externos.
<?php // Escapando variáveis passadas por GET $_GET = escape($_GET); // Escapando variáveis passadas por POST $_POST = escape($_POST); ?>
Exemplo de array escapado com essa função:
array ( 'select' => array ( 0 => 'car', 1 => '1 or \\\'\\\'', ), )
Essa função permite a utilização de aspas simples(’) e aspas duplos(”) nos campos do formulário sem que isso interfira no funcionamento do script.
Excelente função Noel.
Seu rm -fr ainda é muito útil pra quem tem o seu script e eu mesmo o utilizei diversas vezes.
Continuamos acompanhando o seu blog.
[]’s
Comments RSS TrackBack Identifier URI
Leave a comment






2 Comments