Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal.Eu tenho um form com muitos campos input text e textarea. Gostaria de saber como posso evitar que alguem entre com comandos html e outros que possam danificar o meu banco de dados.Obrigado a todos que responderem
para evitar comandos html use strip_tags(), comandos html pode nao danificar o banco mas pode danificar todo seu layout da sua pagina
e evite tbm comandos sql injection , tem uma função que eu fiz no laboratorio de scripts
Como eu havia dito eu tenho um form com muitos campos input text e textarea que são utilizados.Eu vi uma função que você Fabyo colocou aqui... function anti_injection($txt){$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;return preg_replace("@(--|\#|\*|;|=)@s", "", $txt);}Utilizando ela para receber todos os dados dos meus campo input texts e textareas, quando estes dados são para serem inseridos e quando forem utilizados para uma consulta, resolve o meu problema?E se o usuário entrar com dados como comandos html é só usar strip_tags() para retirar os dados quando for "mostrar" na tela?
sim é só usar strip_tags()
Incrementando... Banco de dados é texto... Mas você pode por HTML e usar a função htmlspecialchars();[]'s
só para esclarecer a função strip_tags elimina as tags html, a htmlspecialchars apenas converte para HTML entities
exemplo:
echo htmlspecialchars("<b>Teste</b>");
resultado = [b]Teste[/b]
echo strip_tags("<b>Teste</b>");
resultado = Teste
Então Fabyo é só usar esta sua função anti_injection em todos os meu campos input texts e textareas?Isso resolve o problema?
Exemplo <input type='text' name='bla'><?phpstrip_tags($_POST['bla']);?>você pode processar as strings assim[]'sOlá Fabyo eu tentei usar esta sua função...function anti_injection($txt){$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;return preg_replace("@(--|\#|\*|;|=)@s", "", $txt);}Mas infelizmente não funciona. Acho que é a versão do php...você tem outra que faça a mesma coisa que esta?
get_magic_quotes_gpc
(PHP 3>= 3.0.6, PHP 4 , PHP 5)
addslashes
(PHP 3, PHP 4 , PHP 5)
preg_replace
(PHP 3>= 3.0.9, PHP 4 , PHP 5)
como você mesmo viu as função nao tem problema nenhum sobre a versao do php
mas fala ai que erro que deu, ou porque você acha que nao funcionou
Esta dando este erroFatal error: Call to undefined function: anti_injection() in /home/votarcerto/www/boleto/boletos.php on line 6
você colocou a função junto no mesmo script ou esta incluindo ela ?
Esta numa include...Por que?
porque esse erro é porque o php nao esta encontrando a função, verifica se esta tudo certo se a função esta realmente incluida ou se o nome da função foi digitado corretamente etc...
Estranho...Estou fazendo assiminclude "../funcoes.php";A pagina onde quero usar a função esta numa pasta chamada boleto.Fatal error: Call to undefined function: anti_injection() in /home/votarcerto/www/boleto/boletos.php on line 13O que estou fazendo de errado?Estou fazendo do mesmo modoinclude "../conecta_meusite.inc";e consigo acessar este arquivo.Por que não estou conseguindo com a página das funções?
a função anti_sqlinjection esta nesse script "funcoes.php" ?, e esse script esta nessa pasta mesmo onde você esta chamando ele?
esse erro é porque o php nao esta encontrando a função
Não Fabyo ele esta no diretório raiz
Olha que eu saiba mesmo que alguém insira comandos html dentro de um text que vá para o bando de dados isto não danifica teu banco porque o campo entende que todo o conteudo que está contido nele é texto e não reconhece comandos. Mas se dentro de um campo texto existir comandos e você tirar de dentro do banco ai sim dependendo se for html oou até algum script se colocar em um arquivo irá funcionar.Portanto a informação que ir para o banco é simplesmente texto.Falou!