Jump to content


Photo

Sistema Comentario Em Php


  • Faça o login para participar
8 replies to this topic

#1 AlexCardoso

AlexCardoso

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Não informado

Posted 06/10/2009, 11:28

Pessoal, estou com um problema, fiz um sistema de comentarios em php+Mysql, ele insere o comentario normal, mas depois de inserir o comentario se eu clico em atualizar pagina ele insere o mesmo comentario, se eu atualizar a pagina 10 vezes ele insere o mesmo comentario 10 vezes, alguem tem ideia do que pode ser ?
Eu fiz um include na minha pagina principal usando o codigo abaixo.
Obrigado!


abaixo meu codigo php
[codebox]<?php
include_once("conexao.php");
?>


<?php
$nome=$_POST["nome"];
$email=$_POST["email"];
$data=date("Y-d-m");
$cidade=$_POST["cidade"];
$mensagem=$_POST["mensagem"];

$inserir=mysql_query("insert into recados(nome,email,cidade,mensagem) values('$nome','$email','$cidade','$mensagem')");
?>


<?php
//lista os resultados da pesquisa quer do MYSQL
$sql="SELECT * FROM recados ORDER BY id DESC";
$exec=mysql_query($sql);
while($exibir=mysql_fetch_array($exec)){
echo"<span class='nomes'>".$exibir["nome"]. "-" .$exibir["email"]."</span>";
echo "<br />";
echo"<span class='data'>".$data."-".$exibir["cidade"];"</span>";
echo "<br />";
echo"<span class='mensagem'>".$exibir["mensagem"]."</span>";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
}
?>

<?php
mysql_close($conn);
?>[/codebox]

#2 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 06/10/2009, 11:35

Olá Alex... é normal que isso aconteça, você não colocou nenhuma "validação" para isso...

coloque algo do tipo

if($_GET['atualizar'] == true){
código...


Aí no action do cadastro, apenas coloque um atualizar=true quando for editar, alterar

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#3 AlexCardoso

AlexCardoso

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Não informado

Posted 06/10/2009, 13:02

Valeu pela dica, deu certo, obrigado pela ajuda!

Achei que tinha dado certo, mas continua o erro, vou passar os codigos..
[codebox]<form action="index.php?validar" method="post">
<table width="275" border="0">
<tr>
<td width="99">Nome</td>
<td width="203"><label>
<input type="text" name="nome" />
</label></td>
</tr>
<tr>
<td>Email</td>
<td><label>
<input type="text" name="email" />
</label></td>
</tr>
<tr>
<td>Cidade</td>
<td><label>
<input type="text" name="cidade" />
</label></td>
</tr>
<tr>
<td>Mensagem</td>
<td><label>
<textarea name="mensagem" cols="45" rows="5"></textarea>
</label></td>
</tr>
<tr>
<td><label>
<input type="submit" value="Postar" />
</label></td>
<td>&nbsp;</td>
</tr>
</table>
</form>[/codebox]

[codebox]<?php
include_once("conexao.php");
?>

<?php

if (isset($_GET['validar'])) {
$nome=$_POST["nome"];
$email=$_POST["email"];
$data=date("Y-d-m");
$cidade=$_POST["cidade"];
$mensagem=$_POST["mensagem"];

$inserir=mysql_query("insert into recados(nome,email,cidade,mensagem) values('$nome','$email','$cidade','$mensagem')");

//lista os resultados da pesquisa quer do MYSQL
$sql="SELECT * FROM recados ORDER BY id DESC";
$executar=mysql_query($sql);
while($exibir=mysql_fetch_array($executar)){
echo"<span class='nomes'>".$exibir["nome"]. "-" .$exibir["email"]."</span>";
echo "<br />";
echo"<span class='data'>".$data."-".$exibir["cidade"];"</span>";
echo "<br />";
echo"<span class='mensagem'>".$exibir["mensagem"]."</span>";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
}
}
mysql_close($conn);
?>[/codebox]

Obtigado !

#4 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 06/10/2009, 13:08

Mude para isto:

[codebox]<form action="index.php?validar=true" method="post">[/codebox]
[codebox]if ($_GET['validar'] == true) { [/codebox]

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#5 AlexCardoso

AlexCardoso

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Não informado

Posted 06/10/2009, 13:48

Maykel, valeu pela ajuda, mas continua o erro, eu mando o comentario ele aparece certinho, mas quando eu dou atuzlizar ou f5 ele aparece o mesmo comentario, muito obrigado !

#6 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 06/10/2009, 16:08

Claro que vai aparecer o mesmo comentário.
Se você submete uma ação, e depois dá F5 nesta mesma ação, será feito tudo novamente.

Por isso, é utilizado sistemas como Captcha, que serve também para proteger este tipo de ação, entendeu?

Procure implementar o sistema de captcha.
Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#7 AlexCardoso

AlexCardoso

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Não informado

Posted 06/10/2009, 16:53

Dudu
Valeu, vou procurar sobre o sistema captcha e colocar aqui..

#8 Helcio Macedo

Helcio Macedo

    Turista

  • Usuários
  • 32 posts
  • Sexo:Masculino
  • Localidade:Marilia-SP

Posted 06/10/2009, 22:20

Se separar as paginas não resolveria??

Idéia:
Comentar.php
Coloca os campos para preencher e no final criar uma sessão $_SESSION["Post"]

Recebe.php
Inicia com um Verifica.php para ver se a sessão está criada se sim..
Recebe os dados enviados pelo Post da pagina comentar.php e grava no banco de dados.. depois de gravar destroi a $_SESSION["Post"] e redireciona para a proxima pagina

Comentarios.php
Aqui mostra os comentarios!! Se o cara apertar o botão para voltar ele redireciona para Comentar.php pa com a Sessão destruida ele não passaria pelo verifica.php, assim não repetiria o comentário!
Intel Inside Core 2 Duo E8400 - 3.0Ghz - Wolfdale - 6MB L2 Cache - 1333FSB
XFX 9300 Motherboard
x2 2Gb Corsair DDR 800Mhz
Western Digital 500Gb Caviar Green
NZXT Apollo Black

#9 AlexCardoso

AlexCardoso

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Não informado

Posted 07/10/2009, 10:25

Valeu Helcio pela dica, apesar de eu estar começando no php, vou tentar fazer o que disse...




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq