Consignes de mise à jour de la version 3.2 d'@lex Guestbook vers la version 3.3

La version 3.3 comporte 2 principales nouveautés :

1. Correction d'une FAILLE DE SECURITE MAJEURE
2. Ajout d'une option permettant de contraindre les utilisateurs à saisir un code de sécurité pour enregistrer un message

2 options s'offrent à vous : corriger uniquement la faille de sécurité ou corriger la faille + passer à la version 3.3. L'ensemble des nouveautés de cette version est disponible dans le fichier "changelog.txt".

Si vous souhaitez simplement corriger la faille de sécurité

Remplacez le fichier "include/admin_include.php".
La mise à jour est terminée.

Si vous souhaitez passer à la version 3.3

ATTENTION, ce tutorial s'adresse uniquement aux utilisateurs disposant de la version 3.2 du livre d'or. Les utilisateurs possédant une version plus ancienne doivent d'abord effectuer une mise à jour vers la version 3.2, une documentation est disponible dans le dossier "documentation" du script.

1- La structure des tables de la base a été modifiée, avec votre gestionnaire de BDD habituel (phpmyadmin par exemple), exécutez les requêtes suivantes (ATTENTION, vos noms de tables sont peut être différents, les noms utilisés ici sont les noms par défaut) :
ALTER TABLE `alex_livre_messages` ADD FULLTEXT ( `message` ); CREATE TABLE `alex_img_verif_add` ( `numero` varchar(10) NOT NULL default '', `time` int(10) unsigned NOT NULL default '0', `valeur` varchar(5) NOT NULL default '', `nom` varchar(40) NOT NULL default '', `email` varchar(150) NOT NULL default '', `site` varchar(150) NOT NULL default '', `ville_pays` varchar(60) NOT NULL default '', `note` char(2) NOT NULL default '', `message` text NOT NULL, KEY `time` (`time`), KEY `numero` (`numero`) ) TYPE=MyISAM;

2- Téléchargez le zip de la nouvelle version et copiez/collez intégralement les dossiers et fichiers suivants :
"/admin/",
"/fonts/",
"/genImg/",
"/include/",
"/languages/",
"/templates/admin/options.htm",
"/add_message.php",
"/index.php",
"infos_code.php",

3- Récupérez le fichier "config/config_base.php" situé sur le serveur de votre hébergeur.
Celui ci doit ressembler à cela :

<?php
$database_type = "MySQL";
$f_mysql_host = "localhost";
$f_mysql_user = "root";
$f_mysql_pass = "****";
$f_mysql_base = "guestbook";
$name_table['alex_livre_sessions'] = "alex_livre_sessions";
$name_table['alex_livre_users'] = "alex_livre_users";
$name_table['alex_livre_messages'] = "alex_livre_messages";
$name_table['alex_livre_censure'] = "alex_livre_censure";
$name_table['alex_livre_ip'] = "alex_livre_ip";
$name_table['alex_livre_smileys'] = "alex_livre_smileys";
$name_table['alex_img_verif_add'] = "alex_img_verif_add";
?>
Rajoutez la ligne en rouge à la fin du fichier.
3- Allez dans la partie admin du livre d'or, dans les options il y a un nouvel élément disponible : "Souhaitez vous imposer la saisie d'un code de sécurité à l'utilisateur avant l'ajout d'un message ?". Paramétrez cette valeur comme vous le souhaitez, puis cliquez sur "Enregistrer". Cliquez sur le bouton "Enregistrer" même si vous n'avez pas modifié les valeurs des options, cela mettra à jour un fichier de configuration et cette étape est indispensable pour éviter les erreurs par la suite.
4- Si vous n'aviez pas personnalisé vos skins, vous pouvez intégralement copier/coller le dossier "/templates/skins/", et pour vous la mise à jour est terminée. Dans le cas contraire vous allez devoir procéder à la mise à jour manuelle de votre skin, cette dernière étape est détaillée à l'étape 5.
5- Cette étape est nécessaire uniquement si vous souhaitez conserver l'apparence visuelle de votre livre d'or.
> Dans le dossier "templates/skins", sélectionnez le dossier portant le nom du skin que vous allez devoir mettre à jour. La procédure est à peu près similaire pour tous les skins.
> Editez le fichier "assembly.htm", repérez la fonction javascript verif_add() et rajoutez les lignes en rouge :
function verif_add(){
var F = document.getElementById("form_add_guest");
var nom = F.nom.value;
var message = F.message_textarea.value;
<mx:bloc id="bloc_verif_mail">
var mail= F.email.value;
</mx:bloc id="bloc_verif_mail">
if (!nom){
alert("<mx:text id="erreur_add_nom"/> ");
return false;
}
else if (!message){
alert("<mx:text id="erreur_add_message"/> ");
return false;
}
<mx:bloc id="bloc_verif_mail2">
else if (!verif_mail(mail) && mail){
alert("<mx:text id="erreur_mail"/> ");
return false;
}
</mx:bloc id="bloc_verif_mail2">
else if (F.code_securite && !F.code_securite.value){
alert("<mx:text id="erreur_code_securite"/>");
return false;
}
}

> Dans le fichier "add_message.htm", vers la ligne 81 (la ligne exacte dépend de votre configuration), repérez :

<tr>
<td width="100%" colspan="2" height="40">
<p align="center"><input type="submit" value="<mx:text id="ajouter_message_visiteur"/>" name="ajouter" class="normal" /></p>
</td>
</tr>

Et remplacez par :

Si votre skin est différent de "double_NewLook" :
<mx:bloc id="bloc_code_securite">
<tr>
<td width="100%" colspan="2">
<p align="center">&nbsp;<br><mx:text id="veuillez_taper_code"/> : (<a href="javascript: script_popup('infos_code.php?lang=<mx:text id="lang"/>', 'down', 350, 280, 'scrollbars=yes')"><mx:text id="a_quoi_ca_sert"/></a>)<br>
<img width="110" height="25" align="absmiddle" border="0" src="genImg/?id=<mx:text id="id_genImg"/>" />
<input class="large" maxlength="4" type="text" name="code_securite" size="5" style="font-family: Courier New; font-size: 10pt; text-align: center" />
<input type="hidden" name="num_id" value="<mx:text id="id_genImg"/>" /></p>
</td>
</tr>
</mx:bloc id="bloc_code_securite">
<tr>
<td width="100%" colspan="2" height="40">
<p align="center">&nbsp;<br><input type="submit" value="<mx:text id="ajouter_message_visiteur"/>" name="ajouter" class="normal" /></p>
</td>
</tr>
Si votre est "double_NewLook" :
<mx:bloc id="bloc_code_securite">
<tr>
<td width="500" class="row_gris" colspan="2">
<p align="center"><font class="Verdana_Noir"><mx:text id="veuillez_taper_code"/> : (<a href="javascript: script_popup('infos_code.php?lang=<mx:text id="lang"/>', 'down', 350, 280, 'scrollbars=yes')" style="color: #000000"><mx:text id="a_quoi_ca_sert"/></a>)</font><br>
<img width="110" height="25" align="absmiddle" border="0" src="genImg/?id=<mx:text id="id_genImg"/>" />
<input class="large" maxlength="4" type="text" name="code_securite" size="5" style="font-family: Courier New; font-size: 10pt; text-align: center" />
<input type="hidden" name="num_id" value="<mx:text id="id_genImg"/>" /></p>
</td>
</tr>
</mx:bloc id="bloc_code_securite">
<tr>
<td width="500" colspan="2" class="row_gris" height="40">
<p align="center">&nbsp;<br><input type="submit" value="<mx:text id="ajouter_message_visiteur"/>" name="ajouter" class="normal" /></p>
</td>
</tr>

> Si vous avez limité le nombre de caractères possibles dans un message, vous pouvez éventuellement rajouter cette étape. Repérez :

<mx:bloc id="bloc_max_car">
<input type="text" name="reste_car" value="<mx:text id="value_max_car"/>" size="100" style="border: 0; background: transparent; font-size: 10px; text-align: center; width: 100%" readonly />
</mx:bloc id="bloc_max_car">

Et remplacez par :

<mx:bloc id="bloc_max_car">
<input type="text" name="reste_car" value="<mx:text id="value_max_car"/>" size="100" style="border: 0; background: transparent; font-size: 10px; color: #A1A1A1; text-align: center; width: 100%" readonly />
</mx:bloc id="bloc_max_car">

L'élément rajouté est en rouge. Le texte indiquant le nombre de caractères restant est mis en gris. Vous pouvez changer le code de la couleur par celle de votre choix, ou ignorer cette étape facultative.

> Repérez :

<input type="text" name="nom" size="34" maxlength="50" />

Et remplacez par :

<input type="text" name="nom" size="34" maxlength="50"<mx:text id="value_nom"/>/>

> Repérez :

<input type="text" name="email" size="34" maxlength="150" />

Et remplacez par :

<input type="text" name="email" size="34" maxlength="150"<mx:text id="value_email"/>/>

> Repérez :

<input type="text" name="site" size="34" maxlength="150" />

Et remplacez par :

<input type="text" name="site" size="34" maxlength="150"<mx:text id="value_site"/>/>

> Repérez :

<input type="text" name="ville_pays" size="34" maxlength="60" />

Et remplacez par :

<input type="text" name="ville_pays" size="34" maxlength="60"<mx:text id="value_ville_pays"/>/>

> Repérez :

<select size="1" name="note_site">
<option value="" selected>-</option>
<option value="10">10<mx:text id="note_super"/></option>
<option value="9">9</option>
<option value="8">8</option>
<option value="7">7</option>
<option value="6">6</option>
<option value="5">5<mx:text id="note_moyen"/></option>
<option value="4">4</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
<option value="0">0<mx:text id="note_rate"/></option>
</select>

Et remplacez par :

<select size="1" name="note_site">
<option value=""<mx:text id="select_note_none"/>>-</option>
<option value="10"<mx:text id="select_note_10"/>>10<mx:text id="note_super"/></option>
<option value="9"<mx:text id="select_note_9"/>>9</option>
<option value="8"<mx:text id="select_note_8"/>>8</option>
<option value="7"<mx:text id="select_note_7"/>>7</option>
<option value="6"<mx:text id="select_note_6"/>>6</option>
<option value="5"<mx:text id="select_note_5"/>>5<mx:text id="note_moyen"/></option>
<option value="4"<mx:text id="select_note_4"/>>4</option>
<option value="3"<mx:text id="select_note_3"/>>3</option>
<option value="2"<mx:text id="select_note_2"/>>2</option>
<option value="1"<mx:text id="select_note_1"/>>1</option>
<option value="0"<mx:text id="select_note_0"/>>0<mx:text id="note_rate"/></option>
</select>

> Repérez :

<textarea id="message_textarea" rows="8" cols="69" onselect="verifCar(this); storeCaret(this); " onclick="verifCar(this); storeCaret(this);" onkeyup="verifCar(this); storeCaret(this);" onFocus="verifCar(this)" onKeyDown="verifCar(this)" onBlur="verifCar(this)" name="message_textarea" /></textarea>

Et remplacez par :

<textarea id="message_textarea" rows="8" cols="69" onselect="verifCar(this); storeCaret(this); " onclick="verifCar(this); storeCaret(this);" onkeyup="verifCar(this); storeCaret(this);" onFocus="verifCar(this)" onKeyDown="verifCar(this)" onBlur="verifCar(this)" name="message_textarea" /><mx:text id="value_message_textarea"/></textarea>

C'est terminé, votre script est mis à jour :o)