Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve, galera!
Estou com uma dúvida de quando e como utilizar **extract($_POST)**
Quando utilizo uma conexão PDO (PHP Data Object) por ser segura não preciso utilizar técnicas de **SQL INJECTION** (pelo menos foi isso que me falaram quando estudei kkkk) declarando por exemplo ***$nome*** direto. Mas e quando estiver utilizando uma outra conexão que precise passar antes por uma função SQL INJECTION antes de fazer o SELECT, INSERT etc...
Faço assim:
$nome1 = $funcoes->limpaSQL($nome);
Obs: $nome é o que vem do form...
Nunca utilizei EXTRACT e lendo um post de outro fórum todos falam que é mais rápido o desenvolvimento, mas sinceramente não vi muita vantagem... ai resolvi dar uma perguntada aos mestre do Imaster.
>
function getPost( $key ){
return isset( $_POST[ $key ] )? filter($_POST[ $key ]) : null;
}
sendo a função filter(), a responsável por limpar a string antes de você enviar para o banco.
E então usaria sempre assim:
$nome = getPost('nome');
Exemplo:
function filter($query, $formUse=true){
$query = preg_replace("/(select|insert into|delete|truncate|from|inner join|inner left|value|where|order by|drop table|show tables|#|\*|--|\\\\)/i","",$query);
$query = trim($query);
$query = strip_tags($query);
if(!$formUse || !get_magic_quotes_gpc()){
$query = addslashes($query);
}
return $query;
}
function getPost($key){
return isset($_POST[$key])? filter($_POST[$key]) : null;
}
if(isset($_POST['envia'])){
echo $nome = getPost('nome');
}
<form action="" method="post">
<label>Nome</label>
<input id="nome" name="nome" title="nome" type="text" />
<input name="envia" type="submit" />
</form>
Acredito que era mais ou menos assim que o William Bruno pensou...
Ou você poderia fazer uma função sanitizadora para operar sobre qualquer tipo de informação, não apenas $_POST:
function filter( &$data ) {
if( is_array( $data ) ) {
foreach( $data as $d ) {
filter( $d );
}
} else {
// Trata os dados, da forma que achar mais conveniente
}
}
Pelo fato de a função receber um argumento por referência (aquele & antes da variável), a mesma variável que você passar já estará sanitizada:
filter( $_POST );
// $_POST['nome'], por exemplo, já estará tratada e pode ser usadaOk! Bruno Augusto...
Valew
Ok, mas então qual é a dúvida ?
Eu não usaria o extract.
Eu faria algo assim:
sendo a função filter(), a responsável por limpar a string antes de você enviar para o banco.
E então usaria sempre assim:
Note que o extract(), te faz trabalhar de uma forma muito parecida com o register_globals(), que é uma péssima prática. E por esse motivo, não te indico usar.