Le livre d'or de mon site fonctionne sans problème avec mon ftp chez Free, mais avec l'hébergeur que j'ai récemment pris (Hebeh), l'affichage est bon mais pas moyen d'envoyer un commentaire ou de faire défiler les différentes pages (contenant les commentaires). Le script est écrit en php4, et ayant très peu de bases dans ce langage, je n'ai pas réussi a déterminer quelles fonctions ou bout de code a changer pour le rendre compatible avec php5. A ce que j'ai pu trouver sur le net il y aurai très peu de modifications faire (remplacer des fonctions, changer la syntaxe...?)... Pouvez vous me donner quelques pistes?
Voici le scripte du livre d'or (Comment'R v1) :
<?php
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;
}
?>
<?php
if(!file_exists("ADmod/livre.dat")) {
$idFicLivre=fopen("ADmod/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="";
function coupeMotsLongs($chaine, $ncaracteres) {
$chaineRes = $chaine;
while(preg_match("/([^ ]{$ncaracteres})[^ ]/", $chaineRes, $corres)) {
$partRep=$corres[1];
$chaineRes=preg_replace("/$partRep/", $partRep . ' <br> ', $chaineRes);
}
return($chaineRes);
}
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("ADmod/livre.dat","a+");
fputs($idFicLivreCom,$n); // 1ère ligne
fputs($idFicLivreCom,"|"); //
fputs($idFicLivreCom,$d."|\n"); //
fputs($idFicLivreCom,$c."\n"); // 2ème ligne
fclose($idFicLivreCom);
}
$TabLivre=file("ADmod/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)]));
}
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");
}
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");
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> , 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=\"livredor.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");
}
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");
}
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> : \n");
print("</font> \n");
print("<input type=\"text\" name=\"n\" size=\"24\"> \n");
print("<br><br> \n");
print("<textarea rows=\"6\" name=\"c\" cols=\"55\" 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");
?>
J'ai eu une erreur sous WAMP avec la fonction ereg() que j'ai remplacée par preg() et je n'ai plus de message d'erreur...
Voici le lien chez Free (php4) ou le livre d'or fonctionne :
http://transbass.free.fr/Site/livredor.php
Et chez Hebeh (php5) où on ne peux pas ajouter de messages ni consulter les différentes pages :
http://www.alexis-coquerel.com/
Merci beaucoup!