Mlivredor 1.0

Contenu du snippet

Mlivredor 1.0 est un livre d'or composé d'un seul fichier seulement, fonctionnant sous PHP3 et PHP4, et ne requierant pas mySQL.

A l'image des Livres d'Or classiques, Mlivredor 1.0 offre la possibilité aux utilisateurs de laisser leurs impressions et commentaires sur une page Web consultable par tous. Ce script a été conçu pour faciliter au maximum l'intégration du Livre d'Or dans des pages Web possédant une structure relativement complexe.
Son utilisation se trouve intuitive grâce aux différents menus permettants de passer d'une page à l'autre du livre d'or.

Ce dernier est composé que d'un seul fichier, d'où son originalité, le fichier principal que l'on peux configurer trés facilement grâce aux nombreux commentaires qui le compose.

Source / Exemple :


<!----------------------------------------------->
<!----------------------------------------------->
<!--            Mlivredor_1.0.php3             -->
<!--                                           -->
<!--         Sébastien L. (Megatamh)           -->
<!--         http://megatamh.free.fr           -->
<!----------------------------------------------->
<!----------------------------------------------->

<html>
<table width="600" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr> 
    <td width=2% bgcolor="#efefef">&nbsp;</td>
    <td width=96% valign="top" bgcolor="#efefef"> 
      <table width="100%" border="0">
        <tr bgcolor="#ffeecc"> 
          <td height="41"> 
            <div align="center"><b><i><font size="6">Mlivredor 1.0</font></i></b></div>
          </td>
        </tr>
      </table>
      <br>
      <br>
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td width=5%>&nbsp;</td>
          <td width=5% bgcolor="#CCCCbb">&nbsp;</td>
          <td width=80% bgcolor="#CCCCbb"><br>
            <code> 
            <form method=post action="Mlivredor_1.0.php3?page=envoi">
              <input value="visiteur@fournisseur.com" name="email" size=30 maxlength=35>
              : Email <br>
              <input name="nom" size=30 maxlength=35>
              : Nom<br>
              Commentaires : <font color="#CC0000">(obligatoire)</font><br>
              <textarea name="comments" cols=30 rows=4></textarea>
              <input type=submit value="Envoyer" name="submit">
              <input type="reset" value="Effacer" name="reset">
            </form>
            

<p> </p>
</td>
<td witdh=10% width="5%" bgcolor="#CCCCbb"> </td>
<td witdh=10% width="5%"> </td>
</tr>
</table>
<p><?
//////////////////////////
//Traitements des champs//
//////////////////////////
if ($nom == "") {$nom = "anonyme";}
else {$nom = htmlentities(trim(stripslashes($nom)));}
if (ereg("^.+@.+\\..+$", $email)) {$email = htmlentities(trim(stripslashes($email)));}
else {$email = "";}
$comments = htmlentities(trim(stripslashes($comments)));
$comments = str_replace(chr(10)," <br> ",$comments);
$comments = str_replace(chr(13),"",$comments);

/////////////////////////////
//calcul du nombre de pages//
/////////////////////////////
$fichier="nb_messages.txt";
$fp=fopen($fichier,"r");
$mess=fgets($fp,10);
if ($mess <= 10) {$nb_pages = 1;}
if ($mess > 10 & $mess <= 20) {$nb_pages = 2;}
if ($mess > 20 & $mess <= 30) {$nb_pages = 3;}
if ($mess > 30 & $mess <= 40) {$nb_pages = 4;}
if ($mess > 40 & $mess <= 50) {$nb_pages = 5;}
if ($mess > 50 & $mess <= 60) {$nb_pages = 6;}
if ($mess > 60 & $mess <= 70) {$nb_pages = 7;}
if ($mess > 70 & $mess <= 80) {$nb_pages = 8;}
if ($mess > 80 & $mess <= 90) {$nb_pages = 9;}
if ($mess > 90 & $mess <= 100) {$nb_pages = 10;}
if ($mess > 100) {$nb_pages = 11;} //ajouter des instructions si mecessaire
fclose($fp);

///////////////////////////////////////
// initialisations des pages //
///////////////////////////////////////
$fichier = fopen("livredor.txt","r");
$messages = fread($fichier,filesize("livredor.txt"));
if ($page == "") {$page=1;} //page livredor.php3?page=1 par defaut

//creons la page Mlivredor_1.0.php3?page=envoi
if ($page == "envoi") { //initialisation
$pos_prem_mess = 0; $compteur = -1; $p = 0; //page envoi du livredor c a d page qui reçoit le message entré dans le but de le traiter
$page_suivante = 2; //
while ($compteur < $mess & $compteur < 9) { //tant que l'on est pas a la fin de $messages et qu'on est inférieur à 9 car on va y ajouter le message en cours, ça fera 10 messages sur la page
$p = strpos($messages, "<!--nouveau message-->", $p); //on note la position où trouve la chaine <!--nouveau message-->
$compteur = $compteur + 1; //on incrémente le compteur du while
if ($compteur == 1) {$pos = $p; } //on note la position du 2eme message (pour le calcul) car avec l'ajout du message qui vient d'etre tapé, on ne doit toujours pas dépasser 10 messages sur cette page
$p = $p + 1; //on incrémente $p pour que le strpos trouve la prochaine chaine
} //
$pos_der_mess = $p - 1; //on note la position du 10eme message
if ($compteur > 9) {$pos_der_mess = $pos_der_mess - $pos;} //s'il y a plus de 9 messages comptés, on retire le plus vieux message de la page pour y ajouter le nouveau
}
//creons la page Mlivredor_1.0.php3?page=1
if ($page == 1) { //initialisation
$pos_prem_mess = 0; $compteur = -1; $p = 0; //1ere page du livredor
$page_suivante = 2; //
while ($compteur < $mess & $compteur < 10) { //tant que l'on est pas a la fin de $messages et qu'on est inférieur à 10
$p = strpos($messages, "<!--nouveau message-->", $p); //on note la position où trouve la chaine <!--nouveau message-->
$compteur = $compteur + 1; //on incrémente le compteur du while
$p = $p + 1; //on incrémente $p pour que le strpos trouve la prochaine chaine
} //
$pos_der_mess = $p - 1; //on note la position du 10eme message
}
//creons la page Mlivredor_1.0.php3?page=2
if ($page == 2) { //initialisation
$compteur = -1; $p = 0; //2eme page du livredor
$page_precedente = 1; $page_suivante = 3; //
while ($compteur < $mess & $compteur < 20) { //tant que l'on est pas a la fin de $messages et qu'on est inférieur à 20
$p = strpos($messages, "<!--nouveau message-->", $p); //on note la position où trouve la chaine <!--nouveau message-->
$compteur = $compteur + 1; //on incrémente le compteur du while
if ($compteur == 10) {$pos_prem_mess = $p; } //on note la position du onzieme message
$p = $p + 1; //on incrémente $p pour que le strpos trouve la prochaine chaine
} //
$pos_der_mess = $p; //on note la position du 20eme message
}
//creons la page Mlivredor_1.0.php3?page=3
if ($page == 3) { //initialisation
$compteur = -1; $p = 0; //3eme page du livredor
$page_precedente = 2; $page_suivante = 4; //
while ($compteur < $mess & $compteur < 30) { //
$p = strpos($messages, "<!--nouveau message-->", $p); //
$compteur = $compteur + 1;
if ($compteur == 20) {$pos_prem_mess = $p;}
$p = $p + 1;
}
$pos_der_mess = $p;
}
//creons la page Mlivredor_1.0.php3?page=4
if ($page == 4) { //initialisation
$compteur = -1; $p = 0; //4eme page du livredor
$page_precedente = 3; $page_suivante = 5; //
while ($compteur < $mess & $compteur < 40) { //
$p = strpos($messages, "<!--nouveau message-->", $p); //
$compteur = $compteur + 1;
if ($compteur == 30) {$pos_prem_mess = $p;}
$p = $p + 1;
}
$pos_der_mess = $p;
}
//creons la page Mlivredor_1.0.php3?page=5
if ($page == 5) { //initialisation
$compteur = -1; $p = 0; //5eme page du livredor
$page_precedente = 4; $page_suivante = 6; //
while ($compteur < $mess & $compteur < 50) { //
$p = strpos($messages, "<!--nouveau message-->", $p); //
$compteur = $compteur + 1;
if ($compteur == 40) {$pos_prem_mess = $p;}
$p = $p + 1;
}
$pos_der_mess = $p;
}
//creons la page Mlivredor_1.0.php3?page=6
if ($page == 6) { //initialisation
$compteur = -1; $p = 0; //6eme page du livredor
$page_precedente = 5; $page_suivante = 7; //
while ($compteur < $mess & $compteur < 60) { //
$p = strpos($messages, "<!--nouveau message-->", $p); //
$compteur = $compteur + 1;
if ($compteur == 50) {$pos_prem_mess = $p;}
$p = $p + 1;
}
$pos_der_mess = $p;
}
//creons la page Mlivredor_1.0.php3?page=7
if ($page == 7) { //initialisation
$compteur = -1; $p = 0; //7eme page du livredor
$page_precedente = 6; $page_suivante = 8; //
while ($compteur < $mess & $compteur < 70) { //
$p = strpos($messages, "<!--nouveau message-->", $p); //
$compteur = $compteur + 1;
if ($compteur == 60) {$pos_prem_mess = $p;}
$p = $p + 1;
}
$pos_der_mess = $p;
}
//creons la page Mlivredor_1.0.php3?page=8
if ($page == 8) { //initialisation
$compteur = -1; $p = 0; //8eme page du livredor
$page_precedente = 7; $page_suivante = 9; //
while ($compteur < $mess & $compteur < 80) { //
$p = strpos($messages, "<!--nouveau message-->", $p); //
$compteur = $compteur + 1;
if ($compteur == 70) {$pos_prem_mess = $p;}
$p = $p + 1;
}
$pos_der_mess = $p;
}
//creons la page Mlivredor_1.0.php3?page=9
if ($page == 9) { //initialisation
$compteur = -1; $p = 0; //9eme page du livredor
$page_precedente = 8; $page_suivante = 10; //
while ($compteur < $mess & $compteur < 90) { //
$p = strpos($messages, "<!--nouveau message-->", $p); //
$compteur = $compteur + 1;
if ($compteur == 80) {$pos_prem_mess = $p;}
$p = $p + 1;
}
$pos_der_mess = $p;
}
//creons la page Mlivredor_1.0.php3?page=10
if ($page == 10) { //initialisation
$compteur = -1; $p = 0; //10eme page du livredor
$page_precedente = 9; $page_suivante = 11; //
while ($compteur < $mess & $compteur < 100) { //
$p = strpos($messages, "<!--nouveau message-->", $p); //
$compteur = $compteur + 1;
if ($compteur == 90) {$pos_prem_mess = $p;}
$p = $p + 1;
}
$pos_der_mess = $p;
}
//creons la page Mlivredor_1.0.php3?page=11
if ($page == 11) { //initialisation
$compteur = -1; $p = 0; //11eme page du livredor
$page_precedente = 10; $page_suivante = 12; //
while ($compteur < $mess & $compteur < 110) { //
$p = strpos($messages, "<!--nouveau message-->", $p); //
$compteur = $compteur + 1; //
if ($compteur == 100) {$pos_prem_mess = $p;}
$p = $p + 1;
}
$pos_der_mess = $p;
}
fclose($fichier);

////////////////////////////////////////////////////////////////////
// Creation du menu permettant de circuler dans les pages du menu //
////////////////////////////////////////////////////////////////////?> </p>
<table width="100%" border="0" cellspacing="1" cellpadding="1" bgcolor="#33CCCC">
<tr bgcolor="#c4d7dd">
<td width="27%">
<div align="left"><? if ($page > 1) {echo ("<a href=Mlivredor_1.0.php3?page=".$page_precedente.">");} ?>Précédent<? if ($page > 1) {echo ("</a>");} ?></div>
</td>
<td width="45%">
<div align="center">nombre de messages : <?
if ($comments == "") { //premiere visite sur la page ou aucun message laissé
$fichier="nb_messages.txt";
$fp=fopen($fichier,"r");
$mess=fgets($fp,10);
fclose($fp);
echo $mess; }
else { //un message est laissé
$fichier="nb_messages.txt";
$fp=fopen($fichier,"r");
$mess=fgets($fp,10);
fclose($fp);
$mess = $mess + 1; //incrémentation(+1) ici car l'incrémentation se fait plus loin
echo $mess;}
?></div>
</td>
<td width="28%">
<div align="right"><? if ($page != $nb_pages) {echo ("<a href=Mlivredor_1.0.php3?page=".$page_suivante.">");} ?>Suivant<? if ($page != $nb_pages) {echo ("</a>");} ?></div>
</td>
</tr>
</table>
<br>
<?/////////////////////////////////////////
// Ecriture des messages du livre d'or //
///////////////////////////////////////////
if ($comments != "") // cette instruction n'est pas prise en compte si on vient juste d'entrer sur cette page, c a d si on a entré qqchose dans les champs
{
$date = date("d/m/Y"); // On définit la date (pour plus de detail, voir sur http://dev.nexen.net, section dates
$fichier="nb_messages.txt"; //
$fp=fopen($fichier,"r+"); //On incrémente ici le nombre de messages laissés
$mess=fgets($fp,10); //dans le fichier nb_messages.txt
fseek($fp,0); //
$mess++; //
fputs($fp,$mess); //
fclose($fp); //
$fichier=fopen("livredor.txt","r+"); //
$messages=fread($fichier,filesize("livredor.txt")); //On ajoute juste en dessous le message laissé aux autres messages
fseek($fichier,0); //dans le fichier livredor.txt
$message = "<!--nouveau message--><br><table width=100% border=0>
<tr>
<td width=30% bgcolor=#ffeecc><b>".$nom."</b></td>
<td width=20%>".$date."</td>
<td width=50%><a href=mailto:".$email.">".$email."</a></td>
</tr>
</table>"
.$comments."<br><hr>"; // Le message
$length = strlen ($message); // On a la longueur du dernier message
$messages = $message.$messages; // On ajoute le message au reste des messages
fputs($fichier, $messages); // On écrit le tout dans livredor.txt
$text = substr($messages, 0, $pos_der_mess + $length); // On ne garde que 9 messages + le message ce qui fait 10 messages
echo ($text); // Ici on les affiche
fclose($fichier);
}
else //
{ //
$fichier=fopen("livredor.txt","r"); //cette partie sert seulement si on vient
$text = fread($fichier, filesize("livredor.txt")); //seulement d'entrer sur cette page
$text = substr($text, $pos_prem_mess, $pos_der_mess - $pos_prem_mess + 8); //et que l'on a pas encore laissé de message
echo($text); //
fclose($fichier); //
}

/////////////////////////////////////////////////////////////////////////////
// Creation du deuxieme menu permettant de circuler dans le livre d'or //
///////////////////////////////////////////////////////////////////////////?>
<br>
<br>
<table width="100%" border="0" cellspacing="1" cellpadding="1" bgcolor="#33CCCC">
<tr bgcolor="#c4d7dd">
<td width="27%">
<div align="left"><? if ($page > 1) {echo ("<a href=Mlivredor_1.0.php3?page=".$page_precedente.">");} ?>Précédent<? if ($page > 1) {echo ("</a>");} ?></div>
</td>
<td width="45%">
<div align="center">nombre de messages : <? //
$fichier="nb_messages.txt"; //
$fp=fopen($fichier,"r"); //On affiche le nombre de messages du livre d'or
$mess=fgets($fp,10); //du fichier nb_messages.txt
fclose($fp); //
echo $mess; //
?></div>
</td>
<td width="28%">
<div align="right"><? if ($page != $nb_pages) {echo ("<a href=Mlivredor_1.0.php3?page=".$page_suivante.">");} ?>Suivant<? if ($page != $nb_pages) {echo ("</a>");} ?></div>
</td>
</tr>
</table>
<br>
<br>
Un script de Sebastien L. (<a href="http://megatamh.free.fr">Megatamh</a>)</td>
<td width="2%" bgcolor="#efefef">  </td>
</tr>
</table>
</html>
</code>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.