Stack Overflow em Português Asked by Anderson Oliveira on February 18, 2021
Olá.
Tenho um script PHP que executa um INSERT em um tabela do meu banco de dados.
A array $_POST[txt_mensagem] mostrada no código deveria aceitar conteúdos JS, mas ela fica vazia após o submit. Ele deveria aceitar por exemplo um simples alert(‘ola’)
Pesquisei no manual do PHP como aceitar uma cadeia de caracteres inseguras no POST mas não encontrei nada a respeito.
Agradeço antecipadamente a atenção de todos.
<?php
session_start();
include("dados_conexao.php");
if ($_POST)
{
echo 'valor: ' . $_POST['txt_mensagem'];
try { // tenta fazer a conexão e executar o INSERT
$conecta = new PDO("mysql:host=$servidor;dbname=$banco", $usuario , $senha); //istancia a classe PDO
$comandoSQL = "INSERT INTO tb_mensagens (de, para, mensagem) VALUES ('$_POST[txt_de]', '$_POST[txt_para]', '$_POST[txt_mensagem]');";
echo $comandoSQL;
$grava = $conecta->prepare($comandoSQL); //testa o comando SQL
$grava->execute(array());
} catch(PDOException $e) { // casso retorne erro
echo('Deu erro: ' . $e->getMessage());
}
}?>
Formulário
<form method="POST" >
<label for="de">Para: </label>
<input type="text" name="de">
<label for="para">Para: </label>
<input type="text" name="para">
<label for="mensagem">Mensagem: </label>
<input type="text" name="mensagem">
<button type="submit"> Enviar </button>
</form>
Em primeiro lugar, para detectar se o formulário foi postado, use:
if ($_SERVER['REQUEST_METHOD'] === 'POST'){
O nome do seu campo no formulário é mensagem
e não txt_mensagem
, por isso a linha echo 'valor: ' . $_POST['txt_mensagem'];
não funciona.
Na montagem da QUERY, além dos nomes errados, arrays em uma string devem ser incorporados entre parênteses, e também faltam as aspas nos nomes dos campos...
Substitua:
$comandoSQL = "INSERT INTO tb_mensagens (de, para, mensagem) VALUES ('$_POST[txt_de]', '$_POST[txt_para]', '$_POST[txt_mensagem]');";
Por:
$comandoSQL = "INSERT INTO tb_mensagens (de, para, mensagem) VALUES ('{$_POST['de']}', '{$_POST['para']}', '{$_POST['mensagem']}');";
Seu código PHP revisado:
<?php
session_start();
include("dados_conexao.php");
if ($_SERVER['REQUEST_METHOD'] === 'POST'){
$_POST['de'] = addslashes($_POST['de']);
$_POST['para'] = addslashes($_POST['para']);
$_POST['mensagem'] = addslashes($_POST['mensagem']);
echo 'valor: ' . $_POST['mensagem'];
try { // tenta fazer a conexão e executar o INSERT
$conecta = new PDO("mysql:host=$servidor;dbname=$banco", $usuario , $senha); //istancia a classe PDO
$comandoSQL = "INSERT INTO tb_mensagens (de, para, mensagem) VALUES ('{$_POST['de']}', '{$_POST['para']}', '{$_POST['mensagem']}');";
echo $comandoSQL;
$grava = $conecta->prepare($comandoSQL); //testa o comando SQL
$grava->execute(array());
} catch(PDOException $e) { // casso retorne erro
echo('Deu erro: ' . $e->getMessage());
}
}
?>
Qualquer dúvida ou erro, referente a essa pergunta, só comentar aqui abaixo.
Answered by Allan Andrade on February 18, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP