Bonjour,
je suis entrain de faire mon portfolio avec un blog avec la possiblité de poster des commentaires si l'utilisateur est connecté

Je voudrais des conseils sur mon code, merci !

index.php

<?php
    require 'app/includes.php';
    $title = "";
    require 'partials/header.php';

    // Récupération des news du blog

    $req = $db->prepare("SELECT * FROM blog ORDER BY date_post LIMIT 0,5");
    $req->execute();
    $setBlog = $req->fetchAll();
?>

    <div class="page-header">
        <h3>
            Mon Blog
        </h3>
    </div>

    <?php foreach($setBlog as $blog): ?>
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3><?= $blog['title']; ?></h3>
                <p>
                    Cet article a été publié par <i class="fa fa-user"></i> <?= $blog['author']; ?>, le <i class="fa fa-calendar"></i> <strong><?= $blog['date_post']; ?></strong>
                </p>
            </div>
            <div class="panel-body">
                <p>
                    <?= $blog['content']; ?>
                    <a class="btn btn-default" href="blog.php?id=<?= $blog['id']; ?>">
                        <i class="fa fa-plus"></i>
                    </a>
                </p>
            </div>
            <div class="panel-footer">
                <a class="btn btn-social-icon btn-twitter" href="">
                    <i class="fa fa-twitter"></i>
                </a>
                <a class="btn btn-social-icon btn-facebook" href="">
                    <i class="fa fa-facebook"></i>
                </a>
                <a class="btn btn-social-icon btn-google-plus" href="">
                    <i class="fa fa-google-plus"></i>
                </a>
                <a class="btn btn-success" href="">
                    <i class="fa fa-thumbs-up"></i>
                    J'aime
                </a>
                <a class="btn btn-danger" href="">
                    <i class="fa fa-thumbs-down"></i>
                    Je n'aime pas
                </a>
            </div>
        </div>
    <?php endforeach; ?>

<?php
    require 'app/debug.php';
    require 'partials/footer.php';
?>

blog.php

<?php
    require 'app/includes.php';
    $title = "";
    require 'partials/header.php';

    // Récupération de la news

    $id = $_GET['id'];
    $req = $db->prepare("SELECT * FROM blog WHERE id = $id");
    $req->execute();
    $setNews = $req->fetch();
    if(!$setNews)
    {
        setFlash('Cet article n\'existe pas !', 'danger');
    }
?>

    <?php if($setNews): ?>
        <div class="page-header">
            <h3>
                <?= $setNews['title']; ?>
            </h3>
            <p>
                Cet article a été publié par <i class="fa fa-user"></i> <?= $setNews['author']; ?>, le <i class="fa fa-calendar"></i> <strong><?= $setNews['date_post']; ?></strong>
            </p>
        </div>

        <p>
            <?= $setNews['content']; ?>
        </p>

        <a class="btn btn-social-icon btn-twitter" href="">
                <i class="fa fa-twitter"></i>
        </a>
        <a class="btn btn-social-icon btn-facebook" href="">
            <i class="fa fa-facebook"></i>
        </a>
        <a class="btn btn-social-icon btn-google-plus" href="">
            <i class="fa fa-google-plus"></i>
        </a>
        <a class="btn btn-success" href="">
            <i class="fa fa-thumbs-up"></i>
            J'aime
        </a>
        <a class="btn btn-danger" href="">
            <i class="fa fa-thumbs-down"></i>
            Je n'aime pas
        </a>
    <?php 
        endif;
        // Récupération des commentaires

        $req = $db->prepare("SELECT * FROM commentaires WHERE id = $id");
        $req->execute();
        $setComments = $req->fetch();
        if($setComments):
    ?>
        <hr />
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3><?= $setComments['title']; ?></h3>
                <p>
                    Cet article a été publié par <i class="fa fa-user"></i> <?= $setComments['author']; ?>, le <i class="fa fa-calendar"></i> <strong><?= $setComments['date_post']; ?></strong>
                </p>
            </div>
            <div class="panel-body">
                <p>
                    <?= $setComments['content']; ?>
                </p>
            </div>
            <div class="panel-footer">
                <a class="btn btn-success" href="">
                    <i class="fa fa-thumbs-up"></i>
                    J'aime
                </a>
                <a class="btn btn-danger" href="">
                    <i class="fa fa-thumbs-down"></i>
                    Je n'aime pas
                </a>
            </div>
        </div>
        <?php if(isset($_SESSION['Auth']['id'])): ?>
            <a class="btn btn-default btn-lg btn-block" href="commentaires.php?id=<?= $id; ?>">
                <i class="fa fa-pencil"></i>
                Poster un commentaire
            </a>
        <?php endif; ?>
    <?php endif; ?>

<?php
    require 'app/debug.php';
    require 'partials/footer.php';
?>

8 réponses


Bonjour,

le code est propre, bien compartimenté (traitement/affichage). Je relève peut être un problème : que se passe t-il si l'utilisateur tape directement l'adresse "commentaires.php?id=4" dans sa bare d'adresse ?

A+
Bon continuation

Code propre, mais il faut gérer les sessions si ton utilisateur est connecté. Je n'ai pas vu de session_start() dans ton code, et je te conseille de mettre en place un système de token --> [http://www.grafikart.fr/tutoriels/php/faille-csrf-155]() ;)

SInon, essaye de suivre la formation [http://www.grafikart.fr/formations/programmation-objet-php](), @Grafikart fait un petit moteur de blog tout bête via MVC, je pense que ça pourrait aussi t'aider :)

Je suis persuadé que son session_start() est dans le "app/includes.php" :)

aStunner
Auteur

Pour répondre à connected, si l'utilisateur rentre l'url il sera redirigé sur la news avec l'id si elle existe pas on lui retourne une erreur

aStunner
Auteur

Pour Cyrien G, j'essaie de mettre en place un systeme en "brut" et ensuite tout passer en mvc :)
De plus si quelqu'un pourrait m'aider pour les url

je voudrais une url comme ceci : www.monsite.fr/blog.php/slug
cependant je n'arrive pas j'obtiens : blog.php?id=1 car je n'arrive pas à vérifier le slug

Ce n'etait pas vraiment ma question, en même temps si je m'exprime mal, lool. Ma question c'est : est-ce que tu verifie sur la page commentaires si l'utilisateur est bien connecté ?

aStunner
Auteur

je n'ai pas fais la page de commentaires (où on post) mais oui je le vérifirais

D'accord, mais je te conseille de commencer par le MVC directement, tu risques de t'emmêler les pinceaux sinon ^^

Pour tes routes, il te faudrait passer directement par le slug 'blog.php?slug=toto" (et donc lors de ta requête en BDD, faire ton WHERE sur le slug et on l'ID ;) )