Site web: permettre aux visiteurs de poster commentaires

Site web: permettre aux visiteurs de poster commentaires - HTML/CSS - Programmation

Marsh Posté le 29-03-2008 à 13:28:29    

:hello:  
Bonjour à tous,
 
j'ai posé une question sur HFR il y a plus d'un an concernant de la programmation VB et vu la compétence (et le tps accordé) des personnes qui m'avaient répondu à l'époque, je reviens de nouveau abuser de votre tps libre ;)
 
J'ai créé un site web il y  a deux ans et demi pour expliquer les règles du poker à mes collègues (plus pratique et surtout plus complet que de le faire à la machine à café. Ca évite de perdre son tapis le soir même sur une règle pas bien comprise).
Depuis j'ai ajouté qq articles sur lesquels j'aimerais avoir le retour de visiteurs (commentaires).
Bien sûr une possibilité serait de passer par un hébergeur de blogs ou d'utiliser un logiciel de blog genre dotclear (j'ai testé rapidement).
 
Mais en fait je ne veux pas du tout que mon site devienne un blog, d'autant que le contenu ne s'y prête pas du tout (ce n'est pas un billet régulier mais des articles qui de tps en tps viennent s'ajouter en étant classés par thème et non par date de publication).
 
En dessous de cet article par exemple:
http://pokerslam.free.fr/Articles/Cotes.html
j'aimerais mettre un masque de saisie dans lequel les visiteurs pourraient poster un commentaire. Mais je ne veux pas changer quoi que ce soit d'autre au site (ok ok la présentation est à chier, ça j'y bosserai un jour :D ).
 
Il y a des sites qui font déjà ça donc je sais qu'on peut le faire sans passer par un blog. Mais dans Firefox, faire "View/Viewsource" ne permet pas de dévoiler le script utilisé  :cry:  
 
Merci d'avance pour votre aide! :jap:

Reply

Marsh Posté le 29-03-2008 à 13:28:29   

Reply

Marsh Posté le 29-03-2008 à 14:07:47    

Petite remarque niveau design : je ne suis pas sûr que le texte vert sur fond jaune à gauche soit très bien pour la lisibilité.
 
Pour en revenir à ta question, ce n'est pas possible à faire "sans aucune modification de ton site" genre en collant 2/3 lignes de HTML. Il faudra passer par un langage côté serveur (PHP) pour enregistrer les données dans une base de données ou un fichier XML par exemple, et pour les restituer ensuite dans ta page.
 
Il faudra aussi prévoir un système pour bloquer les robots spammeurs, sinon tu risque vite d'être submergé de commentaires vantant les mérites de sites louches.
 
Tu peux pour commencer regarder du côté de ce qui existe déja (genre une recherche google sur "script php commentaires" ), tu trouveras très probablement quelque chose qui te conviendra, ou tu auras au moins une base pour commencer à coder toi même.

Reply

Marsh Posté le 29-03-2008 à 14:29:15    

salut ccp6128 (ça me rappelle des bons souvenirs ce pseudo ;)
 
au niveau php, il y a effectivement une partie de mon site qui en utilise déjà
(par exemple http://pokerslam.free.fr/Deal/DealFr.html pour les joueurs de tournoi qui veulent faire des calculs de deal. Mais dans ce cas je ne sauvegarde pas les résultats du calcul donc c'est plus simple que la gestion de commentaires)
 
merci pour tes conseils


Message édité par Rutger le 29-03-2008 à 14:29:27
Reply

Marsh Posté le 29-03-2008 à 15:36:39    

de retour car ça avance un peu de mon côté
recherche google donc qui me conduit à télécharger un script php "commentaires-2.2".
Je place le répertoire "commentaires" à la racine de mon site.
Je dois créer une table mysql "commentaires"
C'est là que ça devient compliqué pour moi.
Je me connecte au gestionnaire de base de données mysql fourni par free.fr (phpMyadmin) et je tente de créer une table "commentaires":
 
Je clique sur l'onglet "sql" afin de copier coller le code donné avec le scipt "commentaires":
http://pokerslam.free.fr/Images/Pb%20script%20commentaires%20-%2001.jpg
 
http://pokerslam.free.fr/Images/Pb%20script%20commentaires%20-%2002.jpg%20
 
et j'obtiens le message d'erreur suivant:
http://pokerslam.free.fr/Images/Pb%20script%20commentaires%20-%2003.jpg
 
vous voyez ce qui cloche dans ces qq lignes de code??


Message édité par Rutger le 29-03-2008 à 19:36:39
Reply

Marsh Posté le 29-03-2008 à 15:58:37    

oui. Vire le DEFAULT '0' dans ta première ligne, tu auras donc simplement :
 
id int(5) NOT NULL AUTO_INCREMENT,
 
 
Le reste me semble bon.

Reply

Marsh Posté le 29-03-2008 à 18:23:01    

Un blog comme Dotclear ou wordpress n'a pas d'apparence particulière en théorie. Tu peux tres bien utiliser un blog pour fait un site commercial par exemple ou ton site de poker. Il suffit de ne pas utiliser l'affichage des sujets mais plutot utiliser la possibilité d'y créer des pages.
 
Le classement par catégorie existe évidement sur ces blogs et pas seulement par date.
 
Bref un bon blog a ta sauce te simplifierait la vie car tu aurais déjà tous les outils en main.
 


---------------
Studio CréeAll
Reply

Marsh Posté le 29-03-2008 à 19:36:18    

ccp6128 a écrit :

oui. Vire le DEFAULT '0' dans ta première ligne, tu auras donc simplement :
 
id int(5) NOT NULL AUTO_INCREMENT,
 
 
Le reste me semble bon.


 
j'ai fait la modif que tu m'as proposé
La table 'commentaires' est désormais créée.
Ca avance donc...jusqu'au message d'erreur suivant  :cry:  
 
Pour permettre l'affichage de commentaires dans une des pages de mon site, je dois:
->lui donner la terminaison .php (.html auparavant)
->mette en début de fichier:
<?php
$rep ='url_relative_du_répertoire_du_script/';
require_once($rep.'config/fonctions.lib.php');
?>
 
 
Je fais donc un essai sur mon article http://pokerslam.free.fr/Articles/Coteshtml
 
Cotes.html ressemble initialement à:

Code :
  1. <HTML>
  2. <HEAD>
  3. <TITLE>Pokerslam Articles: Cotes</TITLE>
  4. <META NAME="Author" CONTENT="Pokerslam">
  5. <META NAME="Description" CONTENT="Articles sur le poker, pour faire progresser votre jeu">
  6. <META NAME="Keywords" CONTENT="Pokerslam, amelioration, apprendre, article, calcul, cote, debutant, esperance, EV, gain, out, Poker, proba, probabilite, progresser, strategie, tirage">
  7. <META HTTP-EQUIV= "Content-Type" CONTENT="text/html; charset=ISO-8859-1">
  8. <META NAME="robots" content="index,follow">
  9. </HEAD>
  10. <body bgcolor="#000066"  text="white" link="lime" vlink="green" background="Images/PDVD_1007 125 Pokerslam">
  11. <FONT SIZE=4>
  12. <TABLE WIDTH="100%" HEIGHT="100%" BORDER="0" ALIGN="LEFT" CELLPADDING="5" CELLSPACING="0" BORDERCOLOR="#E3EDE5">
  13. </BLOCKQUOTE>
  14. </P>
  15. </p>
  16. </FONT>
  17. </BODY>
  18. </HTML>


 
J'ai créé un fichier Cotes.php, placé dans le même répertoire. Seule différence, il commence par le petit paragrahe <php>...:

Code :
  1. <?php
  2. $rep = '/commentaires/';
  3. require_once($rep.'config/fonctions.lib.php');
  4. ?>
  5. <HTML>
  6. <HEAD>
  7. <TITLE>Pokerslam Articles: Cotes</TITLE>
  8. <META NAME="Author" CONTENT="Pokerslam">
  9. <META NAME="Description" CONTENT="Articles sur le poker, pour faire progresser votre jeu">
  10. <META NAME="Keywords" CONTENT="Pokerslam, amelioration, apprendre, article, calcul, cote, debutant, esperance, EV, gain, out, Poker, proba, probabilite, progresser, strategie, tirage">
  11. <META HTTP-EQUIV= "Content-Type" CONTENT="text/html; charset=ISO-8859-1">
  12. <META NAME="robots" content="index,follow">
  13. </HEAD>
  14. <body bgcolor="#000066"  text="white" link="lime" vlink="green" background="Images/PDVD_1007 125 Pokerslam">
  15. <FONT SIZE=4>
  16. ....
  17. </BLOCKQUOTE>
  18. </P>
  19. </p>
  20. </FONT>
  21. </BODY>
  22. </HTML>


 
$rep étant l'url relative du répertoire commentaires, je pensais qu'il fallait effectivement utiliser:
 
<?php
$rep = /commentaires/';
require_once($rep.'config/fonctions.lib.php');
?>
 
(puisque Cotes.html se situe à l'url http://pokerslam.free.fr/Articles/Cotes.php alors que le script est dans http://pokerslam.free.fr/commentaires)
mais l'url http://pokerslam.free.fr/Articles.Cotes.php
donne ceci:
 
http://pokerslam.free.fr/Images/Pb%20script%20commentaires%20-%2004.jpg
 
J'ai donc modifié Cotes.php pour qu'il commence par l'url absolue:
<?php
$rep = 'http://pokerslam.free.fr/commentaires/';
require_once($rep.'config/fonctions.lib.php');
?>
 
Mon article s'affiche alors correctement, mais tjs 3 messages d'erreur en haut de page:
http://pokerslam.free.fr/Images/Pb%20script%20commentaires%20-%2005.jpg
 
Voici ce que contient l'incriminé http://pokerslam.free.fr/commentai [...] s.lin.php:

Code :
  1. <?php
  2. //-----------------------------------------
  3. // fonctions.lib.php
  4. //
  5. // Sujet : librairies de fonctions
  6. //-----------------------------------------
  7. //------------------------------
  8. // connexion à la base de donées
  9. //------------------------------
  10. if ( !isset($rep) || isset($_POST['rep']) || isset($_GET['rep']) || isset($_COOKIE['rep']) ) $rep = '';
  11. include($rep.'config/config.inc.php');
  12. $connection = mysql_connect($host, $user, $password);
  13. $db         = mysql_select_db($database, $connection);
  14. //------------------
  15. // fonction "pop'up"
  16. //------------------
  17. if ($une_popup) $titre_popup = 'Commentaires';
  18. else $titre_popup = '';
  19. echo '<script language="JavaScript">
  20. <!--
  21. function commentaire(nom)
  22. {
  23. popup = window.open(\''.$script_url.'/commentaire.'.$php_extension.'?nom=\'+nom,\''.$titre_popup.'\',\'toolbar=0,location=0,directories=0,menuBar=0,resizable=0,scrollbars=yes,width='.$largeur_popup.',height='.$hauteur_popup.',left=75,top=60\');
  24. if (popup && popup.focus) popup.focus();
  25. }
  26. //-->
  27. </script>';
  28. //----------------------------------------------------------------
  29. // fonction commentaire($nom)
  30. //   1. affiche nombre de commentaires
  31. //   2. affiche l'image commentaire --> lien vers les commentaires
  32. //----------------------------------------------------------------
  33. function commentaire($nom)
  34. {
  35. global $connection, $table, $commentaire_img, $str_titre_page;
  36. $sql = mysql_query('SELECT COUNT(*) FROM '.$table.' WHERE nom = \''.$nom.'\'', $connection);
  37. $enr = mysql_fetch_array($sql);
  38. $nb_commentaires = $enr[0];
  39. echo '<font size=1>['.$nb_commentaires.']&nbsp;</font>';
  40. echo '<a href="javascript:commentaire(\''.$nom.'\')">';
  41. echo '<img src=\''.$commentaire_img.'\' align="absmiddle" border=0 alt="'.$str_titre_page.'">';
  42. echo '</a>';
  43. }
  44. //-----------------------------------------------
  45. // fonction nb_commentaires($nom)
  46. //   affiche UNIQUEMENT le nombre de commentaires
  47. //-----------------------------------------------
  48. function nb_commentaires($nom)
  49. {
  50. global $connection, $table;
  51. $sql = mysql_query('SELECT COUNT(*) FROM '.$table.' WHERE nom = \''.$nom.'\'', $connection);
  52. $enr = mysql_fetch_array($sql);
  53. $nb_commentaires = $enr[0];
  54. echo $nb_commentaires;
  55. }
  56. //--------------------------------------------------
  57. // fonction lien_commentaires($html, $nom)
  58. //   effectue un lien vers les commentaires (pop'up)
  59. //--------------------------------------------------
  60. function lien_commentaires($html, $nom)
  61. {
  62. echo '<a href="javascript:commentaire(\''.$nom.'\')">';
  63. echo $html;
  64. echo '</a>';
  65. }
  66. //----------------------------------------------------
  67. // fonction total_nb_commentaires()
  68. //   affiche le nombre TOTAL de commentaires effectués
  69. //----------------------------------------------------
  70. function total_nb_commentaires($return=0)
  71. {
  72. global $connection, $table;
  73. $sql = mysql_query('SELECT COUNT(*) FROM '.$table, $connection);
  74. $enr = mysql_fetch_array($sql);
  75. $nb_commentaires = $enr[0];
  76. if ( $return == 1 ) return $nb_commentaires;
  77. else echo $nb_commentaires;
  78. }
  79. ?>


Vous voyez ce qui cloche? (on touche au but!)
 
Merci encore une fois pour ton aide ccp!


Message édité par Rutger le 29-03-2008 à 19:41:15
Reply

Marsh Posté le 29-03-2008 à 19:40:19    

Elément important que j'ai oublié d'ajouter: le contenu du fichier config.inc.php (il contient les éléments permettant d'accéder à la base de données mysql):

Code :
  1. <?php
  2. //-----------------------------------------
  3. // config.inc.php
  4. //
  5. // Sujet : fichier de configuration
  6. //-----------------------------------------
  7. //-------------------------------------
  8. // connexion à la base de données MySQL
  9. //-------------------------------------
  10. $database = 'pokerslam';
  11. $host     = 'localhost';
  12. $user     = 'pokerslam';
  13. $password = 'mon mot de passe';
  14. $table    = 'commentaires';
  15. //---------------------------------
  16. // configuration générale du script
  17. //---------------------------------
  18. // extension des fichiers "admin.xxx" et "commentaire.xxx"
  19. $php_extension = 'php';
  20. // langues disponibles : french
  21. $langue = 'french';
  22. // URL du répertoire du script "Les Commentaires" sans "/" à la fin
  23. $script_url = 'http://localhost/commentaires';
  24. // mot de passe de la page d'administration
  25. $admin_password = 'mon mot de passe';
  26. //--------------------
  27. // image "commentaire"
  28. //--------------------
  29. $commentaire_img = $script_url.'/images/commentaire.gif';
  30. //-------------------------------------------
  31. // la page affichant les commentaires (pop'up)
  32. //--------------------------------------------
  33. // true  = activé
  34. // false = désactivé
  35. // cookie : permet de sauvegarder le nom/email de chaque utilisateur
  36. $cookie = true;
  37. $nom_cookie   = "cookie-Commentaires";
  38. $duree_cookie = 3600*24*30;
  39. // wordwrap : true / false
  40. //  \-> retours à la ligne
  41. $wordwrap = true;
  42. // longueur maximale d'un mot
  43. $longeur_max_mot = 30;
  44. // permettre l'utilisation de code HTML dans les commentaires : true / false
  45. $allow_HTML = false;
  46. // afficher les smilies : true / false
  47. //  \-> pour ajouter/modifier des smilies, modifier "smilies.inc.php"
  48. $smilies = true;
  49. // nombre de commentaires affichés par page
  50. $nb_comment_par_page = 10;
  51. // ordre d'affichage des commentaires
  52. // ASC  --> de plus ancien au plus récent
  53. // DESC --> de plus récent au plus ancien
  54. $ordre = 'DESC';
  55. // taille de la pop'up
  56. $largeur_popup = 317;
  57. $hauteur_popup = 355;
  58. // n'ouvrir qu'une unique pop'up pour tous les commentaires
  59. $une_popup = true;
  60. // pour configurer la police, taille et couleur du texte :
  61. // modifier le fichier CSS
  62. $CSS_file = 'config/commentaires.css';
  63. //---------------------------
  64. // affichage des commentaires
  65. //---------------------------
  66. $separation_img = 'images/ligne_separation.gif';
  67. $background_img = 'images/background.gif';
  68. $fleche_gauche_img = 'images/fleche_gauche.gif';
  69. $fleche_droite_img = 'images/fleche_droite.gif';
  70. $background_couleur = '#CCCCCC';
  71. $cadre_couleur = 'black';
  72. $tableau_couleur = '#B4B4B4';
  73. $cadre_formulaire_couleur = 'black';
  74. $formulaire_couleur   = '#CCCCCC';
  75. //-----------------------------------------------------------
  76. // configuration du tableau listant les derniers commentaires
  77. //-----------------------------------------------------------
  78. $nb_derniers_commentaires   = 10;
  79. $limite_extrait_commentaire = 55;
  80. $largeur_tableau  = 500;
  81. $bordure2_couleur = 'black';
  82. $tableau2_couleur  = '#C3C3C3';
  83. $background2_img = $script_url.'/images/background.gif';
  84. $fleche_img  = $script_url.'/images/fleche.gif';
  85. ?>


Message édité par Rutger le 29-03-2008 à 19:52:26
Reply

Marsh Posté le 29-03-2008 à 19:50:39    

Tu as laissé en clair le mdp de ta page d'admin, fais attention.
 
Un chemin relatif, c'est le chemin d'un fichier ou d'un répertoire par rapport au chemin de la page où tu exécutes le script. Si tu veux revenir dans le répertoire parent, c'est "/../".
 
Dans ton cas, ton chemin sera /../commentaires/, vu que tu dois "remonter" le répertoire Articles avant de te rendre dans le répertoire commentaires.
 
Heureusement, mettre une URL ne marche pas, sinon le premier clampin venu pourrait pirater n'importe quel site de cette façon.

Reply

Marsh Posté le 29-03-2008 à 21:00:39    

ccp6128 a écrit :

Tu as laissé en clair le mdp de ta page d'admin, fais attention.
 
Un chemin relatif, c'est le chemin d'un fichier ou d'un répertoire par rapport au chemin de la page où tu exécutes le script. Si tu veux revenir dans le répertoire parent, c'est "/../".
 
Dans ton cas, ton chemin sera /../commentaires/, vu que tu dois "remonter" le répertoire Articles avant de te rendre dans le répertoire commentaires.
 
Heureusement, mettre une URL ne marche pas, sinon le premier clampin venu pourrait pirater n'importe quel site de cette façon.


:jap:
 
je commence donc Cotes.php par:
<?php
$rep = '../commentaires/';
require_once($rep.'config/fonctions.lib.php');
?>
(il faut utiliser ../ et non /../ apparemment)
et désormais l'article s'affiche sans message d'erreur!
:jap:
 
A la fin de Cotes.php, j'ajoute l'appel de la fonction commentaires() afin de permettre aux visiteurs d'ajouter des commentaires:

Code :
  1. ...
  2. C'est tout pour ce premier article. Il aura probablement semblé un peu "dense" aux débutants mais qu'ils
  3. se disent qu'avec l'habitude cela deviendra "simple". Vous pouvez commenter cet article sur le  <a
  4. target="_TOP " href="http://pokerslam.free.fr/punbb/"> forum</a>.
  5. </BLOCKQUOTE>
  6. </P>
  7. </p>
  8. </FONT>
  9. </BODY>
  10. </HTML>
  11. Commenter cet article :
  12. <?php
  13. commentaire('Article Cotes');
  14. ?>


 
A la fin de mon article
http://pokerslam.free.fr/Articles/Cotes.php
 
J'obtiens donc un lien qui permet au visiteur de laisser un commentaire s'il clique dessus.
 
Ca n'a pas tout de suite marché.
En effet au départ le petit lien cliquable ouvrait une fenêtre contenant un message d'erreur (un truc du genre "localhost could not be reached" ).
Dans le fichier de config (config.inc.php), j'ai donc remplacé:
$script_url = 'localhost/commentaires';
par:
$script_url = 'http://pokerslam.free.fr/commentaires';
 
tu as une idée sur la raison pour laquelle l'adresse d'origine (localhost) ne fonctionnait pas?
(ce n'est pas très important de toute façon car avec l'url directe ca fonctionne nickel, mais c'est juste pour "culture générale" ).
 
Merci bcp pour ton aide ccp6128
 
En espérant pouvoir te rendre la pareille un de ces 4
:jap:

Reply

Marsh Posté le 29-03-2008 à 21:00:39   

Reply

Marsh Posté le 30-03-2008 à 01:13:31    

En effet c'était bien ../ et pas /../ .Un chemin relatif ne commence jamais par /, vu que le / du début représente la racine (donc est un signe que c'est un chemin absolu).
 
 
La variable $script_url est utilisée côté client pour afficher différents eléments (regarde comment les url des images sont construites). Il faut donc mettre l'url publique pour que ca marche, puisque si tu mets localhost le client cherchera en local (sur son propre pc). Il y a deux types de variables utilisées pour ce script php :  
 
- Celles qui sont utilisées en interne par les scripts pour des opérations d'écriture/lecture de fichiers ou de base de données. C'est le cas pour $rep qui sert à faire un include du fichier de config.
 
- Celles qui sont envoyées au client pour afficher les éléments du formulaire (images, adresse du popup du formulaire). Il faut donc que l'adresse indiquée soit accessible par le client.
 
 
Ce n'est pas pressé et ca dépendra probablement de l'affluence sur ton site, mais il se peut qu'un jour tu te fasse spammer par des commentaires publicitaires. Il faudra alors que tu trouves un moyen de filtrer les indésirables (filtrage par ip, ou alors un champ caché invisible aux utilisateurs mais rempli par les robots que tu utilises pour ne pas valider le commentaire, ou captcha (image avec des chiffres)).
 
Edit - complément d'informations, il est un peu tard et j'ai pas été clair du premier coup.

Message cité 1 fois
Message édité par ccp6128 le 30-03-2008 à 01:20:28
Reply

Marsh Posté le 04-04-2008 à 09:45:49    

ccp6128 a écrit :


Ce n'est pas pressé et ca dépendra probablement de l'affluence sur ton site, mais il se peut qu'un jour tu te fasse spammer par des commentaires publicitaires. Il faudra alors que tu trouves un moyen de filtrer les indésirables (filtrage par ip, ou alors un champ caché invisible aux utilisateurs mais rempli par les robots que tu utilises pour ne pas valider le commentaire, ou captcha (image avec des chiffres)).


 
Si cela arrive, je passerai à un script plus performant. Celui fournit un panneau d'administration (me permet d'effacer messages indésirables) mais:
->pas de caractères de contrôle pour valider un message (=anti robots)
->je ne suis pas émailé en cas de commentaire posté, donc ca peut prendre un peu de tps avant que je détecte un spamming
 
Je pense qu'installer un script plus performant ne me posera pas de pb car comme ct la première fois j'ai appris pas mal de choses (notamment grâce à toi).
Comme la création d'une nouvelle table de données par l'interface de Free ou la gestion des variables internes/client.
 :jap:  

ccp6128 a écrit :


Edit - complément d'informations, il est un peu tard et j'ai pas été clair du premier coup.


 
Bcp de bonnes infos dans ton message!
 :jap:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed