Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AJOUTER FACILEMENT DES COMMENTAIRES À VOS PAGE PHP SANS SQL/DB


Information sur la source

Description

Cliquez pour voir la capture en taille normale
Infos
*****
Ce script php ajoute très simplement une gestion des commentaires à votre page sans SQL/DB.
Très utile pour interagir avec les internautes qui pourront ainsi exprimer leurs impressions sur vos pages photos ou vos articles.

Utilisations
************
Il suffit d'ajouter la ligne suivante à l'endroit ou vous désirez que les commentaires s'affichent:

    include("http://www.monsite/gestion_commentaires_plus.inc");

Si vous désirez gerer les pseudos par cookies, ajouter les lignes suivantes en premier dans votre page php:

    <?
    //Cookies du pseudo
    //*****************
    
    $pseudo = $_POST['pseudo'];  
    //Enregistre le pseudo actuel
    if(($pseudo != "")&&($pseudo != "Anonyme"))setcookie ("cookie_rep", $pseudo, time()+3600*24*365); //valable 1 année
    
    //Lecture du pseudo
    $cook_rep= $HTTP_COOKIE_VARS["cookie_rep"];
    
    if(!isset($cook_rep))$cook_rep = "Anonyme";
    if($pseudo == "")$pseudo = $cook_rep;
    ?>
    

Demo
****
http://www.jeunessebottens.com/images/albums_photos/manifs/giron_2006/photos_giron/samedi/tonelle/samedi.php

Bouillou

 

Source

  • <?php
  • /* ***************************************************** */
  • /* Gestion des commentaires des pages photos */
  • /* */
  • /* Date de modification : 25 juillet 2006 */
  • /* Auteur : Bouillou */
  • /* */
  • /* Gère, crée ou affiche les commentaires s'ils existent */
  • /* */
  • /******************************************************* */
  • //*************************
  • //Définitions des variables
  • //*************************
  • $debug = 1; //0=off / 1=on
  • $notification_mail = 1; //0=non / 1=oui
  • $adresse_mail = "monmail@mail.com";
  • $provenance_mail = "From: commentaire_photo@domaines.com";
  • //****
  • //Main
  • //****
  • //Récupère le commentaire
  • $commentaire = $_POST['commentaire'];
  • //Extrait le nom de la page et l'utilise pour le nom du fichier de sauvegarde en ".txt"
  • $script_name = $_SERVER['SCRIPT_NAME'];
  • $pos = strrpos($script_name, "/");
  • $path = substr($script_name, $pos+1, strlen($script_name) - $pos - 5).'.txt';
  • if($debug == 1)
  • echo "path :".$path."<br />";
  • //Gestion du cookies
  • if(!isset($pseudo))
  • {
  • $pseudo = $_POST['pseudo'];
  • if($pseudo == "")$pseudo = "Anonyme";
  • if($debug == 1)
  • echo "<br /><br />Pas de cookies!!!<br /><br />";
  • }
  • else
  • if($debug == 1)
  • echo "<br /><br />Cookies actifs pseudo = <br /><br />".$pseudo;
  • //Enregistre et affiche les commentaires
  • if(isset($_POST['submit']))
  • save_comment($path,$pseudo,$commentaire);
  • else
  • //Affiche les commentaires
  • if(file_exists($path))
  • echo affiche_commentaires($path);
  • //Affichage du formulaire
  • echo '
  • <form enctype="multipart/form-data" name="comment_form" action="'.$_SERVER['PHP_SELF'].'" method="POST">
  • <br />Votre Pseudo<br />
  • <input name="pseudo" type="text" value="'.$pseudo.'" size="20" >
  • <br />Ajouter votre commentaire ici:<br />
  • <textarea name="commentaire" cols="70" rows="5"></textarea><br />
  • <input type="submit" name="submit" value="Envoyer le commentaire" />
  • <br /><br />
  • </form>
  • ';
  • //*********
  • //Fonctions
  • //*********
  • function affiche_commentaires($path)
  • {
  • global $debug;
  • if($debug == 1)
  • echo "<br /><br />Affichage des commentaires<br />";
  • $handletmp = fopen($path,"r");
  • $tableau_content = file($path);
  • fclose($handletmp);
  • //Affichage des commmentaires
  • //***************************
  • // boucle sur tous les elements
  • $HTML = '<style>.font_tableau{color: black; font-size: 10pt;}</style><br /><br />';
  • $HTML .= '<center><table width="550">';
  • $HTML .= '<tr><td align="center" bgcolor="#BEBEBE"><b>Vos impressions</b></td></tr>';
  • for($i=0; $i < count($tableau_content); $i++)
  • {
  • if($i%2==0)
  • {
  • $HTML .= '<tr><td class="font_tableau" valign="center" align="left" bgcolor="#FFFFFF">';
  • $HTML .= $tableau_content[$i].'</td></tr>';
  • }
  • else
  • {
  • $HTML .= '<tr><td class="font_tableau" valign="center" align="left" bgcolor="#BEBEBE">';
  • $HTML .= $tableau_content[$i].'</td></tr>';
  • }
  • }
  • $HTML .= '</table></center>';
  • return $HTML;
  • }
  • function save_comment($path,$pseudo,$commentaire)
  • {
  • //Enregistrement du commentaire
  • //*****************************
  • global $debug;
  • global $notification_mail;
  • if($debug == 1)
  • echo "<br /><br />Enregistrement des commentaires<br />path: ".$path."<br />pseudo: ".$pseudo."<br />commentaire: ".$commentaire."<br />";
  • global $adresse_mail;
  • global $provenance_mail;
  • if(file_exists($path))
  • {
  • $handle = fopen($path,"r");
  • $tableau_content = file($path);
  • fclose($handle);
  • }
  • //remplace le retour à la ligne par <br /> et le \' par '
  • $commentaire=eregi_replace("\r\n","<br />",$commentaire);
  • $commentaire=eregi_replace("\\\'","'",$commentaire);
  • if(($commentaire != "")&&(($commentaire . "\r\n") != $tableau_content[count($tableau_content)-1]))
  • {
  • $handle = fopen($path,"w");
  • for($i=0;$i < count($tableau_content); $i++)
  • {
  • if(($tableau_content[$i] != "")&&($tableau_content[$i] != "\r\n"))
  • fwrite($handle,$tableau_content[$i]);
  • }
  • $str_out = $pseudo." le ".date('d.m.y à H:i:s')."\r\n".$commentaire."\r\n";
  • fwrite($handle,$str_out);
  • fclose($handle);
  • if($notification_mail == 1)
  • {
  • $message = $pseudo." le ".date('d.m.y à H:i:s')."\r\n".$commentaire."\r\nhttp://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
  • mail($adresse_mail,"Nouveau commentaire de ".$pseudo,$message,$provenance_mail);
  • }
  • }
  • else
  • {
  • if($debug == 1)
  • echo "<br /><br />Commentaire vide ou redondant!!!<br />";
  • }
  • echo Affiche_commentaires($path);
  • }
  • ?>
<?php
/* ***************************************************** */
/* Gestion des commentaires des pages photos             */
/*                                                       */
/* Date de modification : 25 juillet 2006                */
/* Auteur               : Bouillou                       */
/*                                                       */
/* Gère, crée ou affiche les commentaires s'ils existent */
/*                                                       */
/******************************************************* */
 
 //*************************
 //Définitions des variables
 //*************************
 
 $debug = 1; //0=off / 1=on
 $notification_mail = 1; //0=non / 1=oui 
 $adresse_mail = "monmail@mail.com";
 $provenance_mail = "From: commentaire_photo@domaines.com";
 
 //****
 //Main
 //****
 
 //Récupère le commentaire
 $commentaire = $_POST['commentaire'];
 //Extrait le nom de la page et l'utilise pour le nom du fichier de sauvegarde en ".txt"
 $script_name = $_SERVER['SCRIPT_NAME'];
 $pos = strrpos($script_name, "/");
 $path = substr($script_name, $pos+1, strlen($script_name) - $pos - 5).'.txt';
 if($debug == 1)
   echo "path :".$path."<br />";
 
 //Gestion du cookies
 if(!isset($pseudo))
   {
   	$pseudo = $_POST['pseudo'];
    if($pseudo == "")$pseudo = "Anonyme";
    if($debug == 1)
      echo "<br /><br />Pas de cookies!!!<br /><br />";
  }
 else 
  if($debug == 1)
   echo "<br /><br />Cookies actifs pseudo = <br /><br />".$pseudo;

 //Enregistre et affiche les commentaires
 if(isset($_POST['submit']))
  save_comment($path,$pseudo,$commentaire);
 else
 //Affiche les commentaires
   if(file_exists($path))
      echo affiche_commentaires($path);  
 
 //Affichage du formulaire
 echo '
 <form enctype="multipart/form-data" name="comment_form" action="'.$_SERVER['PHP_SELF'].'" method="POST"> 
 <br />Votre Pseudo<br />
 <input name="pseudo" type="text" value="'.$pseudo.'" size="20" >
 <br />Ajouter votre commentaire ici:<br />
 <textarea name="commentaire" cols="70" rows="5"></textarea><br />
 <input type="submit" name="submit" value="Envoyer le commentaire" />
 <br /><br />
 </form>
 ';
 
 //*********
 //Fonctions
 //********* 

 function affiche_commentaires($path)
 {
  global $debug;
  if($debug == 1)
   echo "<br /><br />Affichage des commentaires<br />";
 
  $handletmp = fopen($path,"r");
  $tableau_content = file($path);
  fclose($handletmp);
     
  //Affichage des commmentaires  
  //***************************
  
  // boucle sur tous les elements
  $HTML  = '<style>.font_tableau{color: black; font-size: 10pt;}</style><br /><br />';
  $HTML .= '<center><table width="550">';
  $HTML .= '<tr><td align="center" bgcolor="#BEBEBE"><b>Vos impressions</b></td></tr>'; 
 
  for($i=0; $i < count($tableau_content); $i++)
  {
    if($i%2==0)
      {
       $HTML .= '<tr><td class="font_tableau" valign="center" align="left" bgcolor="#FFFFFF">';
       $HTML .= $tableau_content[$i].'</td></tr>';
      }
    else
     {
       $HTML .= '<tr><td class="font_tableau" valign="center" align="left" bgcolor="#BEBEBE">';
       $HTML .= $tableau_content[$i].'</td></tr>';
     }
  }
  $HTML .= '</table></center>';
  
  return $HTML;
 } 
 
 
 function save_comment($path,$pseudo,$commentaire)
  {
   //Enregistrement du commentaire	
   //*****************************
   
   global $debug;
   global $notification_mail;
   if($debug == 1)
   echo "<br /><br />Enregistrement des commentaires<br />path: ".$path."<br />pseudo: ".$pseudo."<br />commentaire: ".$commentaire."<br />";
 
   global $adresse_mail;
   global $provenance_mail;
  
   if(file_exists($path))
     {
      $handle = fopen($path,"r");
      $tableau_content = file($path);
      fclose($handle);  
     }
   //remplace le retour à la ligne par <br /> et le \' par '
   $commentaire=eregi_replace("\r\n","<br />",$commentaire);
   $commentaire=eregi_replace("\\\'","'",$commentaire);   

   if(($commentaire != "")&&(($commentaire . "\r\n") != $tableau_content[count($tableau_content)-1]))
     { 
      $handle = fopen($path,"w"); 
      for($i=0;$i < count($tableau_content); $i++)
         {  
          if(($tableau_content[$i] != "")&&($tableau_content[$i] != "\r\n"))
          fwrite($handle,$tableau_content[$i]);
         }     
      $str_out = $pseudo." le ".date('d.m.y à H:i:s')."\r\n".$commentaire."\r\n";
      fwrite($handle,$str_out);   
      fclose($handle);
      if($notification_mail == 1)
        {
         $message = $pseudo." le ".date('d.m.y à H:i:s')."\r\n".$commentaire."\r\nhttp://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
         mail($adresse_mail,"Nouveau commentaire de ".$pseudo,$message,$provenance_mail);
        } 
     }
   else
    {
     if($debug == 1)
      echo "<br /><br />Commentaire vide ou redondant!!!<br />";	
    }   
   echo Affiche_commentaires($path); 
 }
 
?>

Conclusion

N'hésitez pas à challenger mon code ;o)

En espérant que ce code sera utile,

A+,

Bouillou
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de coockiesch le 26/07/2006 07:24:15

Salut!
Tu devrais coder avec register_gloabsl à OFF: d'un point de vue sécurité c'est beaucoup mieux... :)

Autrement, tu devrais protéger les commentaires avec htmlentities, pas que qlqn s'amuse à rentrer du HTML ou JavaScript ;)

@++

R@f

signaler à un administrateur
Commentaire de Bouillou2 le 26/07/2006 10:52:07

Salut,

Effectivement, cette sécurité n'est pas implémentée ce qui n'est pas très bien...

Du côté des variables globales, pourquoi cela pose un problème sécuritaire?

A+,

Bouillou

signaler à un administrateur
Commentaire de kiki2sirom le 26/07/2006 11:32:25

salut
il ne faut pas faire de count dans une boucle mais avant la boucle.
ligne 88 et 133 : for($i=0; $i < count($tableau_content); $i++)

à remplacer par :
$nb=count($tableau_content);
for($i=0; $i < $nb; $i++)

optimisation non négligeable si tu as beaucoup de commentaires

cdt

kiki

signaler à un administrateur
Commentaire de coockiesch le 26/07/2006 14:29:18

Salut!
Parce qu'on peut éventuellement, pour une variable non-initialisée, lui injecter une valeur depuis l'extérieur...

@++

R@f

signaler à un administrateur
Commentaire de Anthomicro le 26/07/2006 22:45:46

Salut,

pense à vérifier que  $commentaire = $_POST['commentaire']; existe car sinon tu auras une erreur d'undefined variable ;)

#  $commentaire=eregi_replace("\r\n","<br />",$commentaire);
#    $commentaire=eregi_replace("\\\'","'",$commentaire);

tu peux remplacer ça par un str_replace et puis un stripslashes() ;)

Sinon je trouve que l'idée est sympa et l'utilisation a l'air simple ;)

a +

signaler à un administrateur
Commentaire de Vyper909 le 31/07/2006 15:39:33

Il est aussi important de ne PAS utiliser de fichiers ayant une extension de type ".inc" car la plupart des serveurs (Apache ou autres) ne connaissent pas cette extension et si un "hacker" réussit à connaitre les noms de fichiers "include" (ce qui n'est pas très difficile), il peut tenter de les faire exécuter par le serveur et comme il ne connait pas l'extension, il les affichera comme du texte.  Pour un script de commentaires ce n'est pas vital, mais pour d'autres trucs (un fichier include qui comprendrait un nom d'utilisateur et mot de passe pour une base de données, par exemple), c'est la sécurité complète de ton site qui est en jeu.

Je nomme TOUS Mes fichiers includes avec l'extension ".php" à la fin, comme de vrais fichiers PHP.  Donc si quelqu'un veut les exécuter, ca ne fonctionnera tout simplement pas.

Sinon je crois que la source est bien et je vais probablement m'en inspirer pour un petit "guestbook" sur mon site perso, un jour...

signaler à un administrateur
Commentaire de Bouillou2 le 31/07/2006 15:43:25

Merci pour tous vos commentaires!

J'en prends bonne note et je réaliserai une version 1.1 dès que j'aurai un peu de temps.

A+,

Bouillou

signaler à un administrateur
Commentaire de JackNUMBER le 05/01/2007 12:43:48

bonjour !
j'orai aimé savoir si il était possible de faaire en sorte que les commentaires les plus ressents s'affichent en haut

merci

signaler à un administrateur
Commentaire de malalam le 05/01/2007 12:53:32 administrateur CS

Hello,

faites attention à l'orthographe quand même, un minimum...
"bonjour!
J'aurais aimé savoir s'il était possible de faire en sorte que les commentaires les plus récents s'affichent en haut.

Merci"

signaler à un administrateur
Commentaire de JackNUMBER le 05/01/2007 13:40:48

ha oui, désolé...

signaler à un administrateur
Commentaire de MadOlivierMax le 22/02/2007 11:44:51

Bonjour tout le monde,

Je suis aussi intérresser pour avoir les commentaires au début (et ne pas se taper tous les commentaires avant (même si c'est une logique !!!))
Donc je fais un up sur cette demande en attendant vos réponses je remercie Bouillou (particulièrement) pas  Anthomicro et Vyper909 pour les précisions dans le code.

signaler à un administrateur
Commentaire de pwepwe973 le 29/12/2007 03:49:25

comment faire pour les pseudo frame le système de récupération de la page ne marche pas

signaler à un administrateur
Commentaire de gregchris789 le 01/03/2008 19:01:26

bonjour voila je suis novice lol petite question   include("http://www.monsite/gestion_commentaires_plus.inc");
je dois le metres ou ? en php ou bien htlm je comprend pas

signaler à un administrateur
Commentaire de nimp0rtequi le 13/03/2008 21:28:22

Bonjour,
Je suis encore moins que novice aussi, mais j'ai lu un peu de doc et me suis fait aider par un ami.
Donc j'ai renommé le gestion_commentaire_plus.inc en gestion_commentaire_plus.php pour plus de sécurité, d'après ce que j'ai lu plus haut.
J'ai aussi mis l'option
$debug = 0; //0=off / 1=on
à la place de
$debug = 1; //0=off / 1=on
pour éviter d'afficher des commentaires de débogage du script au milieu de ceux des visiteurs.
Globalement ça marche bien. Mais peut-être est-ce dù au CSS ou à la ligne concernant l'affichage dans un tableau HTML de 550 pixels : sur firefox sous windows, ça me change ma mise en page de départ.
Par contre avec firefox sous linux, ça apparait comme je veux
Un exemple :
http://thibault.aspe.free.fr/content/christian_rosset_10022008.php
un autre :
http://thibault.aspe.free.fr/content/chereeunschnell022008.php

Enfin, bravo, ce script tourne bien.
Et pour répondre au demandeur ci-dessus, il faut nommer la page sur laquelle on veut que le commentaire agisse en .php
et mettre dans le code de cette page :
<?php include (gestion_commentaires_plus.inc");?>
si le formulaire gestion_commentaires_plus.inc est bien dans le même répertoire que le fichier sur lequel on veut qu'il agisse.
Voilà ce que j'ai appris et appliqué hier soir.
comme quoi ce script est éfficace même avec les novices du php.

signaler à un administrateur
Commentaire de haddaoui22 le 17/03/2009 17:07:41

<script type="text/javascript"><!--
google_ad_client = "pub-0502958480350610";
google_ad_host = "pub-1599271086004685";
/* 200x200, ?? ??????? 09/05/08 */
google_ad_slot = "8059958808";
google_ad_width = 200;
google_ad_height = 200;
//-->
</script>
<script
src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script>

signaler à un administrateur
Commentaire de thomas0592 le 03/04/2009 20:30:37 6/10

Salut,
Bon travail! Pour la simplification de l'installation, j'ai juste une question à vous poser comment fait-on pour personnaliser la page du commentaire en ajoutant une image background pour les commentaires sur "vos impressions".
Merci.

signaler à un administrateur
Commentaire de thomas0592 le 03/04/2009 20:37:28

Salut,
Comment masquer les cookies affichés au dessus de l'affichage des commentaires.
Merci.

signaler à un administrateur
Commentaire de atoufa266 le 12/05/2009 23:46:28

good

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Ajouter des commentaires a des news [ par jeromeke ] Bonjour,je suis à la recherche d'un script qui explique comment ajouter des commentaires à des news.Merci d'avance.Jérôme Compteur de nombre de commentaires posté pour une news [ par jeromeke ] Voila je comprend pas trop le principe alors si qqun pourrait m'aider je serais ravis!Merci d'avance,Jérôme Sécurité pour un script de commentaires !!! et droits d'auteur?? [ par perig ] BonjourJe suis désolé, je n'ai pas fini de vous embêter avec mes questions !!!! Voilà la question du jour :J'ai crée un script qui pe requête count [ par Tomcube ] Salut !J'ai une table news avec mes news, une table commentaires où sont stockés les commentaires de ces news. Dans ma page de news (qui en affiche 30 comment faire pour l'ajout de commentaire [ par ShaDleCroW ] jaimerai savoir quelle sont les &#233;tapes et quelle sont les balises pour que nimporte kelle internote puisse ajouter des commentaire a propos d'une Plusieurs Commentaires sur une meme page a partir de la BDD [ par djangoboy ] Bonjour a tous, J'ai une question et oui ca m'arrive : J'ai r&#233;alis&#233; un script de news et aussi un script d'agenda, pour le moment tout va Commentaires [ par Dyx50 ] Bonsoir, J'aimerais savoir ou trouver un script de commentaire comme celui ci : http://www.grandtheftauto.fr/gtasanandreas/soluce/missions/robbing-u Commentaires avec identification [ par slurp9562 ] Bonjour bonjour!Je vous explique un peu ce que je cherche:un espace commentaire pas si simplet que cela. Ce serai un espace ou si l'on est connecté on prb incrémentation php et recuperer 2 tables dans 1 page [ par dtbfefe ] Bonjour ,j ai un gros soucis dans une incr&#233;mentation, enfin je pense que c'est le plus interressant pour ce dont je veux faire:explications:j ai Ajout d'un "module" de commentaire. [ par Date Nagumo ] Bonsoir, J'ai cr&#233;&#233; un site consacr&#233; au Japon et, sur la page d'accueil, j'ai mis une rubrique "&#233;dito". J'aimerais ins&#233;rer su


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.