<?php highlight_file(__FILE__); exit;
// Bouquin d'or v1.0, créé par Pierre Girard en juillet 2006, visitez www.pierre4012.info/bouquin_dor/ pour plus de détails.
// Mieux vaut ne pas éditer ce fichier si vous n'avez pas de connaissances en PHP, pour la configuration, il faut éditer le fichier "configuration.inc.php".

// Inclusion du fichier de config
if (!@include ('configuration.inc.php')) {echo '<div style="color:red">Il manque le fichier de configuration "configuration.inc.php", vous devez l\'envoyer à côté du fichier "index.php".</div>'; exit;}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Livre d'or</title>
    <style type="text/css">
        body {text-align: center; font-family:'Trebuchet MS', Verdana, Tahoma, Arial, sans-serif; font-size:90%;}
        h1 {margin-bottom:40px; color:blue;}
        .menu-g {margin-left:auto; margin-right:auto; width:<?php echo $largeur_menu ?>%; background-color:#e5f8e6; border: 1px dashed #33cc3d; padding:5px; margin-bottom:40px; margin-top:40px;}
        .menu-p {padding:6px; background-color:white; text-align:left;}
        .liens-pages {font-weight:bold}
        .liens-pages a {text-decoration:none; color:#0000C8;}
        .grandediv {padding:5px; border: 1px solid #3366CC; background-color:#E5ECF9; width:<?php echo $largeur_com ?>%; margin-left:auto; margin-right:auto; text-align:left; margin-bottom:25px;}
        .haut {border-bottom: 1px dashed #3366CC; padding:3px; padding-top:0px; padding-bottom:2px; background-color:#E5ECF9;}
        .bas {padding:15px; padding-top:12px; background-color:white;}
        .liens-b {color:#787878;}
        .liens-b:hover {color:blue;}
        .gris {color:#A5A5A5}
    </style>
</head>

<body>

<h1>- Livre d'or -</h1>

<?php

// On se connecte à la base et on met un message d'erreur si ça échoue
@mysql_connect ($adresse_sql, $login_sql, $passe_sql) or die ('<p style="color:orange; font-weight:bold;">Le serveur WEB n\'a pas réussi à se connecter au serveur MySQL, vous devez configurer ou revoir la configuration du fichier "configuration.inc.php" pour les trois points suivants : l\'adresse, le nom ou/et le mot de passe de connexion au serveur MySQL :</p>'.mysql_error());
mysql_select_db ($nom_base_sql) or die ('<p style="color:orange; font-weight:bold;">Le serveur WEB a réussi à se connecter au serveur MySQL, mais le nom de base que vous avez fourni ('.$nom_base_sql.') n\'existe pas. Veuillez revoir ce nom dans le fichier de configuration.</p>');

// On crée la table si elle n'existe pas
if (!mysql_query ("SELECT `1` FROM `$nom_table_sql` LIMIT 0")) {mysql_query ("CREATE TABLE `$nom_table_sql` (`id` INT AUTO_INCREMENT, `pseudo` TEXT, `message` TEXT, `time` INT, `ip` TEXT, INDEX (`id`))");}

if (isset ($_POST['pseudo'])) {$pseudo=trim ($_POST['pseudo']);}
if (isset ($_POST['message'])) {$message=trim ($_POST['message']);}

// Si il y a un message posté mais pas de nom, on le dis et on remet le message
if (empty ($pseudo) && !empty ($message))
{
    $message=stripslashes ($message);
    echo '<p style="color:orange; font-weight:bold; text-decoration:underline;">Vous avez oublié de mettre votre nom !<br/><br/>Veuillez le rajouter SVP (en bas de la page).</p>';
    $remettre_message=1;
}
// Si il y a un message et un pseudo posté, on passe à la suite
elseif (!empty ($pseudo) && !empty ($message))
{
    // On trouve l'adresse IP du visiteur
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    { // Si le visiteur passe par un proxy transparent et si celui-ci nous donne l'adresse IP du visiteur, on la prend
        $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    elseif (isset($_SERVER['HTTP_CLIENT_IP']))
    { // Pareil qu'au dessus
        $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    else
    { // Sinon dans la majorité des cas, le visiteur ne passe pas par un proxy, on prend directement son IP, sinon, c'est celle du proxy anonyme
        $ip=$_SERVER['REMOTE_ADDR'];
    }

    $time=time();

    // Si c'est activé, si le dernier post de cette IP est dans la période de temps dans laquelle il ne doit pas poster, on met la variable a_poste_recemment à 1
    if ($pas_de_doubles)
    {
        $rep_sql=mysql_query ("SELECT `time` FROM `$nom_table_sql` WHERE `ip`='$ip' ORDER BY `time` DESC");
        if ($rep=mysql_fetch_array ($rep_sql))
        {
            $timestamp_av_repost=$jours_av_repost*86400+$rep['time'];
            if ($time<$timestamp_av_repost)
            {
                $a_poste_recemment=1;
            }
        }
    }

    // On vérifie que le pseudo et le message ne sont pas top long, si ils le sont on le dis et on arrête les vérifs et l'enregistrement
    if (strlen (stripslashes ($pseudo))>$l_max_pseudo OR strlen (stripslashes ($message))>$l_max_message)
    {
        if (strlen ($pseudo)>$l_max_pseudo)
        {
            echo '<p style="color:orange; font-weight:bold; text-decoration:underline;">Tu n\'as pas l\'impression d\'avoir abusé sur la longueur du nom ?</p>';
            $remettre_message=1;
            $pseudo=stripslashes (htmlentities ($pseudo));
            $message=stripslashes (htmlentities ($message));
        }
        if (strlen ($message)>$l_max_message)
        {
            $l_message=strlen ($message);
            $a_suppr=$l_message-$l_max_message;
            echo '<p style="color:orange; font-weight:bold; text-decoration:underline;">Merci d\'avoir pris le temps de m\'écrire un message aussi long, mais la longueur du message est limitée à ',$l_max_message,' caractères.<br/>Le vôtre en fait ',$l_message,'. Veuillez le raccourcir un peu (de ',$a_suppr,' caractères, en bas de la page). Merci.</p>';
            $remettre_message=1;
            $pseudo=stripslashes (htmlentities ($pseudo));
            $message=stripslashes (htmlentities ($message));
        }
    }
    // Si l’utilisateur a posté récemment, on lui dit et on arrête les vérifs et l'enregistrement
    elseif (isset ($a_poste_recemment))
    {
        echo '<p style="color:orange; font-weight:bold; text-decoration:underline;">Vous avez déjà envoyé un message il y a peu de temps avec cet ordinateur.</p>';
        if ($mail_flood)
        {
            $pseudo=stripslashes ($pseudo);
            $message=stripslashes ($message);
            mail ($mail, 'Tentative d\'envoi de plus d\'un message dans le livre d\'or', 'Tentative d\'envois de plus d\'un message par "'.$pseudo.'" depuis l\'adresse IP '.$ip." :\n\n".$message);
        }
    }
    // Puis si le message de l'utilisateur a passé toutes les vérifs, on l'enregistre
    else
    {
        // On met un <wbr/> tous les 50 caractères si un mot de plus de 50 caractères est trouvé. La balise <wbr/> permet de spécifier l'endroit où l'on accepte un retour de ligne si la fenêtre est trop petite (pour ne pas sortir des cadres).
        $message=explode (' ', $message);
        foreach ($message as $i => $w)
        {
            if (strlen ($message[$i]) > 50)
            {
                $message[$i]=wordwrap ($message[$i], 50, '<wbr/>', 1);
            }
        }
        $message=implode (' ', $message);

        $pseudo=htmlentities ($pseudo);
        $message=nl2br (htmlentities ($message));

        $message=strtr ($message, array('&lt;wbr/&gt;' => '<wbr/>')); // pour pouvoir passer le ajoute_wbr avant le htmlentities, sinon, il ajoure des wbr dans les balises ...

        // On enregistre le message
        mysql_query ("INSERT INTO `$nom_table_sql` VALUES ('', '$pseudo', '$message', '$time', '$ip')");
        echo '<p style="color:green; font-weight:bold; text-decoration:underline;">Message enregistré ! Merci pour votre participation.</p>';
        $_GET['page']=1; // pour que le visiteur vois son message si il regardais une autre page

        // Si c'est activé, on envoie un e-mail à l'administrateur avec nom, IP et message
        if ($mail_message)
        {
            $pseudo=stripslashes ($_POST['pseudo']);
            $message=stripslashes ($_POST['message']);
            mail ($mail, 'Nouveau message dans le livre d\'or', 'De "'.$pseudo.'" depuis l\'adresse IP '.$ip." :\n\n".$message);
        }
    }
}

// On compte le nombre de messages et on calcule le nombre de pages
$rep=mysql_fetch_array (mysql_query ("SELECT COUNT(*) AS `nb_mess` FROM `$nom_table_sql`"));
$nb_messages=$rep['nb_mess'];
$nb_pages=ceil ($nb_messages/$nb_messages_par_pages);

// On récupère la page à afficher et on fait en sorte que si le numéro de page n'est pas bon (car modifié à la main par le visiteur) on affiche la page 1
if (isset ($_GET['page'])) {$page=intval ($_GET['page']);} else {$page=1;}
if ($page<1 OR $page>$nb_pages) {$page=1;}

// Mise en variable des liens pour accéder aux différentes pages
if ($nb_pages>1)
{
    if ($page==1) {$pages='<span class="liens-pages"><span class="gris">&lt;</span> &nbsp;';} else {$pages='<span class="liens-pages"><a href="?page='.($page-1).'">&lt;</a> &nbsp;';}

    for ($p=1; $p<=$nb_pages; $p++)
    {
        if ($nb_pages>15)
        {
            if ($page<=7)
            {
                if ($p==$page+4)
                {
                    $pages.='<span class="gris">...</span> &nbsp;';
                    $p=$nb_pages-4;
                }
            }
            elseif ($page>=$nb_pages-6)
            {
                if ($p==6)
                {
                    $pages.='<span class="gris">...</span> &nbsp;';
                    $p=$page-3;
                }
            }
            else
            {
                if ($p==4)
                {
                    $pages.='<span class="gris">...</span> &nbsp;';
                    $p=$page-3;
                }
                if ($p==$page+4)
                {
                    $pages.='<span class="gris">...</span>  &nbsp;';
                    $p=$nb_pages-2;
                }
            }
        }
        // A chaque boucle, on fais un lien avec le numéro de la page, ou le numéro tout court si c'est le numéro de la page affiché
        if ($p==$page)
        {
            $pages.=$p.' &nbsp;';
        }
        else
        {
            $pages.='<a href="?page='.$p.'">'.$p.'</a> &nbsp;';
        }
    }

    if ($page==$nb_pages) {$pages.='<span class="gris">&gt;</span></span>';} else {$pages.='<a href="?page='.($page+1).'">&gt;</a></span>';}
}

// Menu haut
?>
<div class="menu-g">
    <div class="menu-p">
        <span style="float:right"><?php echo $nb_messages; if ($nb_messages>1) {echo ' messages';} else {echo ' message';} echo ' au total'; ?></span>=&gt; <a href="#signer" title="Ajouter un commentaire au livre d'or">Signer le livre d'or</a> &lt;=
        <?php if (isset ($pages)) {echo '<div style="text-align:center">',$pages,"</div>\n";} ?>
    </div>
</div>
<?php

// Si il n'y a aucun message à afficher, on le dis
if (!$nb_messages)
{
    echo '<p>Il n\'y a pour l\'instant aucun message</p>';
}
// Sinon, si il y as des messages, on les affiches
else
{
    $liste_mois=array ('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');

    // On calcule l'emplacement du premier message à afficher
    $premier_m=($page-1)*$nb_messages_par_pages;
    // Puis on affiche les messages
    $rep_sql=mysql_query ("SELECT * FROM `$nom_table_sql` ORDER BY `id` DESC LIMIT $premier_m, $nb_messages_par_pages");
    while ($rep=mysql_fetch_array ($rep_sql))
    {
        $j=date('j', $rep['time']);
        $mois=$liste_mois[date('n', $rep['time'])];
        $a=date('Y', $rep['time']);
        $heure=date('G\hi', $rep['time']);

echo "\n";
?>
<div class="grandediv">
    <div class="haut">
    <span style="float:right"><span style="font-size:80%; color:#808080; vertical-align:bottom;">le <?php echo $j,' ',$mois,' ',$a,' à ',$heure,'</span></span>',$rep['pseudo'],"\n" ?>
    </div>
    <div class="bas">
    <?php echo $rep['message'],"\n" ?>
    </div>
</div>
<?php
    }
}

mysql_close ();
?>

<form method="post" action="">
    <p id="signer"><label>Votre nom : <input type="text" name="pseudo" maxlength="<?php echo $l_max_pseudo; ?>" <?php if (!empty ($remettre_message)) {echo 'value="',$pseudo,'"';} ?>/></label><br />
    <textarea name="message" rows="8" cols="50"><?php if (!empty ($remettre_message)) {echo $message;} ?></textarea><br />
    <input type="submit" value="Envoyer !" /></p>
</form>

<div class="menu-g">
    <div class="menu-p">
        <?php if (isset ($pages)) {echo '<div style="text-align:center">',$pages,'</div>';} ?>
        <span style="font-size:80%"><span style="float:right; color:#BEBEBE;">Livre d'or créé a l'aide de <a class="liens-b" href="http://www.pierre4012.info/bouquin_dor/" title="Page officiel de Bouquin d'or" onclick="window.open(this.href); return false;">Bouquin d'or</a></span><a style="color:#BEBEBE" href="administration.php" title="Administration du livre d'or">Administration</a></span>
    </div>
</div>

</body>
</html>