Novidades100 - Dicas de Internet e Computador
CulináriaInternetDetonadosWallpapersPoesiasVideos

Criar Formulários de Comentários com Php, MySql e PhpMyAdmin

Exibir Formulários de Contato no Seu Site Utilizando Php e MySql

Importante: Conteúdo atualizado devido a extensão mysql ter ficado obsoleta, por isso não estava funcionando corretamente, atualizamos para a extensão mysqli, voltando este recurso a trabalhar perfeitamente.
Agora implementado com algumas alterações profundas. Sabendo que o usuário logo que envia seu comentário é imediatamente exibido no seu site, inserimos alguns filtros de palavras que não seriam convenientes de serem exibidas, além de a não aceitação de links, que sabemos muitos por aí não perdem uma chance de fazê-lo. Melhoramos também a funcionalidade do formulário dinâmico. Com as alteração serão enviados Email's tanto para o usuário que comentou, quanto para o administrador do Site para ele analise e decida-se por excluir ou manter o comentário no Banco de Dados. Os Email's terão uma headers completa, com todos os campos necessário para um bom desempenho. Click no botão abaixo e veja o formulário em funcionamento.

Primeiramente vamos a criação da tabela comentarios no seu Banco de Dados.
Copie o código abaixo e salve-o em Bloco de Notas como criar_tabela.php. Salve-o em qualquer diretório do seu site, depois é só executá-lo no navegador, digitando seu url, e estará criada sua tabela.
Atenção: Faça as alterações necessárias, inserindo seus dados corretos do seu usuário do Bancos de Dados.

// CONECTAR AO SERVIDOR MYSQL

<?
$host="server_name";
$username="user_name";
$password="user_password";
$db_name="user_db_name";
$con = mysqli_connect($host, $username, $password, $db_name);
if (!$con) {
die("Falha na Conexão: " . mysqli_connect_error());
}

// CRIAR TABELA

$sql = "CREATE TABLE IF NOT EXISTS comentarios (
id int(11) NOT NULL AUTO_INCREMENT,
name char(30) NOT NULL,
email char(30) NOT NULL,
DATA date NOT NULL,
mensagem text NOT NULL,
PRIMARY KEY (id))";
$result = mysqli_query($con, $sql);
if(!$result) {
die("Falha ao Criar Tabela: " . mysqli_error());
} else {
}
?>

Formulário

A segunda parte é bem mais simples. Copie o código a seguir e salve em alguma pasta dentro da raíz do site (Para que não haja nenhum contratempo, crie uma pasta na raíz do site e denomine-a de formulários. Salve o arquivo como formulário.html - É bom que salve todos os outros arquivos nesta mesma pasta.

// CRIAR FORMULÁRIO HTML

<html>
<head>
<title>FORMULÁRIO </title>
<style type="text/css">
body{width:98%;height:auto;padding:1%;margin:0px;overflow:auto;}
input{border:1px solid #aaa;margin:5px;margin-left:0px;padding:5px;}
input.enviar{font-size:150%;margin-top:10px;margin-left:0px;}
textarea{border:1px solid #aaa;margin:5px;margin-left:0px;padding:5px;}
div.exibir_teste{width:98%;height:auto; text-align:left;font-family:arial;}
h2{color:009;text-transform:uppercase;font-family:arial;}
b{color:#777;}
</style>
</head>
<body>
<div class="exibir_teste"><br>
<h1>Enviar Mensagem</h1>
<form name="form" method="POST" action="resposta.php"><br>
<input type="text" name="name" placeholder="Digire seu Nome" size="40" maxlength="40"><br>
<input type="text" name="email" placeholder="Digire seu Email" size="40" maxlength="40"><br>
<textarea name="mensagem" placeholder="Digire sua Mensagem" cols="30" rows="4" maxlength="250"></textarea><br>
<input type="submit" value="enviar"><br>
</form><br>
</div><br>
</body>
</html>

Resposta Php

Agora a última etapa da criação de formulários dinâmicos.
Copie o script a seguir e salve-o como resposta.php. Salve nas mesma pasta em que foi colocado os outros arquivos.

<html>
<head><title>Formulário </title>
<meta name="robots" content="noindex" >
<style type="text/css">
body{width:98%;height:auto;padding:1%; margin:0px;overflow:auto;}
input{border:1px solid #aaa;}
textarea{border:1px solid #aaa;}
div.exibir_teste{width:98%;height:auto; text-align:left;font-family:arial;}
h2{color:009;text-transform:uppercase;font-family:arial;}
b{color:#777;}
</style>
</head>
<body>
<?

// Altere Todos os Campos que Estão na Cor Verde para seus Próprios Dados.

// VARIÁVEIS NECESSÁRIAS DE RESPOSTAS AOS CAMPOS DO FOMULÁRIO HTML

require_once "criar_tabela.php";
include "form.html";
$ip = $_SERVER['REMOTE_ADDR'];
$titulo = "Formulario de Contato";
$mail_admin = "seu_email_válido@dominio.com";
// Palavras que Você pode Restringir, Impedindo que Sejam Enviadas (Altere os Valores e Adicione Quantas Mais Quiser).
$palavras = "/(palavrão1| palavrão2|palavrão3|ddd|eee| fff|ccc)/";
// Impedir que Links Sejam Adicionados ao Formulário.
$links = "/(http:|a href=)/";
$title = "Fazer um Comentario";
$nome = $_POST ['name'];
$email = $_POST ['email'];
$mensagem = $_POST['mensagem'];
$data = date ('Y-m-d');

// HEADER DOS EMAILS QUE SERAO ENVIADOS AO USUARIO E AO ADMINISTRADOR DO SITE

// Aqui você alterar os campos em verde para o email configurado no seu servidor, ou seja, o email do seu Site.
$headers_user = implode ("\n",array ("From:Usuario<seu_servidor@seu_servidor.com>","Reply-To:$email","Subject:$title","Return-Path:$mail_admin","MIME-Version:1.0","X-Priority:3","Content-Type:text/html;charset=UTF-8"));
$headers_admin = implode ("\n",array ("From:Admin<seu_servidor@seu_servidor.com>","Reply-To:$mail_admin","Subject:$titulo","Return-Path:$mail_admin","MIME-Version:1.0","X-Priority:3","Content-Type:text/html;charset=UTF-8"));

// CONDIÇ&Oatilde;ES PARA ENVIO DO FORMULÁRIO

// Todos os Campos Serão Obrigatoriamente Preenchidos.

if ($nome == null) {
echo "<b>Você precisa inserir seu nome</b>";
exit();
}
if ($email == null) {
echo "<b>Você precisa inserir seu email</b>";
exit(); }
if ($mensagem == null) {
echo "<b>Você precisa inserir seu comentãrio</b>";
exit();
}
if (preg_match($palavras, implode ($_POST))) {
echo "<b>Você precisa melhorar seus termos</b>";
exit();
}
if (preg_match($links, implode ($_POST))) {
echo "<b>Você não pode adicionar links aqui</b>";
exit();
}

// CORPO DOS EMAILS ENVIADOS AO USUÁRIO E AO ADMINISTRADOR DO SITE

$inserir = "INSERT INTO comentarios (name, email, data, mensagem) VALUES('$nome', '$email', '$data', '$mensagem')";
if (mysqli_query($con, $inserir)) {
// Mensagem que Será Enviada ao Usuário Depois do Comentário.
$mensagem_user = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
<html>
<head><title>".$title."</title>
<style type='text/css'>
body{width:96%;text-align:left;margin:0px;padding:1%;}
h1{font-size:320%;color:#008;font-family:impact;}
p, ul, a{font-size:130%;text-decoration:none;line-height:160%;}
b{color:#004;}
</style>
</head>
<body>
<p>Ola<b> ".$nome."</b>, obrigado pelo <b>Contato</b>.</p>
<hr><h2>Links Recomendados</h2>
// Links Interessantes do Seu Site Enviados no Email - Substitua os links abaixo pelos seus Próprios.
<ul>
<li><a href='seusite.com/pagina1'>Pagina 1</a></li>
<li><a href='seusite.com/pagina2'>Pagina 2</a></li>
<li><a href='seusite.com/pagina3'>Pagina 3</a></li>
<li><a href='seusite.com/pagina4'>Pagina 4</a></li>
<li><a href='seusite.com/pagina5'>Pagina 5</a></li>
</ul>
</body>
</html>";
// Mensagem que Será Enviada ao Administrador do Site.
$mensagem_admin = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
<html>
<head><title>".$title."</title>
</head>
<body style='width:98%;height:auto;margin:0px;padding:1%;'><p>Admin, <b>".$nome. "</b>, <b>".$email."</b>, com o IP: <b>".$ip. "</b>, comentou em <b>".$title."</b>.</p>
<h2>Comentario</h2>
<p>".$mensagem."</p>
</body>
</html>";
$envia = mail($email,$title,$mensagem_user,$headers_user);
$envia = mail($mail_admin,$title,$mensagem_admin,$headers_admin);
}

// EXIBIÇÃO DOS CAMPOS JÁ INSERIDOS NA TABELA DO PHPMYADMIN

echo "<div class='exibir_teste'>";
echo "<h2>Mensagens</h2>";
$sql = mysqli_query($con, "SELECT name, data, mensagem FROM comentarios ORDER BY id DESC");
while ($row = mysqli_fetch_assoc($sql)) {
echo "<b>" . $row['name'] ."</b><br>";
echo "<b>" . $row['mensagem'] ."</b><br>";
echo "<b>" . $row['data'] ."</b><br>";
echo "<hr>";
echo "</div>";
}
$sql = mysqli_fetch_assoc($sql);
mysqli_close($con);
?>
</body>
</html>

Excluir Dados

Por ser um formulário dinâmico em que os usuários inserem dados automaticamente, você pode precisar de vez em quando, devido ao tipo de comentário ser aceitável ou não pelo seu site ou aplicativo, deletar um ou outro comentário. Então para isto você deve acessar o seu host do MySql, e no menu esquerdo do gerenciador click no banco desejado e depois na tabela na qual quer excluir dados. Na janela à direita estão todos os dados inseridos até o momento, para editar click no "lápis" e para deletar dados click no "X". Caso queira deletar todos os dados, click em Limpar no menu superior do gerenciador MySql.

Veja Abaixo o Código Completo

Nesse caso, salve tudo em um único arquivo como 'algum_nome.php' e depois execute-o. Para que funcione no seu Site basta apenas que faça as alterações necessárias.

<!------ // CÓDIGO COMPLETO -------!>

<html>
<head><title><?php echo $titulo; ?></title>
<meta name="robots" content="noindex" >
<meta charset="UTF-8">
<style type="text/css">
body{width:98%;height:auto;padding:1%; margin:0px;overflow:auto;}
input{border:1px solid #aaa;}
textarea{border:1px solid #aaa;}
div.exibir_teste{width:98%;height:auto; text-align:left;font-family:arial;}
h2{color:009;text-transform:uppercase;font-family:arial;}
b{color:#777;}
</style>
</head>
<body>
<?
// Configuração do Servidor MySql.
$host="server_name";
$username="user_name";
$password="user_password";
$db_name="user_db_name";
$con = mysqli_connect($host, $username, $password, $db_name);
if (!$con) {
die("Falha na Conexão: " . mysqli_connect_error());
}

// CRIAR TABELA

$sql = "CREATE TABLE IF NOT EXISTS comentarios (
id int(11) NOT NULL AUTO_INCREMENT,
name char(30) NOT NULL,
email char(30) NOT NULL,
DATA date NOT NULL,
mensagem text NOT NULL,
PRIMARY KEY (id))";
$result = mysqli_query($con, $sql);
if(!$result) {
die("Falha ao Criar Tabela: " . mysqli_error());
} else {
}
?>

<!------ // Formulário Html -------!>

<div class="exibir_teste"><br>
<h1>Enviar Mensagem</h1>
<form name="form" method="POST" action="resposta.php"><br>
<input type="text" name="name" placeholder="Digire seu Nome" size="40" maxlength="40"><br>
<input type="text" name="email" placeholder="Digire seu Email" size="40" maxlength="40"><br>
<textarea name="mensagem" placeholder="Digire sua Mensagem" cols="30" rows="4" maxlength="250"></textarea><br>
<input type="submit" value="enviar"><br>
</form><br>
</div><br>

<!------ // Fim do Formulário Html -------!>

<?php

// Variáveis de Respostas ao Formulário Html.

$ip = $_SERVER['REMOTE_ADDR'];
$titulo = "Formulario de Contato";
$mail_admin = "seu_email_válido@dominio.com";
// Palavras que Você pode Restringir, Impedindo que Sejam Enviadas (Altere os Valores e Adicione Quantas Mais Quiser).
$palavras = "/(palavrão1| palavrão2|palavrão3|ddd|eee| fff|ccc)/";
// Impedir que Links Sejam Adicionados ao Formulário.
$links = "/(http:|a href=)/";
$title = "Fazer um Comentario";
$nome = $_POST ['name'];
$email = $_POST ['email'];
$mensagem = $_POST['mensagem'];
$data = date ('Y-m-d');

// Header dos Emails que Serão Enviados ao Usuário que Comentou e ao Administrador do Site.

// Aqui você alterar os campos em verde para o email configurado no seu servidor, ou seja, o email do seu Site.
$headers_user = implode ("\n",array ("From:Usuario<seu_servidor@seu_servidor.com>","Reply-To:$email","Subject:$title","Return-Path:$mail_admin","MIME-Version:1.0","X-Priority:3","Content-Type:text/html;charset=UTF-8"));
$headers_admin = implode ("\n",array ("From:Admin<seu_servidor@seu_servidor.com>","Reply-To:$mail_admin","Subject:$titulo","Return-Path:$mail_admin","MIME-Version:1.0","X-Priority:3","Content-Type:text/html;charset=UTF-8"));

// As Linhas Abaixo Força o Usuãrio a Preencher todos os Campos.

if ($nome == null) {
echo "<b>Você precisa inserir seu nome</b>";
exit();
}
if ($email == null) {
echo "<b>Você precisa inserir seu email</b>";
exit(); }
if ($mensagem == null) {
echo "<b>Você precisa inserir seu comentãrio</b>";
exit();
}
if (preg_match($palavras, implode ($_POST))) {
echo "<b>Você precisa melhorar seus termos</b>";
exit();
}
if (preg_match($links, implode ($_POST))) {
echo "<b>Você não pode adicionar links aqui</b>";
exit();
}

// Corpo dos Emails que serão Enviados ao Usuário e ao Administrador do Site.

$inserir = "INSERT INTO comentarios (name, email, data, mensagem) VALUES('$nome', '$email', '$data', '$mensagem')";
if (mysqli_query($con, $inserir)) {
$mensagem_user = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
<html>
<head><title>".$title."</title>
<style type='text/css'>
body{width:96%;text-align:left;margin:0px;padding:1%;}
h1{font-size:320%;color:#008;font-family:impact;}
p, ul, a{font-size:130%;text-decoration:none;line-height:160%;}
b{color:#004;}
</style>
</head>
<body>
<p>Ola<b> ".$nome."</b>, obrigado pelo <b>Contato</b>.</p>
<hr><h2>Links Recomendados</h2>
// Links Interessantes do Seu Site Enviados no Email - Substitua os links abaixo pelos seus Próprios.
<ul>
<li><a href='seusite.com/pagina1'>Pagina 1</a></li>
<li><a href='seusite.com/pagina2'>Pagina 2</a></li>
<li><a href='seusite.com/pagina3'>Pagina 3</a></li>
<li><a href='seusite.com/pagina4'>Pagina 4</a></li>
<li><a href='seusite.com/pagina5'>Pagina 5</a></li>
</ul>
</body>
</html>";
$mensagem_admin = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
<html>
<head><title>".$title."</title>
</head>
<body style='width:98%;height:auto;margin:0px;padding:1%;'><p>Admin, <b>".$nome. "</b>, <b>".$email."</b>, com o IP: <b>".$ip. "</b>, comentou em <b>".$title."</b>.</p>
<h2>Comentario</h2>
<p>".$mensagem."</p>
</body>
</html>";
$envia = mail($email,$title,$mensagem_user,$headers_user);
$envia = mail($mail_admin,$title,$mensagem_admin,$headers_admin);
}

// O Trecho Abaixo Mostra Todos os Comentãos Já Inseridos na Tabela.

echo "<div class='exibir_teste'>";
echo "<h2>Mensagens</h2>";
$sql = mysqli_query($con, "SELECT name, data, mensagem FROM comentarios ORDER BY id DESC");
while ($row = mysqli_fetch_assoc($sql)) {
echo "<b>" . $row['name'] ."</b><br>";
echo "<b>" . $row['mensagem'] ."</b><br>";
echo "<b>" . $row['data'] ."</b><br>";
echo "<hr>";
echo "</div>";
}
$sql = mysqli_fetch_assoc($sql);
mysqli_close($con);
?>
</body>
</html>

Conclusão

Pronto, espero ter contribuído em alguma coisa e aproveite para ver outras dicas interessantes no site.
Ferramentas para Webmasters

Formulários, Comentários, Php, MySql, PhpMyAdmin

Pressione CTRL + D para Adicionar Esta Página aos Seus Favoritos

Sobre o Autor | Política de Privacidade