Tag-board

Description

Il s'agit d'un petit "Tag-Board", très simple, n'utilisant pas de base de données, qui permettra aux visiteurs de votre site de laisser un message.

Contenu du fichier lisez-moi.txt :

Placez tous les fichiers et le dossier smiles dans un dossier nommé tag.

Il faut insérer le Tag-Board à votre page d'accueil ("index.php") à l'aide d'un include :
<?php include("tag/tag.php");?>

Si vous souhaitez placer le Tag-Board dans un autre fichier,
il faut modifier la variable $fichier à la 1ère ligne du fichier tag.php
en mettant le nom de fichier de la page entre les guillemets.

Pour effacer tous les messages du Tag-board, cliquez sur le lien "admin",
entrez le login (pseudo, par défaut) et le mot de passe (pass, par défaut) et validez.

Pour changer le login et le mot de passe, éditez le fichier del_tag.php
et modifiez les lignes 19 et 20, en plaçant les nouveaux login et mot de passe
entre les guillemets.

Source / Exemple :


tag.php
<?php $fichier = "index.php"; //nom du fichier dans lequel est placé le Tag-Board ?>
<script language="javaScript">
function admin(){
win1=window.open("tag/del_tag.php","","toolbar=0,location=0,directories=0,status=0,scrollbars=0,resizable=0,copyhistory=0,menuBar=0,width=600,height=600")
win1.moveTo(screen.width/2-300,screen.height/2-300)
}
</script>

<script language="javaScript">
function inclu_smiley(smiley) {
    smiley = " "+smiley+" ";

        var compgen = navigator.userAgent.toLowerCase();
        var navsafari = ((compgen.indexOf('safari') != -1) || (navigator.vfinor == "Apple"));
        var navie = ((compgen.indexOf('msie') != -1) && (!navopera) && (!navsafari) && (!navwebtv));
        var navopera = (compgen.indexOf('opera') != -1);
        var navwebtv = (compgen.indexOf('webtv') != -1);
        var oswin =  ((compgen.indexOf("win") != -1) || (compgen.indexOf("16bit") != -1));
        var navers = parseInt(navigator.appVersion);
        var chem = document.getElementById('commentaire');
        var fermer = false;
        if((navers >= 4) && navie && oswin) {
            if(chem.isTextEdit) {
                chem.focus();
                var dselect = document.selection;
                var cr = dselect.createRange(); cr.colapse;
                if((dselect.type == "Text" || dselect.type == "None") && cr != null) { fermer = true; cr.text = smiley; }
            } else { fermer = true; chem.value += smiley; }
        } else {
            if(chem.selectionEnd) { 
                var selectdebut = chem.selectionStart;
                var selecthaut = chem.scrollTop;
                var selectfin = chem.selectionEnd;
                if(selectfin <= 2) { selectfin = chem.textLength; }
                var debut  = (chem.value).substring(0, selectdebut);
                var milieu = (chem.value).substring(selectdebut, selectfin);
                var fin    = (chem.value).substring(selectfin, chem.textLength);
                if(chem.selectionEnd - chem.selectionStart > 0) { milieu = smiley + milieu; } else { milieu = smiley + milieu; fermer = true; }
                chem.value = debut + milieu + fin;
                var cpos = selectdebut + (milieu.length);
                chem.selectionStart = cpos;
                chem.selectionEnd = cpos;
                chem.scrollTop = selecthaut;
            } else { fermer = true; chem.value += smiley; }
            chem.focus(); return fermer;
        }
    }
</script>

<?php

// Affichage des Smileys
function aff_smileys($nb_smileys, $nb_par_ligne)
{ 
for ($i = 1; $i <= $nb_smileys; $i++)
{ 
echo "<a href=\"#\" onclick=\"inclu_smiley('[:".$i.":]'); return false;\" title=\"[:".$i.":]\"><img src=\"tag/smiles/".$i.".gif\" border=\"0\" alt=\"[:".$i.":]\" /></a>";
if(gettype($i/$nb_par_ligne) == "integer")
echo "<br />"; else echo " ";
}
}

// 1ere fonction Smiley en boucle
function Smileys_in_img($chaine) {
$nb_smileys = 100; // Si il y a plus de 100 smileys, augenter ce nombre
for ($i = 1; $i <= $nb_smileys; $i++)
$chaine = str_replace("[:".$i.":]", "<img src=\"tag/smiles/".$i.".gif\" align=\"middle\" border=\"0\" alt=\"\" />", $chaine);
return $chaine;
}

function RecordMessage($MessagesFile)
{
 global $nom;
 global $commentaire;

 if (!file_exists($MessagesFile))
 {
  $pntFile1=fopen($MessagesFile,"w+");
  $ret=fputs($pntFile1,"<HR>\r");
  $ret=fclose($pntFile1);
 }

 $idlck=fopen($MessagesFile.".bak","w");
 fclose($idlck);

 $ret=copy($MessagesFile,$MessagesFile.".bak");
 $pntFile1=fopen($MessagesFile,"w");
 $pntFile2=fopen($MessagesFile.".bak","r");
 // write the message

  // nettoyage du nom
  $$nom=htmlentities($nom);
  $$nom=stripslashes($nom);
  $$nom=trim($nom);

  // nettoyage du commentaire
  $commentaire= str_replace("\'","'",$commentaire);
  $commentaire= str_replace('\"','"',$commentaire);
  $commentaire=htmlentities($commentaire);
  $commentaire=str_replace(chr(10)," <br> ",$commentaire);
  $commentaire=str_replace(chr(13),"",$commentaire);
  $commentaire=stripslashes($commentaire);
  $commentaire=trim($commentaire);

 if($commentaire&&$nom)
 {

 $ret=fputs($pntFile1,"  <I>$commentaire</I>\r");
 $ret=fputs($pntFile1,"\r");
 $ret=fputs($pntFile1,"<B>$nom</B>\r");
 $ret=fputs($pntFile1,date(" d/m/Y H:i"));
 $ret=fputs($pntFile1,"<HR>\r");
 }
 $contents = fread( $pntFile2, filesize( "$MessagesFile.bak" ) );
 $ret  =fputs($pntFile1,$contents);
 $ret=fclose($pntFile2);
 $ret=fclose($pntFile1);
 $ret=unlink("$MessagesFile.bak");
}
?>

<?php
$MessagesFile=("tag/messages.txt");
$ecriture=RecordMessage($MessagesFile);
?>

  <style>
  a{
      text-decoration:none;
  }
  </style>
  <SCRIPT LANGUAGE="JavaScript">
  function verifform(formulaire)
  {
      if(formulaire.commentaire.value == "")
      alert('Ecrivez un message !');
      if(formulaire.nom.value == "")
      alert('Ecrivez votre nom !');

      else
      formulaire.submit();
  }
</SCRIPT>

<center><font size="-1"><b>Tag-board</b></font></center>
<center><iframe src="tag/message.php" height="80" width="130"></iframe></center>
<center><table COLS=1 WIDTH="80%">
<tr><td><center>
<FORM ACTION=<?php echo $fichier; ?> method="post" name="tagger">
<b><font size="-1">Nom ou pseudo</font></b><br>
<input type="text" name="nom" size="15" maxlength="40"><br>
<b><font size="-1">Message</font></b><br>
<textarea name="commentaire" id="commentaire" cols="14" rows="5"></textarea>
<br>
<br>
<?php
aff_smileys(11, 6)
?>
<br>
<br>
<input type="button" value="Tagger" onClick="verifform(this.form)"></font>
</form>
<a href="javascript:;" onClick="admin()"><b><font size="-1">admin</font></b></a>
<br><br>
</center>
</td></tr>
</table></center>

message.php
<body text="#000099">
<?php
error_reporting(0);

// Affichage des Smileys
function aff_smileys($nb_smileys, $nb_par_ligne)
{ 
for ($i = 1; $i <= $nb_smileys; $i++)
{ 
echo "<a href=\"#\" onclick=\"inclu_smiley('[:".$i.":]'); return false;\" title=\"[:".$i.":]\"><img src=\"graphics/".$i.".gif\" border=\"0\" alt=\"[:".$i.":]\" /></a>";
if(gettype($i/$nb_par_ligne) == "integer")
echo "<br />"; else echo " ";
}
}

// 1ere fonction Smiley en boucle
function Smileys_in_img($chaine) {
$nb_smileys = 100; // Si il y a plus de 100 smileys, augenter ce nombre
for ($i = 1; $i <= $nb_smileys; $i++)
$chaine = str_replace("[:".$i.":]", "<img src=\"smiles/".$i.".gif\" align=\"middle\" border=\"0\" alt=\"\" />", $chaine);
return $chaine;
}

function lit_tag($fichier)
{
    $lecture=fopen($fichier, "r");
    $tag=fread($lecture,filesize($fichier));//lit le contenu du fichier
    fclose($lecture);
    return $tag;
}

   function filtre_tag($tag)
    {
        $tag= ereg_replace(chr(13),"<BR>",$tag);
	$tag=str_replace("\'","'",$tag);
	$tag=str_replace('\"','"',$tag);
        $tag = str_replace("[:1:]", "<img src=\"smiles/1.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:2:]", "<img src=\"smiles/2.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:3:]", "<img src=\"smiles/3.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:4:]", "<img src=\"smiles/4.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:5:]", "<img src=\"smiles/5.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:6:]", "<img src=\"smiles/6.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:7:]", "<img src=\"smiles/7.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:8:]", "<img src=\"smiles/8.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:9:]", "<img src=\"smiles/9.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:10:]", "<img src=\"smiles/10.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        $tag = str_replace("[:11:]", "<img src=\"smiles/11.gif\" align=\"middle\" border=\"0\" alt=\"\" />", $tag);
        return $tag;
        }

?>
<center><table COLS=1 WIDTH="100%" BGCOLOR="#FFFFFF" BORDER=0>
<tr>
<?php
$tag=lit_tag("messages.txt");
$tag=filtre_tag($tag);
?>
<TD VALIGN=CENTER>
<font size="-1">
<?php echo $tag; ?>
</font>
</TD>
</tr>
</table></center>
</body>

Conclusion :


Suite aux conseils de GRenard, il semblerait que la méthode de déclaration de variables "global" n'est plus usitée pour des raisons de sécurité, il conviendra donc d'utiliser la méthode $_POST.

$nom=$_POST['nom'];
$commentaire=$_POST['commentaire'];

à la place de :

global $nom;
global $commentaire;

Attention, cette méthode ne fonctionne pas chez Tiscali, mais fonctionne parfaitement chez Free.
A vous de tester pour les autres hébergeurs.

Codes Sources

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.

Du même auteur (familypm)