TransWikia.com

Gravar JS no banco de dados com $_POST

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>

One Answer

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP