Créer un compte
Connexion

[serialize/unserialize]probleme

Pour créer et répondre aux sujets, vous devez être connecté.
Pages: 1
Auteur Message
momolamasse
27/10/2010 à 11:14:03
momolamasse
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>
                        &nbsp;
                        <br /><br />
                <?php
        }
}
else {
        echo 'Il n\'y a aucuns commentaires pour le moment<br />';
        }
?>


ybouane
28/10/2010 à 02:52:17
ybouane
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>
                        &nbsp;
                        <br /><br />
                <?php
        }
}
else {
        echo 'Il n\'y a aucuns commentaires pour le moment<br />';
        }
?>

Cordialement :)

Image
Pages: 1