Répondre aux commentaires

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
Nous allons à présent créer une page nommé "repondre-commentaire.php" qui va permettre à l'administrateur de répondre aux commentaires. Ce fichier va ressembler de très prêt à celui permettant de valider les commentaires et sera placé dans la partie admin.
Comme je le disais, ce fichier va ressembler au précédent tutoriel à quelques petites exceptions et de ce faite, on va pour une fois se passer de commentaires. Je vous livre donc le code en un seul bloc ..ce qui devrait ravir les "Aficionados" du copié/collé :D :
<?php
session_start();
$IsAuthorized = true;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">

<head>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>Réponse au commentaire</title>
<link href="../style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../ckeditor/ckeditor.js"></script>

</head>

<body>

<div id="moncadre">

<?php include('menu.php');?>

<div class="cadrecentrale">

<h1>Réponse au commentaire</h1>

<?php
//on récupère les variables qui transites par l'url
$id_transmit=$_GET['id'];
$id_page=$_GET['page'];
$pseudo_transmit=$_GET['pseudo'];

$statut="";
/*$statut permet d'indiquer que c'est la première fois que ce commentaire est validé (même si ce n'est pas vrai) et donc d'envoyer un mail aux abonnés du sujet.
L'admin peut donc répondre autant de fois qu'il veut à un même commentaire tout en prévenant les abonnés du sujet.*/
//On se connecte à la base de données
include('../fonctions.php');
include('../connexion_bd.php');
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
//On va chercher les informations sur la pages à qui appartient le commentaire
$infopage = mysql_query("SELECT id,titre FROM CONTENU WHERE id='".mysql_real_escape_string($id_page)."'");
while($afficheinfopage = mysql_fetch_array($infopage))
{
    $id_article=$afficheinfopage['id'];
    $titre_article=$afficheinfopage['titre'];
}

//On construit l'url de la page ou se trouvera le commentaire
$url_commentaire = 'http://'.$_SERVER['HTTP_HOST'].'/page.php?id='.$id_article.'#'.$id_transmit.'';
//initialisation du masquage du formulaire
$masquer_formulaire = 0;
//Traitement du formulaire
if(isset($_POST["Valider"]))
{
    $formulaire_pseudo = htmlspecialchars(stripcslashes(trim($_POST["pseudo"])));
    $formulaire_email = stripcslashes($_POST["email"]);
    $formulaire_commentaire = stripcslashes($_POST["commentaire"]);
    $formulaire_valide = $_POST["valide"];
    $ip = getIp();
    $timestamp = time();

    //Vérification du formulaire
    if(empty($formulaire_pseudo)){
        $alerte_pseudo ='<div class="erreur"><a name="ok"></a>Le pseudo est vide. Veuillez remplir la variable adéquate dans le fichier fonctions.php.</div>';
    }
    else if(empty($formulaire_email)){
        $alerte_email ='<div class="erreur"><a name="ok"></a>Votre email est vide. Veuillez remplir la variable adéquate dans le fichier fonctions.php.</div>';
    }  
    else if(empty($formulaire_commentaire)){
        $alerte_commentaire ='<div class="erreur"><a name="ok"></a>Le commentaire est vide.</div>';
    }
    //Si tout est ok
    else
    {
        // on enregistre les données
        $result = mysql_query("INSERT INTO COMMENTAIRE VALUES
(
'',
'".mysql_real_escape_string($id_page)."',
'".mysql_real_escape_string($formulaire_pseudo)."',
'".mysql_real_escape_string($formulaire_email)."',
'<b>Réponse à @ ".mysql_real_escape_string($pseudo_transmit)." :</b><br/>".mysql_real_escape_string($formulaire_commentaire)."',
'".mysql_real_escape_string($ip)."',
'".mysql_real_escape_string($timestamp)."',
'".mysql_real_escape_string($formulaire_valide)."',
'".mysql_real_escape_string('Oui')."'
)
");
        //Si il y a une erreur, on crie ^^
        if (!$result) {
            die('Requête invalide : ' . mysql_error());
        }
        else{
            //Si tout est ok, on informe le webmaster
            $message_ok = '<div class="ok"><a name="ok"></a>Commentaire enregistr&eacute; avec succ&egrave;s! Redirection en cours...</div>';
            //on masque le formulaire
            $masquer_formulaire=1;
            //Si le commentaire est validé pour la première fois   
            if($formulaire_valide==1 AND empty($statut)){
                //On envoie un mail à ceux qui suivent le sujet tout en excluent le posteur
                $result1 = mysql_query("SELECT MAX(id),email,pseudo,suivre_sujet FROM COMMENTAIRE WHERE email != '$formulaire_email' AND suivre_sujet='Oui' AND id_page='$id_page' AND validation='1' GROUP BY email");
                //si il y a au moin un résultat
                if(mysql_num_rows($result1) >= 1 ){
                    //on va chercher tout ce qui correspond
                    while($envoi_mail = mysql_fetch_array($result1))
                    {
                        $pseudo=$envoi_mail["pseudo"];
                        $mail=$envoi_mail["email"];

                        $subject1 = "Nouveau commentaire...";
                        //message 
                        $msg1  = "Bonjour $pseudo<br/><br/>";
                        $msg1 .= "Un nouveau commentaire concernant l'article « ".$titre_article." » a été déposé et est disponible sur la page $url_commentaire.<br/><br/>";
                        $msg1 .= "Vous pouvez vous désabonner ici http://".$_SERVER['HTTP_HOST']."/desabonnement.php?contact=$mail&id=".$envoi_mail["MAX(id)"]."<br/><br/>";
                        $msg1 .= "Cordialement http://".$_SERVER['HTTP_HOST'].".\nCourriel automatique (Ne pas répondre à ce message)";

                        //email des posteurs
                        $recipient1 = $mail;
                        //email de celui qui envoie le mail
                        $mailheaders1 = "From: $adresse_email\n";
                        $mailheaders1 .= "MIME-version: 1.0\n";
                        $mailheaders1 .= "Content-type: text/html; charset= iso-8859-1\n";
                        //on envoie l'email
                        mail($recipient1, $subject1, $msg1, $mailheaders1);

                        //on ferme la boucle while
                    }
                    //Si il y a une erreur, on crie ^^
                    if (!$result1) {
                        die('Requête invalide : ' . mysql_error());
                    }
                }
                //on ferme if($formulaire_valide==1 AND empty($statut)){
            }
            //on ferme else
        }
        //On ferme else
    }
    //On ferme if(isset($_POST["Valider"]))
}
?>

<?php
//Si la variable $message_ok est différente de vide
if(isset($message_ok) && !empty($message_ok)){
    echo $message_ok.'<script type="text/javascript">function redirection(page){ window.location=page; } setTimeout(\'redirection("commentaire.php")\',6000);</script>';
}
//On masque le formulaire
if($masquer_formulaire == 0){
    ?>
  
    <form action="#ok" method="post">
  
    <p>Url : <?php echo '<a target="_blank" href="'.$url_commentaire.'">'.$url_commentaire.'</a>';?></p>
  
    <?php if(isset($alerte_pseudo)) echo $alerte_pseudo;?>
    <p>Pseudo :<br/>
    <input name="pseudo" size="65" value="<?php echo $pseudo_admin;?>" type="text"/>
    </p>
  
    <?php if(isset($alerte_email)) echo $alerte_email;?>
    <p>Email :<br/>
    <input name="email" size="65" value="<?php echo $adresse_email;?>" type="text"/>
    </p>
  
    <?php if(isset($alerte_commentaire)) echo $alerte_commentaire;?>
    <p>Commentaire :<br/>
    <textarea name="commentaire" rows="10" cols="50" ><?php
    if (!empty($_POST["commentaire"])) {
        echo stripcslashes(htmlspecialchars($_POST["commentaire"],ENT_QUOTES));
    }
    ?></textarea>
    <script type="text/javascript">
    CKEDITOR.replace( 'commentaire',
    {
        filebrowserBrowseUrl : '/ckfinder/ckfinder.html',
        filebrowserImageBrowseUrl : '/ckfinder/ckfinder.html?type=Images',
        filebrowserFlashBrowseUrl : '/ckfinder/ckfinder.html?type=Flash',
        filebrowserUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files&currentFolder=/archive/',
        filebrowserImageUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images&currentFolder=/cars/',
        filebrowserFlashUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
    }
    );
    </script>
    </p>

    <p>Statut du commentaire :<br/>
    <select name="valide">
    <option value="">Sélectionnez un choix</option>
    <option value="0"<?php if (isset($valide) && $valide==0) {echo "selected='selected'";}?>>En attente</option>
    <option value="1"<?php if (isset($valide) && $valide==1) {echo "selected='selected'";}?>>Valider</option>
    </select>
    </p>

    <p>
    <input name="Valider" value="Valider" type="submit"/>
    <input name="Effacer" value="Effacer" type="reset"/>
    </p>
    </form>
    <?php
    //Fin masque formulaire
}
?>
</div>

<?php include('../footer.php');?>

</div>

</body>

</html>

Note : Si vous utilisez l'url rewriting, vous devez penser à modifier la variable $url_commentaire comme ci-dessous :
$url_commentaire = 'http://'.$_SERVER['HTTP_HOST'].'/'.OptimiseUrl($titre_article).'-'.$id_article.'.php#'.$id_transmit.'';

Voir/déposer un commentaire (0) | Signaler un problème