Les warning en questions:
Code : Tout sélectionner
Warning: file(): Unable to access FICHIER_MESSSAGES in livredor.php on line 145
Warning: file(FICHIER_MESSSAGES): failed to open stream: No such file or directory in livredor.php on line 145<?php
echo '<?xml version="1.0" encoding="iso-8859-1"?>' . "\n";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Mon livre d'or</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
/* PARAMETRES A DEFINIR */
//Nombre maximal de commentaires à afficher par page
define('NB_COM_PAR_PAGES',10);
//Nombre maximal de pages de commentaires affichées
define('NB_MAX_PAGES',10);
//Nombre maximal de caractères possibles dans un commentaire
define('LONGUEUR_MAX_COM',1500);
//Nombre maximal de caractères par mot
//Pour eviter une augmentation de la largeur des tableaux
define('LONGUEUR_MAX_MOT',15);
//Chemin de fichier où l'on stocke les messages du livre d'or
define('FICHIER_MESSAGES', 'livredor.dat');
$message= (isset($POST['message'])) ? $_POST['message'] : "";
$nom= (isset($POST['nom'])) ? $_POST['nom'] : "";
$email= (isset($POST['email'])) ? $_POST['email'] : "";
$page= (isset($POST['page'])) ? $_POST['page'] : 1;
//************************************************
//Vérification du nombre de caractères envoyés dans
//le commentaire éventuellement posté par sécurité
//contre certains utilisateurs mal intentionés.
//************************************************
if((strlen($nom)>LONGUEUR_MAX_COM)
|| (strlen($message)>LONGUEUR_MAX_COM)){
echo'Désolé, la taille maximale des commentaires ';
echo'pouvant être postés est limité à ';
echo LONGUEUR_MAX_COM . ' caractè.<br/>'."/n";
echo '<a href=' .$_SERVER['PHP_SELF'] . '>';
echo 'Retour au livre d\'Or</a>'."\n";
exit;
}
//************************************************
//Création du fichier livredor.dat s'il n'existe pas
//************************************************
if(!file_exists(FICHIER_MESSAGES)){
//Attention le répertoire doit avoir les droits en écriture
//pour lcréation du fichier
$FichierLivre=fopen(FICHIER_MESSAGES,'w+');
$ligne1 = "Fichier livre d'or, ne pas éditer !\n";
fputs($FichierLivre, $ligne1);
fclose($FichierLivre);
}
//************************************************
//Définition de la fonction CoupeLongsMots pour
//couper les mots contenant plus de $lencaractères
//(pour ne pas étirer la mise en page)
//************************************************
function CoupeLongsMots($chaine,$len)
{
$pattern ='/([^ ]{'.$len.'})/si';
$replace = '\1'.' <br/> ';
return preg_replace($pattern, $replace, $chaine);
}
//************************************************
//Nettoyage et enregisterment des nouveaux commentatires
//envoyés par le formulaire d'ajout
//************************************************
if($message && $mail &&$nom){
//Formatagede la date courante
$tsnow=time();
$jour=date("d/m/Y", $tsnow);
$heure=dpte("H:i", $tsnow);
$d=$jour.' à '.$heure;
//Nettoyage du nom
$nom=htmlentities($nom);
$nom=stripslashes($nom);
$nom=trim($nom);
//Nettoyage du mail
$email=htmlentities($email);
$email=stripslashes($email);
$email=trim($email);
$arobas=strstr($email, '@');
//ajout du commentaire que si @ dans le mail
if($arobas){
//Nettoyage du commentaire
$message=htmlentities($message);
$message=stripslashes($message);
$message=trim($message);
//On change les nouvelles lignes en <br/>
$message=str_replace(chr(10)," <br/> ",$message);
//On supprime les retour de chariots
$message=str_replace(chr(13),"",$message);
//Ouverture du fichier des commentaires
$FichierDesCom=fopen(FICHIERS_MESSAGES,"a+");
//Ecriture du mail, auteur et date sur une ligne
fputs($FichierDesCom,"<a href=\"mailto:".$email."\">");
fputs($FichierDesCom,$nom);
fputs($FichierDesCom,"</a>");
fputs($FichierDesCom,"|");
fputs($FichierDesCom,$d."|\n");
//Ecriture du message sur une 2 ligne
fputs($FichierDesCom,$message."\n");
fclose($FichierDesCom);
//Affichage d'un remerciement pour le commentaire
echo"<div class='avertissement' align=\"center\">";
echo"Merci pour votre participation!";
echo"</div>";
echo"<br/>";
}else{
//Affichage d'un message d'erreur mail non valide
echo"<div class='avertissement' align='center'>";
echo"Adresse E-Mail non valide !";
echo"</div>";
echo"<br/>";
}
}
//************************************************
//Lecture des messages déjà postés dans le livre,
//et stockage des données dans les tableaux
//************************************************
//Lecture du fichier des commentaires
$TabLivre=file(FICHIER_MESSSAGES);
//Nombre de ligne du fichier
$nLignesTabLivre=count($TabLivre)-1;
//Nombre total de commentaires
$nbCom=$nLignesTabLivre/2;
//On récupère les noms, dates, commentaires
for($cpt=1;$cpt<=$nbCom;$cpt++){
$noms[$cpt]=strtok($TabLivre[($cpt*2)-1],"|");
$dates[$cpt]=strtok("|");
$comments[$cpt]=$comments[($cpt*2)];
$noms[$cpt]=trim(stripslashes($noms[$cpt]));
$dates[$cpt]=trim(stripslashes($dates[$cpt]));
$comments[$cpt]=trim(stripslashes($comments[$cpt]));
}
//************************************************
//Affichage des commentaires déjà postés
//************************************************
if($nbCom>0){
//Nombre de pages de commentaires théorique
$nbdepages= floor((($nbCom-1)/NB_COM_PAR_PAGES)+1);
echo "<div class='general'>";
echo "<h1>Livre d'or : Les commentaires des visiteurs";
echo "</h1>\n";
echo"<br/><br/>\n";
//Affiche les liens vers les pages suivantes
//En haut de la page à droite
if($nbCom>NB_COM_PAR_PAGES){
echo "<div class='pages'>pages ";
for($i=1;$i<=min(NB_MAX_PAGES,$nbdepages);$i++){
//Si c'est le numéro de page courante
if($i=$page){
echo $i. ' ';
//sinon on met un lien dessus
}else{
echo '<a href="livredor.php?page='.$i.'">';
echo $i . "</a>";
}
}
echo "</div>\n";
}
// Position du 1er commentaire de la page courante
// à afficher lecture débutant par la fin)
$FirstComPage=$nbCom-(($page-1)*NB_COM_PAGES);
// Position du dernier à afficher (plus ancien)
$LastComPage= max(1,($nbCom-($page*NB_COM_PAR_PAGES)+1));
// Affiche les commentaires de la page courante
for($cpt=$FirstComPage;$cpt>=$LastComPage;$cpt--){
echo "<div class='auteurdate'><b>";
echo CoupeLongsMots($noms[$cpt],LONGUEUR_MAX_MOT);
echo "</b> a écrit, le ".$dates[$cpt]."</div>\n";
echo "<div class='commentaire'>";
echo CoupeLongsMots($comments[$cpt],LONGUEUR_MAX_MOT);
echo "</div>\n";
}
// Affiche les liens vers les pages suivantes
// En bas de spages à droite
if($nbCom>NB_MAX_PAGES){
echo "<div class='pages'>pages ";
for($i=1;$i<=min(NB_MAX_PAGES,$nbdepages);$i++){
// Si c'est le numéro de page courante
if($i==$page){
echo $i.' ';
// Sinon on met un lien dessus
}else{
echo '<a href="livredor.php?page='.$i.'">';
echo $i . '</a> ';
}
}
echo"</div>";
}
echo "<br/> \n";
}
//************************************************
//Avertissement si il n y a pas encore de commentaire
//************************************************
else if ($nbCom<1){
echo "<div align=\"center\" class=\"avertissement\">";
echo "Le livre d'or ne comporte encore aucun commentaires.";
echo "</div>";
echo "<br/>";
}
//************************************************
//Formulaire permettant de poster un nouveau commentaire
//************************************************
?>
</div>
<p> </p>
<div class="general">
<h1>Ajouter un nouveau commentaire :</h1>
<form method='post' action='livredor.php'>
<table cellpadding='5'>
<tr>
<th><b>Votre nom</b> : </th>
<td>
<input type='text' name='nom' maxlenght='70' />
</td>
</tr>
<tr>
<th><b>Votre email</b> : </th>
<td>
<input type='text' name='email' maxlenght='100' />
</td>
</tr>
<tr>
<th><b>Votre message</b> : </th>
<td>
<textarea rows='6' name='message' cols='40'></textarea>
</td>
</tr>
<tr>
<td> </td>
<td>
<input type='submit' value='Envoyer !' name='B1' />
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
Merci d'avance et à tres bientot