Problème livre d'or

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème livre d'or

Re: Problème livre d'or

par david5 » 25 juin 2012, 17:36

OK,

Je m'y attèle, un grand merci.

David

Re: Problème livre d'or

par xTG » 24 juin 2012, 21:29

Les variables qui proviennent du formulaire.

Re: Problème livre d'or

par david5 » 24 juin 2012, 20:46

Bonjour,

Quand tu dis :
soit tu modifies toutes les variables concernées
Que veux tu dire par concernées, c'est à dire toutes quoi!

David

Re: Problème livre d'or

par xTG » 23 juin 2012, 17:09

Ce script est fait pour utiliser la configuration register_global.
Cette configuration est désactivée par défaut depuis PHP5 car elle n'était pas assez prise en considération par les développeurs et ils apportaient de nombreuses failles de sécurité dans leurs codes.
C'est d'ailleurs aussi le cas de ce script.

Je dirai donc qu'à priori c'est cela le problème.
Pour régler le souci, soit tu modifies toutes les variables concernées par leur véritable nom.
A savoir pour l'exemple suivant :
<?php
echo $nom; // créée uniquement avec la valeur de $_POST['nom'] si register_global à ON
echo $_POST['nom']; // accès direct et sécurisé => véritable nom de la variable
?>
<form action="#" method="POST">
  <input type="text" name="nom" />
</form>
Dans cet exemple $nom sera créé par PHP si la configuration register_global est activée.
Mais ce n'est qu'un raccourci vers la véritable variable qui est $_POST['nom'].

Problème livre d'or

par david5 » 23 juin 2012, 17:03

Bonjour à tous,

J'ai un soucis avec mon livre d'or.
C'est un script en PHP que j'ai téléchargé, que j'ai tester en interne via EasyPHP et qui fonctionnait sans problème, je l'ai uploader sur le site et il a fonctionné car des messages y sont inscrit. Mais maintenant , les personnes qui veulent insérer un message, il ne s'affiche plus. Les permissions sur les dossiers et fichiers pour le livre d'or sont 777.
Voici l'url du site : http://www.chevaliers-ste-croix-marbais.be/fr/index.htm.

Le script génère un fichier .dat que j'ai déjà remplacer, croyant que. Mais ce n'est pas ça.

Code : Tout sélectionner

<?php // ##################################################################################### // ============================================================================= // Comment'R 1.0 - (c) 2000 Thierry Arsicaud ([email protected]) // ============================================================================= // // ************************************************************************************* // 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) // ##################################################################################### ?> <?php // ##################################################################################### // **************************************************************************************** // 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=\"livredor.php\">Retour au Livre d'Or</a>\n"); exit; } // ##################################################################################### ?> <html> <head> <title>Livre d'Or</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head> <body bgcolor="#fae2b8" text="#000000" link="#0000EE" vlink="#800080"> <center> <font face="verdana"> <b>- &nbsp; LIVRE D'OR &nbsp; -</b> </font> </center> <br> <!- inserez la première partie de votre code html ici -> <?php // ##################################################################################### // *********************************************************************************** // 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=htmlentities($n); $n=stripslashes($n); $n=trim($n); // nettoyage du commentaire $c=htmlentities($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> &nbsp; \n"); print("<b> \n"); for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) { if($a==$p) print("$a &nbsp; \n"); else print("<a href=\"livredor.php?p=$a\">$a</a> &nbsp; \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\">&nbsp;</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\">&nbsp;</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> &nbsp; \n"); print("<b> \n"); for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) { if($a==$p) print("$a &nbsp; \n"); else print("<a href=\"livredor.php?p=$a\">$a</a> &nbsp; \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=\"livredor.php\"> \n"); print("<center> \n"); print("<br> \n"); print("<font face=\"$policeFondFormulaireTableauB\" color=\"$couleurPoliceFondFormulaireTableauB\" size=\"-1\"> \n"); print("<b>Votre nom</b> :&nbsp; \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"); // ##################################################################################### ?> <!- inserez la seconde partie de votre code html ici -> </body> </html>
Est ce que quelqu'un pourrait m'aider?
Un grand merci pour vos réponses.

David