Bonjour à tous,
Voila ci dessous un script dédié à autorier un visiteur à poster un commentaire. J'aimerais le modifier afin de pouvoir le mettre en place plus facilement.
Tous les commentaires sont sauvegardés dans un fichier "livre.dat" créé à la racine du repertoire où est située la page. Afin de l'installer plus facilement, j'aurais aimé que vous m'aidiez à le modifier.
Il faut savoir que je n'ai jamais fais de php de ma vie et que je n'y connais rien....
En fait, j'aimerais que au lieu de créer un fichier "livre.dat" à la racine du rep, il me crée un nouveau rep à chaque fois que le script est dans une page avec comme nom du rep : "le nom de la page qui a utilisée le script" et avec à l'interieur du rep un fichier "livre.dat" où serait stockés les commentaires.
Je crois pas avoir était trés clair
Voila un exemple :
A la base, j'ai ça :
Mon rep ==> Mapage.php
Mon rep ==> livre.dat
Je voudrais :
Mon rep ==> Mapage.php
Mon rep ==> Ma page ==> livre.dat
Mon rep ==> Mapage2.php
Mon rep ==> Ma page2 ==> livre.dat
etc... où "Ma page" et "Ma page2" sont deux nouveau repertoires
Vous voyez ce que je veux faire ? Quelqu'un peut m'aider ?
L'interet de cette modification est que comme je voudrais insérer le script dans 170 pages d'un coup, je n eme sens pas de le modifier 170 fois...
Voici le script :
<?php
// #####################################################################################
// =============================================================================
// Comment'R 1.0 - (c) 2000 Thierry Arsicaud (deltascripts@ifrance.com)
// =============================================================================
//
// *************************************************************************************
// Ce script affiche la liste des commentaires postés par les utilisateurs par groupes
// ou pages de N commentaires (nombre à définir ci-dessous). Il affiche également un
// formulaire offrant la possibilité d'envoyer de nouveaux commentaires.
//
// Configuration de paramètres d'affichage des deux tableaux utilisés pour
// la mise en forme de la page :
// Tableau A (1 colonne, 2n+1 lignes) : le tableau comprend 1 ligne d'entête, et 2n lignes
// permettant d'afficher alternativement le nom de l'auteur et le texte du commentaire
// Tableau B : affichage du formulaire permettant de poster un nouveau commentaire
// (1 colonne, 2 lignes dont 1 ligne d'entête)
//
// Modifiez les paramètres ci-dessous en n'oubliant pas de refermer
// les guillemets et le point virgule
// *************************************************************************************
// === Paramètres d'affichage du TableauA (affichage des commentaires déjà postés) ===
$largeurTableauxA="80%"; // Largeur du TableauA
$couleurBordTableauA="#bbbbbb"; // Couleur de la bordure du TableauA
$couleurFondEnteteTableauA="#A3DEF1"; // Couleur de fond de la ligne d'entête du tableauA
$policeEnteteTableauA="verdana"; // Police utilisée dans la ligne d'entête du tableauA
$couleurPoliceEnteteTableauA="#000000"; // Couleur de la police utilisée dans la ligne d'entête du tableauA
$couleurFondLigneNomAuteurTableauA="#F6F6F6"; // Couleur de fond des lignes "Nom de l'auteur"
$policeLignesNomAuteurTableauA="verdana"; // Police utilisée dans les lignes "Nom de l'auteur"
$couleurPoliceLignesNomAuteurTableauA="#000000"; // Couleur de la police utilisée dans les lignes "Nom de l'auteur"
$couleurFondLigneCommentaireTableauA="#ffffff"; // Couleur de fond des lignes "Commentaire"
$policeLignesCommentairesTableauA="times"; // Police utilisée dans les lignes "Commentaire"
$couleurPoliceLignesCommentairesTableauA="#000000"; // Couleur de la police utilisée dans les lignes "Commentaire"
$NombreComParPage=10; // Nombre maximum de commentaires à afficher dans le tableau (par page)
$NombreMaxPages=20; // Nombre maximum de pages de commentaires susceptibles d'être affichées
// === Paramètres d'affichage du TableauB (affichage du formulaire permettant d'ajouter un nouveau commentaire) ===
$largeurTableauxB="80%"; // Largeur du TableauB
$couleurBordTableauB="#bbbbbb"; // Couleur de la bordure du TableauB
$couleurFondEnteteTableauB="#A3DEF1"; // Couleur de fond de la ligne d'entête du tableauB
$policeEnteteTableauB="verdana"; // Police utilisée dans la ligne d'entête du tableauB
$couleurPoliceEnteteTableauB="#000000"; // Couleur de la police utilisée dans la ligne d'entête du tableauB
$couleurFondFormulaireTableauB="#F6F6F6"; // Couleur de fond de la cellule affichant le formulaire
$policeFondFormulaireTableauB="verdana"; // Police utilisée dans la cellule affichant le formulaire
$couleurPoliceFondFormulaireTableauB="#000000"; // Couleur de la police utilisée dans la cellule affichant le formulaire
// === Paramètres destinés au contrôle des messages postés (dispositif "anti-piratage") ===
$longueurMaxCommentaires="10000"; // Nombre maximum de caractères pouvant être postés dans un commentaire
$longueurMaxMots="50"; // Nombre maximum de caractères par "mot" (ce dispositif permet d'empêcher une éventuelle augmentation incontrôlée de la largeur des tableaux)
// #####################################################################################
// #####################################################################################
// ****************************************************************************************
// Vérification du nombre de caractères envoyés dans le commentaire éventuellement posté.
// (certains utilisateurs mal intentionnés pourraient être tentés d'envoyer des commentaires
// comportant un très grand nombre de caractères, dans le but de ralentir le temps
// d'affichage du livre d'or)
// ****************************************************************************************
if((@ strlen($n)>$longueurMaxCommentaires) or (@ strlen($c)>$longueurMaxCommentaires)) {
print("Désolé, la taille maximale des commentaires pouvant être postés est limitée à $longueurMaxCommentaires caractères.<br>\n");
print("<a href=\"index.php\">Retour au Livre d'Or</a>\n");
exit;
}
// #####################################################################################
// #####################################################################################
// ***********************************************************************************
// Création du fichier livre.dat s'il n'existe pas
// ***********************************************************************************
if(!file_exists("livre.dat")) {
$idFicLivre=fopen("livre.dat","w+");
fputs($idFicLivre,"Fichier Index. Ne pas éditer !\n");
fclose($idFicLivre);
}
if(!isset($c)) $c="";
if(!isset($n)) $n="";
if(!isset($p)) $p="";
// ***********************************************************************************
// Définition de la fonction coupeMotsLongs($chaine,$ncaracteres) destinée à découper
// mots contenants plus de $ncaracteres caractères.
// (certains utilisateurs envoient parfois des textes contenant des mots très long,
// ce qui a pour effet d'altérer la structure d'affichage des tableaux)
// ***********************************************************************************
function coupeMotsLongs($chaine,$ncaracteres) {
$chaineRes=$chaine;
while(ereg("([^ ]{".$ncaracteres."})[^ ]",$chaineRes,$corres)) {
$partRep=$corres[1];
$chaineRes=ereg_replace($partRep,$partRep." <br> ",$chaineRes);
}
return($chaineRes);
}
// ***********************************************************************************
// Nettoyage et enregistrement des nouveaux commentaires envoyés lors de l'appel du script
// ***********************************************************************************
if ($c and $n) {
// détermination de la date
$tdate=getdate();
$jour=sprintf("%02.2d",$tdate["mday"])."/".sprintf("%02.2d",$tdate["mon"])."/".$tdate["year"];
$heure=sprintf("%02.2d",$tdate["hours"])."H".sprintf("%02.2d",$tdate["minutes"]);
$d=$jour." à ".$heure;
// nettoyage du nom
$n=phplentities($n);
$n=stripslashes($n);
$n=trim($n);
// nettoyage du commentaire
$c=phplentities($c);
$c=str_replace(chr(10)," <br> ",$c);
$c=str_replace(chr(13),"",$c);
$c=stripslashes($c);
$c=trim($c);
$idFicLivreCom=fopen("livre.dat","a+");
fputs($idFicLivreCom,$n); // 1ère ligne
fputs($idFicLivreCom,"|"); //
fputs($idFicLivreCom,$d."|\n"); //
fputs($idFicLivreCom,$c."\n"); // 2ème ligne
fclose($idFicLivreCom);
}
// ***********************************************************************************
// Lecture des messages déjà postés dans le livre, et stockage des données
// dans les tableaux $nom et $commentaire
// ***********************************************************************************
$TabLivre=file("livre.dat");
$nLignesTabLivre=count($TabLivre)-1;
$nCommentaires=$nLignesTabLivre/2;
for($compt=1;$compt<=$nCommentaires;$compt++) {
$nom[$compt]=trim(stripslashes(strtok($TabLivre[($compt*2)-1],"|")));
$date[$compt]=trim(stripslashes(strtok("|")));
$commentaire[$compt]=trim(stripslashes($TabLivre[($compt*2)]));
}
// ***********************************************************************************
// Affichage d'un message de remerciement au cas ou un commentaire a été envoyé en même
// temps que l'appel du script
// ***********************************************************************************
if($n and $c) {
print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
print("<center> \n");
print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
print("<b>Merci pour votre participation !</b> \n");
print("</font> \n");
print("</center> \n");
print("</td></tr> \n");
print("</table> \n");
print("<br> \n");
}
// ***********************************************************************************
// Affichage des commentaires déjà postés dans un tableau
// ***********************************************************************************
if(!$p) {
$p=1; // $p représente le numéro de la page de commentaire à afficher : par défaut, $p=1
}
if($nCommentaires>0) {
print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxA\" align=\"center\" bgcolor=\"$couleurBordTableauA\"> \n");
print("<tr><td> \n");
print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");
print("<tr> \n");
print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"30\"> \n");
if($nCommentaires>$NombreComParPage) {
print("<center> \n");
print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
print("<b>pages</b> \n");
print("<b> \n");
for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) {
if($a==$p) print("$a \n");
else print("<a href=\"index.php?p=$a\">$a</a> \n");
}
print("</b> \n");
print("</font> \n");
print("</center> \n");
}
print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
print("<center> \n");
print("<b><a href=\"#ajout\">ajouter un nouveau commentaire</a></b> <br> \n");
print("</center> \n");
print("</font> \n");
print("</td> \n");
print("</tr> \n");
for($compt=($nCommentaires-(($p-1)*$NombreComParPage));$compt>=max(1,($nCommentaires-($p*$NombreComParPage)+1));$compt--) {
print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\"> \n");
print("<table> \n");
print("<tr> \n");
print("<td width=\"10\"> </td> \n");
print("<td> \n");
print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"><b>".coupeMotsLongs($nom[$compt],$longueurMaxMots)."</b> a écrit, le ".$date[$compt]." :</font> \n");
print("</td> \n");
print("</tr> \n");
print("</table> \n");
print("</td></tr> \n");
print("<tr><td bgcolor=\"$couleurFondLigneCommentaireTableauA\"> \n");
print("<table> \n");
print("<tr> \n");
print("<td width=\"20\"> </td> \n");
print("<td> \n");
print("<font face=\"$policeLignesCommentairesTableauA\" color=\"$couleurPoliceLignesCommentairesTableauA\">".coupeMotsLongs($commentaire[$compt],$longueurMaxMots)."</font>\n");
print("</td> \n");
print("</tr> \n");
print("</table> \n");
print("</td></tr> \n");
}
if(($nCommentaires>$NombreComParPage) and $p<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1))) {
print("<tr> \n");
print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"20\"> \n");
print("<center> \n");
print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
print("<b>pages</b> \n");
print("<b> \n");
for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) {
if($a==$p) print("$a \n");
else print("<a href=\"index.php?p=$a\">$a</a> \n");
}
print("</b> \n");
print("</font> \n");
print("</center> \n");
print("</td> \n");
print("</tr> \n");
}
print("</table> \n");
print("</td></tr> \n");
print("</table> \n");
print("<br> \n");
}
// *********************************************************************************************
// Affichage d'un message d'avertissement au cas où aucun commentaire n'a été encore été envoyé
// *********************************************************************************************
if($nCommentaires<1) {
print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
print("<center> \n");
print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
print("<b>Le livre d'or ne comporte encore aucun commentaire.</b> \n");
print("</font> \n");
print("</center> \n");
print("</td></tr> \n");
print("</table> \n");
print("<br> \n");
}
// ***********************************************************************************
// Affichage du formulaire permettant de poster un nouveau commentaire
// ***********************************************************************************
print("<a name=\"ajout\"></a>");
print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxB\" align=\"center\" bgcolor=\"$couleurBordTableauB\"> \n");
print("<tr><td> \n");
print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");
print("<tr> \n");
print("<td bgcolor=\"$couleurFondEnteteTableauB\" height=\"30\"> \n");
print("<font face=\"$policeEnteteTableauB\" color=\"$couleurPoliceEnteteTableauB\" size=\"-1\"> \n");
if($nCommentaires>0) print("<b><center>Ajouter un nouveau commentaire :</center></b> \n");
else print("<b><center>Envoyer un premier commentaire :</center></b> \n");
print("</font> \n");
print("</td> \n");
print("</tr> \n");
print("<tr><td bgcolor=\"$couleurFondFormulaireTableauB\"> \n");
print("<form method=\"POST\"action=\"index.php\"> \n");
print("<center> \n");
print("<br> \n");
print("<font face=\"$policeFondFormulaireTableauB\" color=\"$couleurPoliceFondFormulaireTableauB\" size=\"-1\"> \n");
print("<b>Votre nom</b> : \n");
print("</font> \n");
print("<input type=\"text\" name=\"n\" size=\"22\"> \n");
print("<br><br> \n");
print("<textarea rows=\"6\" name=\"c\" cols=\"40\" wrap=\"virtual\"></textarea> \n");
print("<br> \n");
print("<input type=\"submit\" value=\"Envoyer !\" name=\"B1\"> \n");
print("</form> \n");
print("</td></tr> \n");
print("</table> \n");
print("</td></tr> \n");
print("</table> \n");
// #####################################################################################
?>
Je connais pas du tout le php, mais il me semble que si je faisais un truc comme ça, ça pourrait marcher :
CODE :
if(!file_exists("livre.dat")) {
$idFicLivre=fopen("livre.dat","w+");
fputs($idFicLivre,"Fichier Index. Ne pas éditer !\n");
fclose($idFicLivre);
}
Bon, là, il verifie, l'existence du "livre.dat".
Ce que je pensais, c'est qu'il suffirait de lui demander de vérifier s'il existe un rep du nom de : "nom de la page d'où vient le script".
Si oui, niquel, il va dans ce rep et ouvre le "livre.dat" pour faire ce qu'il a à y faire.
Si non, il crée ce fameux repertoire et un nouveau "livre.dat"
Apres, il reste plus qu'a modifier deux ou trois chemin d'accés dans le code en remplaçant /livre.dat par une-variable-contenant-le-nom-de-la-page-donc-du-rep/livre.dat
Cela me semble possible, mais bon, comme je ne connais pas le php, je peux pas dire...
Ca vous semble pas possible ma manière de voir les choses ?
J'espere que vous pourrez m'aider, merci d'avance.
A bientôt.
Florent