- Como Criar Um Site, Blog – WebMaster.pt - http://www.webmaster.pt -

Com Criar Um Sistema De Comentários Em PHP E MYSQL

Tweet [3]

Hoje em dia o principal recurso que um site tem é a comunicação com o cliente.

Se a comunicação for boa, o site cresce, senão, é apenas mais um na Internet!

Um dos vários recursos que temos é o “sistema de comentários”.

Geralmente você encontra este recurso em grandes portais ou listas de discussão onde o usuário deve dar a sua opinião, sugestão ou emitir um comentário.

Na matéria de hoje, estaremos criando este recurso e mostrando de forma prática como adaptar um sistema de comentários em seu site.

comentarios

Configurando A Base de Dados MySQL

Antes de tudo, é necessário configurar a base de dados.

Com o BD já criado, acesse o ficheiro “conexao.php” e configure o ficheiro alterando as informações de acesso à base de dados (conforme script a seguir).



<?

// SERVIDOR

$database = "SERVIDOR";
$dbname   = "BASEDEDADOS";
$usuario  = "USUARIO";
$dbsenha  = "SENHA";

$conexao=mysql_connect ($database, $usuario, $dbsenha);

if($conexao){
      if (mysql_select_db($dbname, $conexao)){
           print "";
      }else{
           print "Não foi possível selecionar o Banco de Dados";
           }
      }else{
           print "Erro ao conectar o MySQL";
           }
          
?>

Após a configuração, vamos agora criar a tabela que será usada!

Criando A Tabela Na Base De Dados

Para configurar a base de dados através do script, abra o ficheiro script-sql.txt (disponível em anexo) e cole seu conteúdo no Programa utilizado para gerenciamento da base de dados.

Em nossas matérias utilizamos como padrão o MySQLFront. Caso tu também esteja utilizando este programa, clique em SQL Editor e cole o conteúdo do script (conforme código e imagem abaixo).



----- INSTALANDO A TABELA -----

CREATE TABLE `tbl_depoimentos` (
  `id_depoimento` int(11) NOT NULL auto_increment,
  `id_site` int(11) default NULL,
  `cliente` varchar(80) default NULL,
  `email` varchar(150) default NULL,
  `depoimento` varchar(255) default NULL,
  `data_cadastro` varchar(10) default NULL,
  `status` char(1) default NULL,
  PRIMARY KEY  (`id_depoimento`)
);

INSERT INTO `tbl_depoimentos` VALUES (1,934,'Fábio Aquino',NULL,'Gostei muito desta praia. Era o que eu precisava para descansar e tirar férias.','2010-09-23','1');
INSERT INTO `tbl_depoimentos` VALUES (3,934,'Vanessa',NULL,'Muito bom o novo site da sua empresa, ficou bem visível os icones de procura!',NULL,'1');
INSERT INTO `tbl_depoimentos` VALUES (7,934,'Quemuel Aquino',NULL,'sdf sfs dsdfs fsdf sd fs dfsd','2010-09-23','1');
INSERT INTO `tbl_depoimentos` VALUES (9,1,'Marta Regina','modelosbrasileirasaqui@ymail.com','dfsad adf dafad fadf adf adf adf ad f','2010-11-03','0');

Após importar os dados, vamos dar continuidade às configurações?

Efetuando Configurações

Abra o ficheiro “comentario_envia.php” e efetue as configurações a seguir:

As demais informações poderão ser usadas de forma automática (conforme o código a seguir):



<?

include('conexao.php');

$email_admin = "seuemail@seusite.com"; // seu email

$id_site   = "1"; // esse sistema foi feito para rodar em vários sites... por isso uma ID.

$link_site = $_SERVER['SERVER_NAME']; // pega a URL do seu site

$nome          = $_POST['nome'];
$email         = $_POST['email'];
$comentario    = $_POST['comentario'];
$comentario    = ereg_replace("\n","<br>",$comentario);
$data_cadastro = date ('Y-m-d');
  
  
$query_comentario = "INSERT INTO tbl_depoimentos(id_site, cliente, email, depoimento, data_cadastro, status) VALUES('$id_site', '$nome', '$email', '$comentario', '$data_cadastro', '0')";
$rs_comentario = mysql_query($query_comentario);

// SELECIONA PARA VALIDAR A APROVAÇÃO
$query_select_cad = "SELECT * FROM tbl_depoimentos where id_site = '$id_site' AND cliente = '$nome' AND email = '$email' and data_cadastro = '$data_cadastro' and status = '0'";
$rs_select_cad    = mysql_query($query_select_cad);

$campo_select_cad = mysql_fetch_array($rs_select_cad);
$id_depoimento_select_cad = $campo_select_cad['id_depoimento'];

$assunto = "Envio de Comentário - $link_site";

$mensagem = "<center><table width='500' border='0' cellspacing='1' cellpadding='4' bgcolor='#4a66a3'>

<tr>

    <td bgcolor='white' valign='top'>
       <link rel='important stylesheet' href='chrome://messenger/skin/messageBody.css'>
       <style type='text/css' media='screen'>
       <!-- td { color: #069; font-size: 8pt; font-family: Arial, Verdana, Arial, Helvetica, sans-serif } --></style>
         <br>
        <p align='justify'>Prezado Administrador, <br>

          <br>

          Recebemos através do site $link_site o comentário abaixo descrito:<br><br>

          <b>COMENTÁRIO:</b><BR>

          <b>Nome:</b> $nome<br>
          <b>EMail:</b> $email<br>
          <b>Comentário:</b><br>$comentario<br><br>

          <center>
          <a href='http://$link_site/comentarios/script_comentario.php?acao=reprovar&id_depoimento=$id_depoimento_select_cad&id_site=$id_site' target='_blank'>CANCELAR</A>
          - <a href='http://$link_site/comentarios/script_comentario.php?acao=aprovar&id_depoimento=$id_depoimento_select_cad&id_site=$id_site' target='_blank'>APROVAR</A><BR<BR>
          </center>

          <p> <font color='#076DB8'>Atenciosamente,<br>

        <br>

        Central de Relacionamentos<br>
        <b>$link_site ©</b><br>

        </font>

      <br>

      <b><font color='#7694CB' size='1' face='Verdana, Arial, Helvetica, sans-serif'>

      :: Politica de Privacidade::<br>

      </font></b>

      <font color='#7694CB' size='1' face='Verdana, Arial, Helvetica, sans-serif'>

      O envio e recebimento de nossas mensagens procura estar alinhado com o C&oacute;digo

       de &Eacute;tica Anti-SPAM que objetiva reger e orientar a

       comunica&ccedil;&atilde;o institucional, comercial e publicit&aacute;ria

       enviada sob a forma de mensagens eletr&ocirc;nicas.</font>

       <br>

       <hr size='1'>

       <font size='1' face='Verdana, Arial, Helvetica, sans-serif'>

       Temos a forte convic&ccedil;&atilde;o de que

      a rela&ccedil;&atilde;o entre cliente e empresa deve ser marcada pelo

      conceito de parceria, fortalecendo o v&iacute;nculo estabelecido em bases de

       confian&ccedil;a e apoio m&uacute;tuo.</font></td></tr></table></center>";

  $headers = "MIME-Version: 1.0" . "\r\n";

  $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";// More headers

  $headers .= "From: $email" . "\r\n"; // 'From: $email_dest' . "\r\n";

mail("$email_admin", "$assunto", "$mensagem", "$headers");

if (mail){

?>
<script language="JavaScript">

alert('Comentário enviado com sucesso !!!');

</script>

<meta HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>

<?}?>

Página Inicial

A página inicial do sistema é prática e pode ser customizada facilmente.

Até para facilitar, estamos usando recursos de “captcha” que são imagens distorcidas.

O objetivo é ter certeza de que não é uma máquina quem esta enviando a requisição.

Bem… ele deverá funcionar assim:

  1. O internauta preenche o formulário com seu comentário;
  2. O sistema lhe envia uma mensagem (com a opção de excluir ou aprovar o comentário);
  3. Você aprova o comentário e ele entra online. Exclui e ele é excluído automaticamente da base de dados.

Até para facilitar, na página “index.php” listamos abaixo do formulário os comentários cadastrados.

Ele poderá ser removido de lá e disponibilizado em uma página com um layout apropriado.

Vamos verificar o código?



<?
session_start();

include('conexao.php');

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>.:: Comentários ::.</title>
<meta name="description" content="DESCRIÇÃO">
<meta name="keywords" content="KEYWORD">

<script language="JavaScript" >
function enviardados(){

// VALIDANDO O CAMPO NOME
if(document.dados.nome.value=="" || document.dados.nome.value.length < 8){
alert( "Preencha campo NOME corretamente!" );
document.dados.nome.focus();
return false;
}

// VALIDANDO O CAMPO COMENTÁRIO
if (document.dados.comentario.value == ""){
alert ("O campo COMENTÁRIO deve conter informações!");
document.dados.comentario.focus();
return false;
}

// VALIDANDO O CAMPO CÓDIGO
if (document.dados.code.value == ""){
alert ("O campo CÓDIGO deve ser preenchido com as informações corretas!");
document.dados.code.focus();
return false;
}

}
</script>

</head>
<body>

<form method='POST' action='comentario_envia.php' name="dados" onSubmit="return enviardados()">

Nome: <input type='text' name='nome'><br>
Email: <input type='text' name='email'><br>
Comentário: <textarea name="comentario"></textarea><br>
<div style="width: 430px; float: left; height: 90px">
      <img id="siimage" align="left" style="padding-right: 5px; border: 0" src="securimage_show.php?sid=<?php echo md5(time()) ?>" />

        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="19" height="19" id="SecurImage_as3" align="middle">
          <param name="allowScriptAccess" value="sameDomain" />
          <param name="allowFullScreen" value="false" />
          <param name="movie" value="securimage_play.swf?audio=securimage_play.php&bgColor1=#777&bgColor2=#fff&iconColor=#000&roundedCorner=5" />
          <param name="quality" value="high" />

          <param name="bgcolor" value="#ffffff" />
          <embed src="securimage_play.swf?audio=securimage_play.php&bgColor1=#777&bgColor2=#fff&iconColor=#000&roundedCorner=5" quality="high" bgcolor="#ffffff" width="19" height="19" name="SecurImage_as3" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
        </object>

        <br />

        <!-- pass a session id to the query string of the script to prevent ie caching -->
        <a tabindex="-1" style="border-style: none" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = 'securimage_show.php?sid=' + Math.random(); return false"><img src="images/refresh.gif" alt="Reload Image" border="0" onclick="this.blur()" align="bottom" /></a>
</div>
<div style="clear: both"></div>
Digite o código acima:<br />

<!-- NOTE: the "name" attribute is "code" so that $img->check($_POST['code']) will check the submitted form field -->
<input type="text" name="code" size="12" /><br /><br />

<?
  include("securimage.php");
  $img = new Securimage();
  echo $valid = $img->check($_POST['code']);
?>
<input type="hidden" name='code2' value="<?= $valid; ?>">
<input type="submit" value="Enviar" />
</form>

<br><br><br><b>MENSAGENS PUBLICADAS:</b><br>

<?

$query_depoimentos = "SELECT * FROM tbl_depoimentos where status = '1'";
$rs_depoimentos    = mysql_query($query_depoimentos);

while($campo_depoimentos = mysql_fetch_array($rs_depoimentos)){
echo $cliente_depoimento = $campo_depoimentos['cliente'];
echo ":<br>";
echo $msg_depoimento    = $campo_depoimentos['depoimento'];
echo "<br><br>";
}
?>

</body>
</html>

OBS.: Como trata-se de uma ferramenta para testes, estou lhe enviando com a validação da Captcha “apenas” com o campo em branco. Caso você queira, poderá criar outras instruções para melhorar o sistema.

Aprovando o Ficheiro

Veja no ficheiro “script_comentario.php” que após clicar em “aprovar”, haverá uma validação na base de dados de forma bem prática (conforme script abaixo descrito).



<?

include('conexao.php');

$acao = $_GET['acao'];

switch ($acao) {

case aprovar:

$id_depoimento     = $_GET['id_depoimento'];
$id_site           = $_GET['id_site'];

$query = "UPDATE tbl_depoimentos SET

        status        = '1'

             WHERE id_depoimento  = '$id_depoimento' and id_site = '$id_site'";
$resultado = mysql_query ($query);

if($resultado){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("Comentário publicado com sucesso")</SCRIPT>
<SCRIPT language="JavaScript">window.close();</SCRIPT>

<?
}
else
{
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("Erro ao publicar o comentário")</SCRIPT>
<SCRIPT language="JavaScript">window.close();</SCRIPT>
<?
}

break;

case reprovar:

$id_depoimento = $_GET['id_depoimento'];
$id_site       = $_GET['id_site'];

$query_depoimento = "DELETE FROM tbl_depoimentos where id_depoimento ='$id_depoimento' and id_site = '$id_site'";
$rs_depoimento    = mysql_query ($query_depoimento);

if ($rs_depoimento){

?>

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("Depoimento excluído com sucesso")</SCRIPT>
<SCRIPT language="JavaScript">window.close();</SCRIPT>
<?

}

break;

}

?>

Outros Ficheiros

Você poderá verificar no ficheiro em anexo que temos fontes, arquivos de audio, aliás, outros ficheiros que são encontrados livremente na Internet, mas que servem para complementar seu código.

Bem… não é um sistema 100% perfeito, pois você pode melhorar e muito, mas para quem precisa de algo básico, já te dá uma idéia de como trabalhar com um sistema de comentários.

Espero que esta ferramenta lhe seja útil no dia a dia.

Tweet [3]
Be Sociable, Share!
  • [4]
  • [5]
  • [6]
  • [7]
  • [8]