Fórum Formas de evitar SQL injection em PHP #433716
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
Curtir tópico
+ 0Posts
30/01/2013
William
Mas como falei existem outras maneiras...
Gostei + 0
30/01/2013
Ari Lima
Gostei + 0
01/02/2013
Danilo Gomes
Gostei + 0
01/02/2013
Marcio Araujo
Mas como falei existem outras maneiras...
esse blindValue(); é do proprio php???
Gostei + 0
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()".
Gostei + 0
02/02/2013
Marcio Araujo
$stm->bindValue(1, $nome);
coloco nas outras operações?
Gostei + 0
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 ....
Gostei + 0
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 "->"!
Gostei + 0
02/02/2013
Marcio Araujo
obrigado
Gostei + 0
27/07/2013
José
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)