Formas de evitar SQL injection em PHP
30/01/2013
0
para evitar SQL injection só basta eu usar a função strip_tags() e a função trim() é o bastante ?
como posso evitar uma invação no meu site? estou usando PHP e MySQL ...
Ari Lima
Posts
30/01/2013
William
Mas como falei existem outras maneiras...
01/02/2013
Danilo Gomes
01/02/2013
Marcio Araujo
Mas como falei existem outras maneiras...
esse blindValue(); é do proprio php???
01/02/2013
William
O método bindValue() faz parte do módulo PDO do PHP.
Exemplo simples:
$nome = "William"; $pdo = new PDO("mysql:host=localhost; dbname=meu_banco; charset=utf8;", "root", "123456"); $stm = $pdo->prepare('INSERT INTO tabela (nome)VALUES(?)'); $stm->bindValue(1, $nome); if ($stm->execute()){ print "Registro incluído com sucesso!"; }else{ print "Erro ao incluir registro!"; }
Esse foi um exemplo bem básico de "INSERT" passando valor via método "bindValue()".
02/02/2013
Marcio Araujo
$stm->bindValue(1, $nome);
coloco nas outras operações?
02/02/2013
William
SELECT:
$id = 1; $stm = $pdo->prepare("SELECT * FROM table where id = ?"); $stm.bindValue(1, $id); $stm->execute();
INSERT:
$nome = "João"; $fone = "99999999"; $stm = $pdo->prepare("INSERT INTO tabela (nome, telefone)VALUES(?, ?)"); $stm.bindValue(1, $nome); $stm.bindValue(2, $fone); $stm->execute();
UPDATE:
$id = 1; $nome = "Pedro"; $fone = "88888888"; $stm = $pdo->prepare("UPDATE tabela SET nome = ?, telefone = ? WHERE id = ?"); $stm.bindValue(1, $nome); $stm.bindValue(2, $fone); $stm.bindValue(3, $id); $stm->execute();
DELETE:
$id = 1; $stm = $pdo->prepare("DELETE FROM tabela WHERE id = ?"); $stm.bindValue(1, $id); $stm->execute();
Observe que uso o bindValue() para passar parâmetros para as instruções SQL, cada sinal de "?" é aguardado um parâmetro. Passo os
parâmetros na mesma ordem em q eles aparecem na instrução.
Se vc quiser ainda pode passar o type que será usado no parâmetro (esse parâmetro é opcional), nesse exemplo seria tipo string:
$stm.bindValue(1, $nome, PDO::PARAM_STR);
Existe ainda o bindParam(), nesse vc pode passar até tamanho do parâmetro que será aceito, pessoalmente não tenho costume de usá-lo.
Bom basicamente é isso ....
02/02/2013
William
$stm.bindValue(x, y);
o correto é:
$stm->bindValue(x, y);
No PHP não se usa "." para acessar os métodos e sim "->"!
02/02/2013
Marcio Araujo
obrigado
27/07/2013
José
Clique aqui para fazer login e interagir na Comunidade :)