Accès au manager - réservé aux membres

Navigation

Bouts de Codes PHP

Compteur de connectés

Informations sur le code source PHP

Ecrit par :  asterix
Site de l'auteur Voir
Date d'enregistrement du code le 28 Mars 2008 - Vu 2483 fois
Code source zippé: Télécharger le fichier ZIP
Impression: Imprimer le code
Ajouter la page à vos favoris

Description du code source

Informations sur le code source

Classe PHP4 permettant d'afficher sans base de données le nombre de connectés au site.

Code Source



.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
.14
.15
.16
.17
.18
.19
.20
.21
.22
.23
.24
.25
.26
.27
.28
.29
.30
.31
.32
.33
.34
.35
.36
.37
.38
.39
.40
.41
.42
.43
.44
.45
.46
.47
.48
.49
.50
.51
.52
.53
.54
.55
.56
.57
.58
.59
.60
.61
.62
.63
.64
.65
.66
.67
.68
.69
.70
.71
.72
.73
.74
.75
.76
.77
.78
.79
.80
.81
.82
.83
.84
.85
.86
.87
.88
.89
.90
.91
.92
.93
.94
.95
.96
.97
.98
.99
.100
.101
.102
.103
.104
.105
.106
.107
.108
.109
.110
.111
.112
.113
.114
.115
.116
.117
.118
.119
.120
.121
.122
.123
.124
.125
.126
.127
.128
.129
.130
.131
.132
.133
.134
.135
.136
.137
.138
.139
.140
.141
.142
.143
.144
.145
.146
.147
.148
.149
.150
.151
.152
.153
.154
.155
.156
.157
.158
.159
.160
.161
.162
.163
.164
.165
.166
.167
.168
.169
.170
.171
.172
.173
.174
.175
.176
.177
.178
.179
.180
.181
.182
.183
.184
.185
.186
.187
.188
.189
.190
.191
.192
.193
.194
.195
.196
.197
.198
.199
.200
.201
.202
.203
.204
.205
.206
.207
.208
.209
.210
.211
.212
.213
.214
.215
.216
.217
.218
.219
.220
.221
.222
.223
.224
.225
.226
.227
.228
.229
.230
.231
.232
.233
.234
.235
.236
.237
.238
.239
.240
.241
.242
.243
.244
.245
.246
.247
.248
.249
.250
.251
.252
.253
.254
.255
.256
.257
.258
.259
.260
.261
.262
.263
.264
.265
.266
.267
.268
.269
.270
.271
.272
.273
.274
.275
.276
.277
.278
.279
.280
.281
.282
.283
.284
.285
.286
.287
.288
.289
.290
.291
.292
.293
.294
.295
.296
.297
.298
.299
.300
.301
.302
.303
.304
.305
.306
.307
.308
.309
.310
.311
.312
.313
.314
.315
.316
.317
.318
.319
.320
.321
.322
.323
.324
.325
.326
.327
.328
.329
.330
.331
.332
.333
.334
.335
.336
.337
.338
.339
.340
.341
.342
.343
.344
.345
 

<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Compteur de connectés                                     */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts365-PHP.htm              */
/* Auteur         : asterix                                                   */
/* Date édition   : 28 Mars 2008                                              */
/* Website auteur : http://www.bloggif.com                                    */
/*                                                                            */
/******************************************************************************/

if (!defined('VERIF')) exit();

if (!class_exists('counter'))
{

/*

-------------------------------------------
 Classe permettant d'afficher le nombre de
 connectés d'un site sans base de données.
------------------------------------------

*/

class counter
{
  var $dir;
  
  var $file;
  
  var $idle;
  
  var $cache_file;
  
  var $cache_time;
  
  var $cache_filename;
  
  var $cookie_name;
  
  /*
  $count : Gardera en mémoire le nombre de connectés.
  */
  
  var $count false;
  
  /*
  
  Constructeur
  
  */
  
  function counter($dir 'howmany/'$idle 300$cache_time 60
                                    $cache_filename 'cache.txt'
                                    $cookie_name 'counterId')
  {
    $dir substr($dir, -1) == '/' $dir $dir '/';
    
    if (!is_dir($dir))
    {
      mkdir($dir);
    }
    
    $this->dir $dir;
        
    $this->idle $idle;
        
    $this->file $this->dir $this->userId();
    
    $this->cache_filename $cache_filename;
    
    $this->cache_file $this->dir $cache_filename;
    
    $this->cache_time $cache_time;
    
    $this->cookie_name $cookie_name;
  }
  
  /*
  
  update : Met à jour le fichier de l'utilisateur courant
  
  */
  
  function update()
  {
    if (!@file_exists($this->file) || !@touch($this->file))
    {
      fopen($this->file'w');
    }
  }
  
  /*
  
  garbage : Nettoie le dossier - Suppréssion des fichiers obsolètes
  
  */
  
  function garbage()
  {
    $timeCacheVerif time() - $this->cache_time;
    
    if ($h opendir($this->dir))
    {
      while (false !== ($f readdir($h)))
      {
        if ($f != '.' && $f != '..' && $f != $this->cache_filename)
        {
          $cfp $this->dir '/' $f;
          
          if (@filemtime($cfp) < $timeVerif)
          {
            @unlink($cfp);
          }
        }
      }
    }
  }
  
  /*
  
  view : Affiche le nombre de connectés au site
  
  */
  
  function view($text true)
  {
    if ($this->count !== false)
    {    
      $nb $this->count;
    }
    else
    {      
      $nb $this->count();
    }
    
    return $nb . ($text ' connecté' . ($nb>1?'s':'') : '');
  }

  /*
  
  userId : Renvoie un identifiant pour l'utilisateur
  
  */
  
  function userId()
  {
    if (isset($_COOKIE[$this->cookie_name]) && preg_match('`^([a-z0-9]{32})$`',
              $_COOKIE[$this->cookie_name]))
    {
      $cookId $retId $_COOKIE[$this->cookie_name];
      
      $fileIp $this->dir md5($this->getIp());

      if (file_exists($fileIp))
      {
        @unlink($fileIp);
      }
    }
    else // Première page vue
    {
      $cookId md5(uniqid(rand(), true));
      
      $retId md5($this->getIp());
    }
    
    if (!headers_sent())
    {
      setcookie($this->cookie_name$cookIdtime()+($this->idle*2), '/');
    }

    return $retId;
  }
  
  /*
  
  getIp : Renvoie l'adresse IP de l'utilisateur
  
  */
  
  function getIp()
  {
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    { 
      $ip $_SERVER['HTTP_X_FORWARDED_FOR'];
    } 
    elseif (isset($_SERVER['HTTP_CLIENT_IP']))
    {
      $ip $_SERVER['HTTP_CLIENT_IP'];
    } 
    else
    {
      $ip $_SERVER['REMOTE_ADDR'];
    }
    
    return $ip;
  }

  /*
  
  count : Retourne le nombre de connectés
  
  */
  
  function count()
  {
    //clearstatcache();
    
    $ok false;
    
    $timeCacheVerif time() - $this->cache_time;
    
if (file_exists($this->cache_file) && @filemtime($this->cache_file) > $timeCacheVerif)
    {
      $content $this->read($this->cache_file);
      
      $key substr($content032);
      
      $i substr($content32);
      
      if ($key == md5($i))
      {        
        $ok true;
      }
    }
    
    if (!$ok)
    {
      if (!is_dir($this->dir)) return false;
  
      $timeVerif time() - $this->idle;
          
      $i 0;
  
      if ($h opendir($this->dir))
      {
        while (false !== ($f readdir($h)))
        {
          if ($f != '.' && $f != '..' && $f != $this->cache_filename)
          {
            $cfp $this->dir '/' $f;
            
            if (@filemtime($cfp) > $timeVerif)
            {
              $i++;
            }
            else
            {
              @unlink($cfp);
            }
          }
        }
      }
      
      $this->write($this->cache_filemd5($i) . $i'w');
    }
            
    $this->count $i;

    return $this->count;
  }
  
  /*
  
  write : Ecrit dans un fichier
  
  */
  
  function write($file$content$mode 'a')
  {
    $fp fopen($file$mode);
        
    if ($fp)
    {
      @flock($fpLOCK_EX);
      
      @fwrite($fp$contentstrlen($content));
            
      @flock($fpLOCK_UN);
      
      @fclose($fp);
      
      return true;
    }
    
    return false;
  }
  
  /*
  
  read : Lit dans un fichier
  
  */
  
  function read($file)
  {    
    if (!@file_exists($file)) return false;
    
    $fp = @fopen($file'r');

    if ($fp)
    {
      @flock($fpLOCK_SH);
      
      $content = @fread($fp, @filesize($file));
      
      @flock($fpLOCK_UN);
      
      @fclose($fp);

      return $content;
    }
    
    return false;
  }

}

}

/*

UTILISATION

include('counter.class.php');
$counter = new counter('howmany/', 60);
$counter->update();

echo $counter->view();

*/

?>

Fonctions du code source

Fonctions php / mysql PHP

  • defined : Vérifie l'existence d'une constante - (PHP 4, PHP 5)
  • exit : Affiche un message et termine le script courant - (PHP 4, PHP 5)
  • class_exists : Vérifie qu'une classe a été définie - (PHP 4, PHP 5)
  • substr : Retourne un segment de chaîne - (PHP 4, PHP 5)
  • is_dir : Indique si le fichier est un dossier - (PHP 4, PHP 5)
  • mkdir : Crée un dossier - (PHP 4, PHP 5)
  • file_exists : Vérifie si un fichier ou un dossier existe - (PHP 4, PHP 5)
  • touch : Modifie la date de modification et de dernier accès d'un fichier - (PHP 4, PHP 5)
  • fopen : Ouvre un fichier ou une URL - (PHP 4, PHP 5)
  • time : Retourne le timestamp UNIX actuel - (PHP 4, PHP 5)
  • opendir : - (PHP 4, PHP 5)
  • readdir : Lit une entrée du dossier - (PHP 4, PHP 5)
  • filemtime : Lit la date de dernière modification du fichier - (PHP 4, PHP 5)
  • unlink : Efface un fichier - (PHP 4, PHP 5)
  • isset : Détermine si une variable est affectée - (PHP 4, PHP 5)
  • preg_match : Expression rationnelle standard - (PHP 4, PHP 5)
  • md5 : Calcule le md5 d'une chaîne - (PHP 4, PHP 5, PECL hash:1.1-1.3)
  • rand : Génère une valeur aléatoire - (PHP 4, PHP 5)
  • uniqid : Génère un identifiant unique - (PHP 4, PHP 5)
  • headers_sent : Indique si les en-têtes HTTP ont déjà été envoyés - (PHP 4, PHP 5)
  • setcookie : Envoie un cookie - (PHP 4, PHP 5)
  • flock : Verrouille le fichier - (PHP 4, PHP 5)
  • fwrite : Écrit un fichier en mode binaire - (PHP 4, PHP 5)
  • strlen : Calcule la taille d'une chaîne - (PHP 4, PHP 5)
  • fclose : Ferme un fichier - (PHP 4, PHP 5)
  • filesize : Lit la taille d'un fichier - (PHP 4, PHP 5)
  • fread : Lecture du fichier en mode binaire - (PHP 4, PHP 5)

Poster un commentaire

:P :) :wink: :lol: :surprised: :confused: :mad: :no:
Taille du texte:
Couleur:
Code de sécurité

Les dernières offres d'emploi