Membre
|
Bonjour j'ai suivit un tuto sur la creation d'un systeme de news sans BDD avec serialize et unserialize que j'ai modifié pour un systeme de commentaire d'article. Le seul probleme c'est que des que je creer un commentaire avec le pseudo et son contenu, des que j'actualise sur le bouton de mon navigateur, le commentaire s'affiche une 2e fois et si j'actualise une 2e fois le message s'affiche pour la 3e fois.
<?php
if(isset($_POST['contenu']) && isset($_POST['pseudo'])) {
//On définit les variables
$contenu = $_POST['contenu'];
$pseudo = $_POST['pseudo'];
//Puis on récupère les news qui existent déjà, et on stocke le tout dans $news
$news = unserialize(file_get_contents('commentaires/markets.txt'));
//On ajoute les données de la news à la suite de l'array
$news[] = array('auteur' => $pseudo, 'contenu' => $contenu);
//Et pour finir, on enregistre le tout
file_put_contents('commentaires/markets.txt', serialize($news));
echo 'La news a bien été ajoutée !';
} else {
//Affichage du formulaire
}
?>
<?php
$liste_news = unserialize(file_get_contents('commentaires/markets.txt'));
if(!empty($liste_news)) {
foreach($liste_news as $id => $news) {
$news = array_map('htmlspecialchars', $news);
?>
<i><?php echo $news['auteur'] ?></i> <br />
<p><?php echo $news['contenu'] ?></p>
<br /><br />
<?php
}
}
else {
echo 'Il n\'y a aucuns commentaires pour le moment<br />';
}
?>
|
Admin
|
Bonjour,
Le problème, c'est qu'en rafraichissant la page, le message est réenvoyé, donc il s'ajoute plusieurs fois.
Utilise ce code, ça résoudra le problème:
<?php
if(isset($_POST['contenu']) && isset($_POST['pseudo'])) {
//On définit les variables
$contenu = $_POST['contenu'];
$pseudo = $_POST['pseudo'];
//Puis on récupère les news qui existent déjà, et on stocke le tout dans $news
$news = unserialize(file_get_contents('commentaires/markets.txt'));
//On ajoute les données de la news à la suite de l'array
$news[] = array('auteur' => $pseudo, 'contenu' => $contenu);
//Et pour finir, on enregistre le tout
file_put_contents('commentaires/markets.txt', serialize($news));
echo 'La news a bien été ajoutée !<br />
Vous allez être redirigé dans 2 secondes.
<script type="text/javascript">
window.setTimeout("location=(document.location.href);",2000);
</script>';
exit;
} else {
//Affichage du formulaire
}
?>
<?php
$liste_news = unserialize(file_get_contents('commentaires/markets.txt'));
if(!empty($liste_news)) {
foreach($liste_news as $id => $news) {
$news = array_map('htmlspecialchars', $news);
?>
<i><?php echo $news['auteur'] ?></i> <br />
<p><?php echo $news['contenu'] ?></p>
<br /><br />
<?php
}
}
else {
echo 'Il n\'y a aucuns commentaires pour le moment<br />';
}
?>
Cordialement
|