Dzień dobry,
mam pewien problem w związku z prostym systemem komentarzy. Pierwszy z nich polega na tym, że w momencie odświeżenia strony przeglądarka ponownie wysyła żądanie w konsekwencji dublując komentarz. Poniżej funkcja do której przekazywany jest POST.
function test(){
if(isset($_POST['comment_submit'])){
$obj = new MySQL('localhost','root','','mydatabase');
$poles = array('article_id','message','user_name','date');
$values = array($_REQUEST['id'],trim($_POST['comment_text']),$_POST['user_name'],$_POST['date']);
$obj->table_insert('comments',$poles,$values);
unset($_POST['comment_submit']);
$obj->disconnect();
}
}
Nie do końca rozumiem dlaczego tak się dzieje, skoro po odświeżeniu strony warunek nie powinien być spełniony. Drugi problem polega na tym, że w momencie dodania komentarza nie jest on natychmiastowo wyświetlany (strona wymaga odświeżenia). Próbowałem to rozwiązać dodając header('Refresh:0) , ale ponieważ kod wykonywany jest już wewnątrz html'a to występuje problem z nagłówkami. Drugim pomysłem było umieszczenie kodu js, który odświeżałby stronę, ale w tym wypadku strona po odświeżeniu się zapętla ciągle pytając czy ponownie wysłać żądanie POST i wstawia ten sam komentarz ilekroć użytkownik naciśnie prześlij ( czyli wracamy do problemu pierwszego ).
<div id="content">
<?php
require_once('get_article.php');
require_once('get_comment.php');
require_once('submit_comment.php');
?>
</div>
Tak wygląda sekcja odpowiedzialna za komentarze. Nie do końca mam pomysł dlaczego komentarz nie pojawia się od razu skoro po wysłaniu POST'a strona sama się odświeża. Byłoby miło gdyby ktoś mi to wytłumaczył.