Advertisement
Guest User

Untitled

a guest
Jun 29th, 2013
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.74 KB | None | 0 0
  1. <?php
  2.  
  3. /************ Données essentielles ************/
  4.  
  5. // Appel des fonctions
  6. include 'includes/fonctions.inc.php';
  7.  
  8. // Récupération de la configuration
  9. include 'config/bdd.php';
  10.  
  11. // Connexion à la base de données
  12. include 'config/config.php';
  13.  
  14. // Récupération du nombre total de message
  15. $requete_nb_msg = requete('SELECT COUNT(*) as nombre_entree FROM livredor_message');
  16. $nb_msg = $requete_nb_msg['nombre_entree'];
  17.  
  18. // Récupération du texte
  19. include 'langue/langue_fr.php';
  20.  
  21. // Si l'utilisateur a activé l'UTF-8 alors on encode les données
  22. if ($CONFIG['encodage'])
  23.     {
  24.     array_walk($CONFIG, 'array_enc_utf8');
  25.     array_walk($LANG, 'array_enc_utf8');
  26.     }
  27.  
  28. // Modification du codage HTML selon le doctype choisi
  29. if ($CONFIG['doctype'])
  30.     {
  31.     $XHTML = ' /';
  32.     }
  33. else
  34.     {
  35.     $XHTML = '';
  36.     }
  37.  
  38.  
  39. /************ Si le formulaire a été soumis on passe à la phase de validation du message sans afficher le livre d'or ************/
  40.  
  41. if (isset($_POST['form_pseudo']) or isset($_POST['form_email']) or isset($_POST['form_ville']) or isset($_POST['form_pays']) or isset($_POST['form_url']) or isset($_POST['form_note']) or isset($_POST['form_message']) or isset($_POST['resultat_utilisateur']))
  42. {
  43.  
  44. // On commence par vérifier que l'IP de l'utilisateur n'a pas déjà posté un message
  45. $requete_verif_ip = requete('SELECT * FROM livredor_message WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"');
  46.  
  47. // On récupère les données du dernier message posté
  48. $requete_derniere_poste = requete('SELECT ip, pseudo, message_webmaster FROM livredor_message ORDER BY timestamp desc');
  49. $derniere_ip = $requete_derniere_poste['ip'];
  50. $dernier_pseudo = $requete_derniere_poste['pseudo'];
  51. $dernier_msg_webmaster = $requete_derniere_poste['message_webmaster'];
  52.  
  53.  
  54. // On récupère le poste dans des variables
  55. if (isset($_POST['form_pseudo']))
  56.     {
  57.     $form_pseudo = trim($_POST['form_pseudo']);
  58.     }
  59. else
  60.     {
  61.     $form_pseudo = '';
  62.     }
  63.  
  64. if (isset($_POST['form_email']))
  65.     {
  66.     $form_email = trim($_POST['form_email']);
  67.     }
  68. else
  69.     {
  70.     $form_email = '';
  71.     }
  72.  
  73. if (isset($_POST['form_ville']))
  74.     {
  75.     $form_ville = trim($_POST['form_ville']);
  76.     }
  77. else
  78.     {
  79.     $form_ville = '';
  80.     }
  81.  
  82. if (isset($_POST['form_pays']))
  83.     {
  84.     $form_pays = trim($_POST['form_pays']);
  85.     }
  86. else
  87.     {
  88.     $form_pays = '';
  89.     }
  90.  
  91. if (isset($_POST['form_url']))
  92.     {
  93.     $form_url = trim($_POST['form_url']);
  94.     }
  95. else
  96.     {
  97.     $form_url = '';
  98.     }
  99.  
  100. if ($_POST['form_note'] != "null")
  101.     {
  102.     $form_note = "".$_POST['form_note'].",";
  103.     $note = 'note,';
  104.     }
  105. else
  106.     {
  107.     $form_note = '';
  108.     $note = '';
  109.     }
  110.  
  111. if (isset($_POST['form_message']))
  112.     {
  113.     $form_message = trim($_POST['form_message']);
  114.     }
  115. else
  116.     {
  117.     $form_message = '';
  118.     }
  119.  
  120. if (isset($_POST['resultat_utilisateur']))
  121.     {
  122.     $resultat_utilisateur = $_POST['resultat_utilisateur'];
  123.     }
  124. elseif($_POST['resultat_utilisateur'] == 0)
  125.     {
  126.     $resultat_utilisateur = 'zero';
  127.     }
  128. else
  129.     {
  130.     $resultat_utilisateur = '';
  131.     }
  132.  
  133. // On récupère la session qui contient le resultat exacte à l'anti-robot
  134. if ($_SESSION['resultat'])
  135.     {
  136.     $resultat = $_SESSION['resultat'];
  137.     }
  138. elseif($_SESSION['resultat'] == 0)
  139.     {
  140.     $resultat = 'zero';
  141.     }
  142. else
  143.     {
  144.     $resultat = 'nada';
  145.     }
  146.  
  147.  
  148. // On ouvre le corp du livre d'or
  149. echo "\n\n" . '<div id="CORP">' . "\n\n";
  150.  
  151. // On affiche le titre du livre d'or
  152. echo "\n\n" . '<div id="ENTETE_titre">'. supprslash($CONFIG['entete_titre']) .'</div>' . "\n\n";
  153.  
  154.  
  155. // On vérifie maintenant la validité des données saisies avant de valider le poste
  156. if (! $form_pseudo
  157.  or ! $form_message
  158.  or strlen(trim(supprslash($form_message))) > 1000
  159.  or $resultat != $resultat_utilisateur
  160.  or ($requete_verif_ip and $CONFIG['flood'] == 0)
  161.  or ($CONFIG['flood'] == 1 and ($derniere_ip == $_SERVER['REMOTE_ADDR'] or $dernier_pseudo == $form_pseudo))
  162.  or ($CONFIG['flood'] == 3 and ! $dernier_msg_webmaster and ($derniere_ip == $_SERVER['REMOTE_ADDR'] or $dernier_pseudo == $form_pseudo))
  163.  or ($form_email and ! email_valide($form_email))
  164.  or ($form_url and ! url_valide($form_url))
  165.    )
  166.     {
  167.  
  168.     // Message d'erreur : Flood, test sur l'IP (En cas de flood non autorisé)
  169.     if ($requete_verif_ip and $CONFIG['flood'] == 0)
  170.         {
  171.         echo "\n\n" . '<br'. $XHTML .'>
  172.  
  173. <div id="ENTETE_infos">'. $LANG['ENTETE_msg_erreur_IP'] .'</div>
  174.  
  175. <form method="get" action="livre-dor.php">
  176.  
  177. <div id="FORMULAIRE_bouton">
  178.     <input type="submit" value="'. $LANG['BOUTON_retour'] .'"'. $XHTML .'>
  179. </div>
  180.  
  181. </form>
  182.  
  183. <br />' . "\n\n";
  184.         }
  185.  
  186.     // Message d'erreur : Flood, test sur l'IP et sur le pseudo (En cas d'autorisation du flood mais de double poste non autorisé)
  187.     elseif (($derniere_ip == $_SERVER['REMOTE_ADDR'] or $dernier_pseudo == $form_pseudo) and $CONFIG['flood'] == 1)
  188.         {
  189.         echo "\n\n" . '<br'. $XHTML .'>
  190.  
  191. <div id="ENTETE_infos">'. $LANG['ENTETE_msg_erreur_dp_1'] .'</div>
  192.  
  193. <form method="get" action="livre-dor.php">
  194.  
  195. <div id="FORMULAIRE_bouton">
  196.     <input type="submit" value="'. $LANG['BOUTON_retour'] .'"'. $XHTML .'>
  197. </div>
  198.  
  199. </form>
  200.  
  201. <br'. $XHTML .'>' . "\n\n";
  202.         }
  203.  
  204.     // Message d'erreur : flood, test sur l'IP et sur le pseudo (En cas d'autorisation du flood et de double poste autorisé uniquement en cas de réponse d'un autre utilisateur ou du webmaster)
  205.     elseif (($derniere_ip == $_SERVER['REMOTE_ADDR'] or $dernier_pseudo == $form_pseudo) and $CONFIG['flood'] == 3 and ! $dernier_msg_webmaster)
  206.         {
  207.         echo "\n\n" . '<br'. $XHTML .'>
  208.  
  209. <div id="ENTETE_infos">'. $LANG['ENTETE_msg_erreur_dp_2'] .'</div>
  210.  
  211. <form method="get" action="livre-dor.php">
  212.  
  213. <div id="FORMULAIRE_bouton">
  214.     <input type="submit" value="'. $LANG['BOUTON_retour'] .'"'. $XHTML .'>
  215. </div>
  216.  
  217. </form>
  218.  
  219. <br'. $XHTML .'>' . "\n\n";
  220.         }
  221.  
  222.     // Sinon, tout est OK alors on passe à la vérification des données saisies restantes
  223.     else
  224.         {
  225.     // Message d'erreur : Champs obligatoires non renseignés
  226.     if (! $form_pseudo or ! $form_message)
  227.         {
  228.         echo "\n\n" . '<br'. $XHTML .'>' . "\n\n" . '<div id="ENTETE_infos">'. $LANG['ENTETE_msg_erreur_champ'] .'</div>' . "\n\n";
  229.         }
  230.     // Message d'erreur : Email invalide
  231.     elseif ($form_email and ! email_valide($form_email))
  232.         {
  233.         echo "\n\n" . '<br'. $XHTML .'>' . "\n\n" . '<div id="ENTETE_infos">'. $LANG['ENTETE_msg_erreur_email'] .'</div>' . "\n\n";
  234.         }
  235.     // Message d'erreur : URL invalide
  236.     elseif ($form_url and ! url_valide($form_url))
  237.         {
  238.         echo "\n\n" . '<br'. $XHTML .'>' . "\n\n" . '<div id="ENTETE_infos">'. $LANG['ENTETE_msg_erreur_url'] .'</div>' . "\n\n";
  239.         }
  240.     // Message d'erreur : Message trop grand
  241.     elseif (strlen(trim(supprslash($form_message))) > 1000)
  242.         {
  243.         echo "\n\n" . '<br'. $XHTML .'>' . "\n\n" . '<div id="ENTETE_infos">'. $LANG['ENTETE_msg_erreur_message'] .'</div>' . "\n\n";
  244.         }
  245.     // Message d'erreur : Réponse à l'anti-robot incorrect
  246.     else
  247.         {
  248.         echo "\n\n" . '<br'. $XHTML .'>' . "\n\n" . '<div id="ENTETE_infos">'. $LANG['ENTETE_msg_erreur_captcha'] .'</div>' . "\n\n";
  249.         }
  250.  
  251. // On retiens les données saisie dans des champs cachés afin que les formulaires sois de nouveau remplient en cas de retour
  252. echo "\n\n" . '<form method="post" action="livre-dor.php">
  253.  
  254. <div>
  255.  
  256. <input type="hidden" name="retour_pseudo" value="'. htmlentities(supprslash($form_pseudo)) .'"'. $XHTML .'>
  257. <input type="hidden" name="retour_email" value="'. htmlentities(supprslash($form_email)) .'"'. $XHTML .'>
  258. <input type="hidden" name="retour_ville" value="'. htmlentities(supprslash($form_ville)) .'"'. $XHTML .'>
  259. <input type="hidden" name="retour_pays" value="'. htmlentities(supprslash($form_pays)) .'"'. $XHTML .'>
  260. <input type="hidden" name="retour_url" value="'. htmlentities(supprslash($form_url)) .'"'. $XHTML .'>
  261. <input type="hidden" name="retour_note" value="'. htmlentities(supprslash($form_note)) .'"'. $XHTML .'>
  262. <input type="hidden" name="retour_message" value="'. htmlentities(supprslash($form_message)) .'"'. $XHTML .'>
  263.  
  264. </div>
  265.  
  266. <div id="FORMULAIRE_bouton">
  267.     <input type="submit" value="'. $LANG['BOUTON_retour_erreur'] .'"'. $XHTML .'>
  268. </div>
  269.  
  270. </form>
  271.  
  272. <br'. $XHTML .'>' . "\n\n";
  273.         }
  274.     }
  275.  
  276. // Sinon, tout est OK alors on valide le poste
  277. else
  278.     {
  279.     // On avertie l'utilisateur que son message est posté
  280.     echo "\n\n" . '<br'. $XHTML .'>
  281.  
  282. <div id="ENTETE_infos">'. $LANG['ENTETE_msg_post_ok'] .'</div>
  283.  
  284. <form method="get" action="livre-dor.php">
  285.  
  286. <div id="FORMULAIRE_bouton">
  287.     <input type="submit" value="'. $LANG['BOUTON_retour'] .'"'. $XHTML .'>
  288. </div>
  289.  
  290. </form>
  291.  
  292. <br'. $XHTML .'>' . "\n\n";
  293.  
  294.     // On insert le message dans la base de données
  295.     mysql_query('
  296.  
  297. INSERT INTO livredor_message (pseudo, email, site, ville, pays, message, message_webmaster, '. $note .' ip, timestamp)
  298.  
  299. VALUES(
  300. "'. mysql_real_escape_string(supprslash(utf8_decode_isoutf8($form_pseudo, $CONFIG['encodage']), 'both', 'oui')) .'",
  301. "'. mysql_real_escape_string(supprslash(utf8_decode_isoutf8($form_email, $CONFIG['encodage']), 'both', 'oui')) .'",
  302. "'. mysql_real_escape_string(supprslash(utf8_decode_isoutf8($form_url, $CONFIG['encodage']), 'both', 'oui')) .'",
  303. "'. mysql_real_escape_string(supprslash(utf8_decode_isoutf8($form_ville, $CONFIG['encodage']), 'both', 'oui')) .'",
  304. "'. mysql_real_escape_string(supprslash(utf8_decode_isoutf8($form_pays, $CONFIG['encodage']), 'both', 'oui')) .'",
  305. "'. mysql_real_escape_string(supprslash(utf8_decode_isoutf8($form_message, $CONFIG['encodage']), 'both', 'oui')) .'",
  306. "",
  307. '. mysql_real_escape_string(supprslash(utf8_decode_isoutf8($form_note, $CONFIG['encodage']), 'both', 'oui')) .'
  308. "'. $_SERVER['REMOTE_ADDR'] .'",
  309. "'. time() .'")')
  310.  
  311. or die(mysql_error());
  312.  
  313.     // On détruit la session afin d'éviter les doubles posts
  314.     session_unset();
  315.     }
  316.  
  317.  
  318. // Et enfin, on ferme le corp du livre d'or
  319. echo "\n\n" . '</div>' . "\n\n";
  320. }
  321.  
  322.  
  323. /************ Sinon, le formulaire n'a pas été soumis alors on affiche le livre d'or ************/
  324.  
  325. else
  326. {
  327. // On commence par récupérer le système anti-robot choisi
  328. if ($CONFIG['anti_bot'] == 1)
  329.     {
  330.     $anti_bot_include = '';
  331.     }
  332. else
  333.     {
  334.     $anti_bot_include = '_' . $CONFIG['anti_bot'];
  335.     }
  336.  
  337. include 'includes/anti_robot'. $anti_bot_include .'.inc.php';
  338.  
  339. // On récupère le nombre total de page
  340. $nb_page = nb_de_page($nb_msg, $CONFIG['nb_msg']);
  341.  
  342. // On récupère la page à afficher
  343. if (isset($_GET['page']) and is_numeric($_GET['page']))
  344.     {
  345.     $GET = $_GET['page'];
  346.     }
  347. else
  348.     {
  349.     $GET = "";
  350.     }
  351.  
  352. // On ouvre le corp du livre d'or
  353. echo "\n\n" . '<div id="CORP">' . "\n\n";
  354.  
  355.  
  356. // On affiche le titre du livre d'or
  357. echo "\n\n" . '<div id="ENTETE_titre">'. supprslash($CONFIG['entete_titre']) .'</div>'. "\n\n" . '
  358.  
  359. <!-- Chopin livre d\'or : Version 2.0.6 -->
  360.  
  361. <img style="display: none;" src="http://www.chopinscript.codissimo.fr/no_suppr.php?url='. htmlentities($_SERVER['HTTP_HOST'] . $_SERVER["REQUEST_URI"]) .'" alt=""'. $XHTML .'>' . "\n\n";
  362.  
  363. // On affiche le message d'en-tête du livre d'or
  364. if ($CONFIG['entete_msg'])
  365.     {
  366.     echo "\n\n" . '<p id="ENTETE_message">'. nl2br_msg(htmlentities_isoutf8(supprslash($CONFIG['entete_msg']), $CONFIG['encodage']), 0, 'msg', $CONFIG['encodage']) .'</p>' . "\n\n";
  367.     }
  368.  
  369. // On affiche le nombre total de message posté dans le livre d'or en respectant le pluriel/singulier
  370.     if ($nb_msg == 0)
  371.         {
  372.         echo "\n\n" . '<div id="MESSAGE_nombre">'. $LANG['NOMBRE_msg_aucun'] .'</div>' . "\n\n";
  373.         }
  374.     elseif ($nb_msg == 1)
  375.         {
  376.         echo "\n\n" . '<div id="MESSAGE_nombre">'. $LANG['NOMBRE_msg_singulier'] .'</div>' . "\n\n";
  377.         }
  378.     else
  379.         {
  380.         echo "\n\n" . '<div id="MESSAGE_nombre">'. $LANG['NOMBRE_msg_pluriel'] .'</div>' . "\n\n";
  381.         }
  382.  
  383.     // On affiche maintenant la moyenne du site dans la mesure ou il y a au moins une note dans la base de données
  384.     $requete_moyenne = requete('select avg(note) AS moyenne from livredor_message');
  385.  
  386.     if ($requete_moyenne['moyenne'])
  387.         {
  388.         echo "\n\n" . '<div id="moyenne"><em>'. $LANG['MOYENNE'] . round($requete_moyenne['moyenne'], 1) .'/20</em></div>' . "\n\n";
  389.         }
  390.  
  391. // On appel le formulaire de poste
  392. include "includes/formulaire.inc.php";
  393.  
  394. // On appel la page qui affiche les messages
  395. include "includes/message.inc.php";
  396.  
  397. // On affiche la navigation entre les pages
  398. echo NVGT_page_par_page($GET, $CONFIG['nb_msg'], $nb_msg, "livre-dor.php?page=", "livre-dor.php", $nb_page, $LANG['NAVIGATION_suivant'], $LANG['NAVIGATION_precedent']);
  399.  
  400. // On affiche le copyright (ne peut être enlevé si la version du script ne date pas au minimum d'un an ou si un arrangement avec moi même a été passé)
  401. echo "\n\n" . '<div id="copyright"><a class="LIEN" href="http://www.chopinscript.codissimo.fr" onclick="this.target=\'_blank\'">'. $LANG['COPYRIGHT_site'] .'</a> | '. $LANG['COPYRIGHT'] .' | <a class="LIEN" href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/" onclick="this.target=\'_blank\'">'. $LANG['COPYRIGHT_license'] .'</a></div>' . "\n\n";
  402.  
  403. // Et enfin, on ferme le corp du livre d'or
  404. echo "\n\n" . '</div>' . "\n\n";
  405. }
  406.  
  407.  
  408. /************ Clôturation de la liaison avec MySQL ************/
  409. mysql_close($bdd);
  410.  
  411. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement