Il vous faut également un simple fichier texte pour le compteur.

N'oubliez pas de telecharger aussi les images : bbcode bbcode2 html url mdnet
Le 'bullet' pour la liste des section : »

smileyz.js function addEvent(obj, evType, fn){
    var result;
    if (obj.addEventListener){
        obj.addEventListener(evType, fn, false);
        result = true;
    } else if (obj.attachEvent){
        var r = obj.attachEvent("on"+evType, fn);
        result = r;
    } else {
        obj.setAttribute("on"+evType, fn);
    }
}

function onFocus(e) {
    if(!e) var e = window.event;
    
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    
    targ.select();
}

function bbClick(e) {
    if(!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    
    var s = document.getElementById('mainInput');
    s.value = "[img]"+targ.href+"[/img]";
    s.focus();
    
    s = null;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
    return false;
}
function bb2Click(e) {
    if(!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    
    var s = document.getElementById('mainInput');
    s.value = "[img="+targ.href+"]";
    s.focus();
    
    s = null;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
    return false;
}
function htmlClick(e) {
    if(!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    
    var s = document.getElementById('mainInput');
    s.value = "<img src='"+targ.href+"' alt='' />;";
    s.focus();
    
    s = null;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
    return false;
}
function urlClick(e) {
    if(!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    
    var s = document.getElementById('mainInput');
    s.value = targ.href;
    s.focus();
    
    s = null;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
    return false;
}
function mdnetClick(e) {
    if(!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    
    var s = document.getElementById('mainInput');
    s.value = targ.href.replace("mdnet:","");
    s.focus();
    
    s = null;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
    return false;
}

function tweakTheFun() {
    var singleInput = document.getElementById('mainInput');
    if(singleInput)
    {
        var links = document.getElementsByTagName('A');
        
        for(var i = links.length-1; i>=0; --i)
        {
            var link = links[i]
            if(link.className.indexOf("SZ_bb") != -1)
                link.onclick = bbClick;
            if(link.className.indexOf("SZ_bb2") != -1)
                link.onclick = bb2Click;
            if(link.className.indexOf("SZ_html") != -1)
                link.onclick = htmlClick;
            if(link.className.indexOf("SZ_url") != -1)
                link.onclick = urlClick;
            if(link.className.indexOf("SZ_mdnet") != -1)
                link.onclick = mdnetClick;
        }
    }
    
    var inputs = document.getElementsByTagName('INPUT');
    for(var j=inputs.length-1; j>=0; --j)
        addEvent(inputs[j], "focus", onFocus);
}

addEvent(window, "load", tweakTheFun);

smileyz.css html, body {
    background-color: white;
}

* {
    margin: 0;
    padding: 0;
}
ul, li {
}

a {
    color: black;
    text-decoration: none;
}
a:hover {
    text-decoration: underline;
    color: #333;
}
a img {
    border: none;
}

#menu {
    margin: 1em 1em;
}

#menu li {
    padding-left: 12px;
    background: url(images/arrow.gif) 2px center no-repeat;
    display: inline;
}
#menu #current {
    text-decoration: underline overline;
}

h2 {
    font-size: 1.1em;
    margin-left: 0.5em;
}
h2 span {
    font-size: 0.9em;
    font-weight: normal;
    margin-left: 2em;
}

form {
    margin: 1em;
}
form #sz legend {
    display: none;
}
form fieldset#sz {
    border: none;
    text-align: center;
}

#mainInput {
    width: 40em;
    text-align: center;
}

#smileysList {
    list-style: none;
}
#smileysList li {
    list-style: none;
    float: left;
    margin: 0.5em;
    padding: 0.5em;
    border: 1px solid #111;
    position: relative;
    min-width: 6em;
    _width: 6em;
}
#smileysList li h5 {
    position: relative;
    top: -1.3em;
    padding: 0 0.3em;
    background-color: white;
    font-size: xx-small;
}
#smileysList li li {
    float: none;
    margin: 0;
    padding: 0;
    border: none;
}

#smileysList label {
    width: 7em;
    display: block;
    float: left;
}

#smileysList input {
    width: 15em;
}

#smileysList.noinput li li {
    float: left;
    margin: 0;
    padding: 0;
    min-width: 0;
    _width: 0;
}
#smileysList.noinput li li a {
    letter-spacing: -1000em;
    display: block;
    margin: 0 2px;
    height: 11px;
    width: 15px;
    background: center left no-repeat;
    text-indent: -1em;
}
/*\*/html>body #smileysList.noinput li li a {
    letter-spacing : normal;
    text-indent : -999em;
    overflow : hidden;
}

#smileysList.noinput .SZ_bb {
    background-image: url(images/bbcode.gif);
}
#smileysList.noinput .SZ_bb2 {
    background-image: url(images/bbcode2.gif);
}
#smileysList.noinput .SZ_html {
    background-image: url(images/html.gif);
}
#smileysList.noinput .SZ_url {
    background-image: url(images/url2.gif);
}
#smileysList.noinput .SZ_mdnet {
    padding-left: 16px;
    letter-spacing: normal;
    text-indent: 0;
    background-image: url(images/mdnet.gif);
    font-size: 10px;
    width: 2.5em;
    height: 1.2em;
    color: black;
    text-decoration: none;
}

div {
    clear: both;
}

em.count {
    font-weight: bold;
    font-style: normal;
}


#copyrights p {
    text-align: center;
}
#footer p {
    text-align: right;
    font-size: 0.7em;
}

config.php <?php
//////////////////////////////////////////////////////
// partie configuration
////

// Titre de votre collection de smileyz
$title='Smileyz';

// liste des sections visible pour l'utilisateur. Si un fichier de smiley se trouve dans le dossier et
// qu'il n'est pas dans cette liste, il est quand même accessible a ceux qui connaissent son nom.
$sections=array('Smileyz','Smileyz 2','Bigz','Metal','tampons','Martoh','toh','GoRDO','imi.ne','lapins','petrus','dawa','ebichuleys','fou','mala','pingouino');

// liste des extensions des fichiers autorisées.
$allow_files= array('gif''png''jpg''bmp');

// repertoire qui contient les fichiers de smileyz
$section_path='./sections/';
// extention des fichiers contenant les liens
$extension='.txt';

// permet d'activer le tps de génération de la page
$show_time=true;
// permet d'activer le compteur de visite
$active_cpt=true;

// nom du fichier de compteur
$cpt_name='cpt';

// un seul et unique input ?
$unique_input=true;

// Autoriser l'utilisateur à changer la valeur unique_input
$unique_input_allow_override=true;

// selectionne les liens a afficher
// vous pouvez en préciser plusieur en les séparent par un pipe (|)
// valeurs disponibles :
// SZ_rien    -> aucun lien
// SZ_bb    -> lien bb     -> [img]http://blah[/img]
// SZ_bb2    -> lien bb2     -> [img=http://blah]
// SZ_html    -> lien html    -> <img src="http://blah alt="blah" />
// SZ_url    -> juste l'url    -> http://blah
// SZ_mdnet    -> pour les forum mesdiscussions.net -> [:blah] (n'est pas affiché tout le temps)
// SZ_tous    -> tous les types de lien

$links_to_show SZ_tous;



////
// end of config
//////////////////////////////////////////////////////
?>

common.php <?php
/**
 * @bief fichier commun aux deux parties de l'application.
 *   - défini les constantes utilisées
 *   - spécifie la version du logiciel
 *   - implémente différentes fonctions utiles (calcul du temps de génération ...)
 */


define('SZ_version''4.3&alpha; [070609]');


// les différents types de lien, explications dans le fichier de config
define ('SZ_rien',0);
define ('SZ_bb',1);
define ('SZ_bb2',2);
define ('SZ_html',4);
define ('SZ_url',8);
define ('SZ_mdnet',16);
define ('SZ_tous',SZ_bb SZ_bb2 SZ_html SZ_url SZ_mdnet);

define ('TAB'"\t");
define ('CRLF',"\n");

// fonctions de temps...
function TempsG()
{
  
$sec_courant=explode(' ',microtime());
  return(
$sec_courant[1]+$sec_courant[0]);
}

function 
FinDePage()
{
  global 
$__fonctions_Init_time;
  return 
round(TempsG()-$__fonctions_Init_time,3);
}

function 
addlead($obj$lead) {
    if (
is_array($obj)) {
        
$result = array();
        foreach(
$obj as $o) {
            
$result[] = addlead($o$lead);
        }
        return 
$result;
    }
    if (! empty (
$obj) && substr($obj0count($lead)) != $lead)  {
        return 
$lead.$obj;
    }
    return 
$obj;
}

function 
removelead($obj$lead) {
    if (
is_array($obj)) {
        
$result = array();
        foreach(
$obj as $o) {
            
$result[] = removelead($o$lead);
        }
        return 
$result;
    }
    if (! empty (
$obj) && substr($obj0count($lead)) == $lead)  {
        return 
substr($objcount($lead));
    }
    return 
$obj;
}

function 
addtrail($obj$trail) {
    if (
is_array($obj)) {
        
$result = array();
        foreach(
$obj as $o) {
            
$result[] = addtrail($o$trail);
        }
        return 
$result;
    }
    if (! empty (
$obj) && substr($obj, -count($trail)) != $trail)  {
        return 
$obj.$trail;
    }
    return 
$obj;
}

function 
removetrail($obj$trail) {
    if (
is_array($obj)) {
        
$result = array();
        foreach(
$obj as $o) {
            
$result[] = removetrail($o$trail);
        }
        return 
$result;
    }
    if (! empty (
$obj) && substr($obj, -count($trail)) == $trail)  {
        return 
substr($obj0, -count($trail));
    }
    return 
$obj;
}


?>

index.php <?php

require_once ('common.php');
require_once (
'config.php');

$debug_messages = array();

if (
$show_time) {
    
$__fonctions_Init_time=TempsG();
}

if (
$active_cpt) {
    
// met a jour le compteur de visites -- ds un fichier
    
session_start ();

    
$fp=fopen ($cpt_name,"r+");
    if (
flock ($fp,1) === false) {
        die (
"Erreur de lock sur le fichier [1]");
    }
    
$nbr_visites=fscanf ($fp,"%d");
    
$nbr_visites=$nbr_visites[0];
    if (empty (
$_SESSION["SZ_visite_comptee"]) ) {
        
// on incremente le cpt et on reecris sa valeur dans le fichier
        
if (flock ($fp,3) === false) {
            die (
"Erreur de unlock sur le fichier");
        }
        if (
flock ($fp,2) === false) {
            die (
"Erreur de lock sur le fichier [2]");
        }
        ++
$nbr_visites;
        
fseek ($fp,0);
        
fputs ($fp,$nbr_visites);
        
// on compte la visite
        
$_SESSION["SZ_visite_comptee"]="oui";
    }
    if (
flock ($fp,3) === false) {
        die (
"Erreur de unlock sur le fichier");
    }
    
fclose ($fp);
}
// Si on autorise l'override et que la valeur GET "uniqueInput" est set:
if ($unique_input_allow_override && isset ($_GET['uniqueInput']) ) {
    
$unique_input = (bool)$_GET['uniqueInput'] ;
}

$regex_allow_files '§(.*).(?:' join(removelead($allow_files'.'), '|') . ')$§';

// ajout  du slash à la fin du path si il n'y est pas.
$section_path addtrail($section_path'/');

// ajout du point à l'extension si il n'y est pas déjà
$extension addlead($extension'.');

// pour la compatiblité XHTML
ini_set('arg_separator.output'"&amp;");

// entête du fichier xhtml
?>

<!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="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

        <title><?php echo $title,' :: v',SZ_version; if($active_cpt) echo ' :: ',$nbr_visites,' visiteurs';?></title>

        <meta http-equiv="Pragma" content="no-cache" />
        <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
        <meta http-equiv="Expires" content="0" />

        <script type="text/javascript" src="smileyz.js"></script>
        <link rel="stylesheet" href="smileyz.css" type="text/css" />
    </head>
    <body>

<?php
// si pas de section spécifiée, on prend la premier section de la liste.
if  (isset ($_GET["section"]) && ! empty ($_GET["section"]) )  {
    
$section $_GET["section"];
} else {
    
$section=$sections[0];
}



// génération du menu...
echo "\t\t<ul id='menu'>\n";
foreach (
$sections as $s) {
    echo 
"\t\t\t<li";
    if (
$s==$section) {
        echo 
' id="current">'$s;
    } else {
        echo 
'><a href="?section='urlencode($s), (isset($_GET['uniqueInput']) ?( (bool)$_GET['uniqueInput']?'&amp;uniqueInput=1':'&amp;uniqueInput=0'):'').'">'$s'</a>';
    }
    echo 
"</li>\n";
}
echo 
"\t\t</ul>\n\n";

$real_c=0;

if  (! 
file_exists ($section_path.$section.$extension)) {
    echo 
"<p>Cette section n'existe pas.</p>";
} else {
    
$liste file ($section_path.$section.$extension);
    
$i=0;    // compteur de lignes
    
$comment=array();
    
$notsmiley=true;
    while (
$notsmiley) {
        
// on recherche les différents 'modificateurs' au debut du fichier...
        
switch( $liste[$i]{0} )
        {
            case 
"@" :    // lien
                
$debug_messages[] = "lien vers ".substr(rtrim($liste[$i]),1);

                
$liste=@file(substr(rtrim($liste[$i]),1)); // on remplace par le contenu du lien
                
$debug_messages[] = print_r($listetrue);
                
$i=-1// on redémarre au début du fichier
                
break;
            case 
"#" :    // commentaire global
                
$comment[] = substr ($liste[$i],1);
                break;
            case 
"§" :    // redéfinition des liens à afficher...
                
$lts substr (rtrim ($liste[$i]),1);
                
$split_lts explode ("|",$lts);
                
$ok true;
                foreach (
$split_lts as $l) {
                    if (
substr ($l,0,3) != "SZ_") {
                        
$ok=false;
                    } else {
                        
// on évalue la partie du modificateur
                        
eval ('$tmp='.$l.';');
                        
// si celui-ci est null, on ne le pend pas en compte
                        
if($tmp==&& $l != "SZ_rien") {
                            
$ok=false;
                        }
                    }
                }
                
// si on a pu évaluer la totalité du modificateur
                
if ($ok) {
                    
// on le sauvegarde...
                    
eval ('$links_to_show = '.$lts.';');
                }
                break;
            default :
                
$notsmiley=false;
        }
        ++
$i;
    }
    
// on place le compteur au bon endroit
    
--$i;

    
$debug_messages[] = $i;

    
// affichage éventuel du commentaire global
    
if (! empty ($comment)) {
        echo 
"\t\t<h2>Commentaire : <span class='content'>"join($comment"<br />"), "</span></h2>\n\n";
    }

    
// si on a demander un seul 'input', on l'affiche
    
if ($unique_input) {
        echo 
"\t\t<form method='get' action=''>\n";
        echo 
"\t\t\t<fieldset id='sz'>\n\t\t\t\t<legend></legend>\n";
        echo 
"\t\t\t\t<input type='text' value='' id='mainInput' name='mainInput'/>\n";
        echo 
"\t\t\t</fieldset>\n\t\t</form>\n\n";
    }

    
// compteurs
    
$c=count ($liste);
    
$smComm = array();

    echo 
"\t\t<ul id='smileysList'".($unique_input?" class='noinput'":"").">\n";
    for (
$i$i<$c; ++$i) {
        
$liste[$i]=rtrim($liste[$i]);
        
// on passe les chaines vides
        
if ($liste[$i]=='') {
            continue;
        }

        
// si diese, commentaire pour un smiley
        
if ($liste[$i]{0}=='#') {
            
$smComm[] = substr($liste[$i],1);
            
$debug_messages[] = "comment : " substr($liste[$i],1);
            
// on passe directement à la ligne suivante
            
continue;
        }

        
// on vérifie qu'on a bien a faire à un type de fichier autorisé.
        
if (! preg_match($regex_allow_files,$liste[$i]) ) {
            continue;
        }


        
// sinon, un smiley ! On l'affiche
        
$alt basename ($liste[$i]);

        echo 
"\t\t\t<li>\n";
        
// affichage dun comentaire de smileyz éventuel

        //~ $debug_messages[] = print_r($smComm, true);

        
if (!empty($smComm)) {
            echo 
"\t\t\t\t<h5>"join($smComm,"<br />"), "</h5>\n";
            
$smComm = array();
        }
        
// on affiche le smileyz avec un lien sur lui même
        
echo "\t\t\t\t<a href='"$liste[$i], '\'><img src="'$liste[$i], "\" alt='"$alt ,"' /></a>\n";
        if  (! 
$unique_input) {
            echo 
"\t\t\t\t<form method='get' action=''>\n";
        }
        echo 
"\t\t\t\t<ul class='linkage'>\n";

        
// affichage des différents types de liens demandés
        
if ($links_to_show SZ_bb) {
            echo 
"\t\t\t\t\t<li>";
            if (
$unique_input) {
                echo 
'<a href="'$liste[$i], '" class="SZ_bb">Link BB Code</a>';
            } else {
                echo 
'<label class="SZ_bb" for="s',    $real_c'SZ_bb">Link BB Code</label><input type="text" id="s'$real_c'SZ_bb" name="s'$real_c'SZ_bb" value="[img]'$liste[$i], '[/img]" />';
            }
            echo 
"</li>\n";
        }
        if (
$links_to_show SZ_bb2) {
            echo 
"\t\t\t\t\t<li>";
            if (
$unique_input) {
                echo 
'<a href="'$liste[$i], '" class="SZ_bb2">Link BB Code 2</a>';
            } else {
                echo 
'<label for="s'$real_c'SZ_bb2">Link BB Code 2</label><input type="text" id="s'$real_c'SZ_bb2" name="s'$real_c'SZ_bb2" value="[img='$liste[$i], ']" />';
            }
            echo 
"</li>\n";
        }
        if (
$links_to_show SZ_html) {
            echo 
"\t\t\t\t\t<li>";
            if (
$unique_input) {
                echo 
"<a href='".$liste[$i]."' class='SZ_html'>Link HTML</a>";
            } else {
                echo 
'<label for="s'$real_c'SZ_html">Link HTML</label><input type="text" id="s'$real_c'SZ_html" name="s'$real_c'SZ_html" value="&lt;img src=\''$liste[$i], '\' alt=\''$alt,'\' /&gt;" />';
            }
            echo 
"</li>\n";
        }
        if (
$links_to_show SZ_url) {
            echo 
"\t\t\t\t\t<li>";
            if (
$unique_input) {
                echo 
'<a href="'$liste[$i], '" class="SZ_url">URL</a>';
            } else {
                echo 
'<label for="s'$real_c'SZ_url">URL</label><input type="text" id="s'$real_c'SZ_url" name="s'$real_c'SZ_url" value="'$liste[$i], '" />';
            }
            echo 
"</li>\n";
        }
        if ( (
$links_to_show SZ_mdnet) && preg_match ('§^http://(.*?)/(.*?)/?images/perso/([0-9]*)?/?(.*).gif$§',$liste[$i],$xpr) ) {

            
//~ $debug_messages = array_merge($debug_messages, $xpr);
            //~ $debug_messages[] = "------------------------------------------------------";

            
$d explode ('.',$xpr[1]);

            
$domaine = ( in_array($d[0], array('forum''www''images''forum-images'))  )? $d[1].'.'.$d[2] : $d[0];
            
$domaine_court = array ("presence-pc.com" => "PPC",
                                                  
"hardware.fr" => "HFR",
                                                  
"cheznous" => "CN"
                                                  
);
            if (
$domaine == "mesdiscussions.net") {
                
$domaine $xpr[2];
            }
            
$domaine str_replace (array_keys ($domaine_court), array_values ($domaine_court), $domaine);

            
$code "[:" $xpr[4] . ( !empty($xpr[3]) ? ":"$xpr[3] : "" ) . "]";

            echo 
"\t\t\t\t\t<li>";
            if (
$unique_input) {
                echo 
'<a href="mdnet:'$code'" class="SZ_mdnet '$domaine'">'$domaine'</a>';
            } else {
                echo 
'<label for="s'$real_c'SZ_mdnet">'$domaine'</label><input type="text" id="s'$real_c'SZ_mdnet" name="s'$real_c'SZ_mdnet" value="'$code'" />';
            }
            echo 
"</li>\n";
        }
        echo 
"\t\t\t\t</ul>\n";
        if (! 
$unique_input) {
            echo 
"\t\t\t\t</form>\n";
        }
        echo 
"\t\t\t</li>\n";
        ++
$real_c;
    }
    echo 
"\t\t</ul>\n";
}
?>
        <div id="informations">
<?php if ($real_c 0) { ?>
        <p id="smileyCount">Total: <em class="count"><?php echo $real_c?></em> smileys</p>
<?php ?>
<?php 
if ($show_time) { ?>
        <p id="generationCount">Page générée en <em class="count"><?php echo FinDePage(); ?></em> seconde(s).</p>
<?php ?>
        </div>
        <div id="copyrights">
        <p>
            <a href="http://kangol.prout.be/smileyz/change.log">Smileyz version <?php echo SZ_version?></a>
            --
            <a href="http://kangol.prout.be/smileyz/source.php">Copyleft 2002 KangOl (aidé par Masklinn).</a>
        </p>
        </div>
        <div id="footer">
        <p>
            <?php
            
// si on autoriqe de passer d'un mode d'affichage à un autre, on ajout un lien le permettant
            
if ($unique_input_allow_override) {
                echo 
'<a href="?section='urlencode ($section),'&amp;uniqueInput=', ($unique_input?'0':'1'),'">', ($unique_input 'Version accessible':'Version ultra sexxah'), '</a>';
            }
            
?>
        </p>
        </div>
        <script type="text/javascript">
        <?php
            
if(isset($_GET['debug'])) {
                foreach (
$debug_messages as $dm) {
                    echo 
"console.log('"$title" : "str_replace(array("\n""'"), array('\n''\\\''), $dm), "');\n";
                }
            }
        
?>
        </script>
    </body>
</html>
==================================================================================
© copyleft 2002 KangOl (aidé de Masklinn)