[ Index ]
 

Code source de PunBB 1.2.16

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/upload/ -> admin_users.php (source)

   1  <?php
   2  /***********************************************************************

   3  

   4    Copyright (C) 2002-2005  Rickard Andersson (rickard@punbb.org)

   5  

   6    This file is part of PunBB.

   7  

   8    PunBB is free software; you can redistribute it and/or modify it

   9    under the terms of the GNU General Public License as published

  10    by the Free Software Foundation; either version 2 of the License,

  11    or (at your option) any later version.

  12  

  13    PunBB is distributed in the hope that it will be useful, but

  14    WITHOUT ANY WARRANTY; without even the implied warranty of

  15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

  16    GNU General Public License for more details.

  17  

  18    You should have received a copy of the GNU General Public License

  19    along with this program; if not, write to the Free Software

  20    Foundation, Inc., 59 Temple Place, Suite 330, Boston,

  21    MA  02111-1307  USA

  22  

  23  ************************************************************************/
  24  
  25  
  26  // Tell header.php to use the admin template

  27  define('PUN_ADMIN_CONSOLE', 1);
  28  
  29  define('PUN_ROOT', './');
  30  require  PUN_ROOT.'include/common.php';
  31  require  PUN_ROOT.'include/common_admin.php';
  32  
  33  
  34  if ($pun_user['g_id'] > PUN_MOD)
  35      message($lang_common['No permission']);
  36  
  37  
  38  // Show IP statistics for a certain user ID

  39  if (isset($_GET['ip_stats']))
  40  {
  41      $ip_stats = intval($_GET['ip_stats']);
  42      if ($ip_stats < 1)
  43          message($lang_common['Bad request']);
  44  
  45  
  46      $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Utilisateurs';
  47      require  PUN_ROOT.'header.php';
  48  
  49  ?>
  50  <div class="linkst">
  51      <div class="inbox">
  52          <div><a href="javascript:history.go(-1)">Retour</a></div>
  53      </div>
  54  </div>
  55  
  56  <div id="users1" class="blocktable">
  57      <h2><span>Utilisateurs</span></h2>
  58      <div class="box">
  59          <div class="inbox">
  60              <table cellspacing="0">
  61              <thead>
  62                  <tr>
  63                      <th class="tcl" scope="col">Adresse <acronym title="Internet Protocol" lang="en">IP</acronym></th>
  64                      <th class="tc2" scope="col">Dernière visite</th>
  65                      <th class="tc3" scope="col">Occurences</th>
  66                      <th class="tcr" scope="col">Action</th>
  67                  </tr>
  68              </thead>
  69              <tbody>
  70  <?php
  71  
  72      $result = $db->query('SELECT poster_ip, MAX(posted) AS last_used, COUNT(id) AS used_times FROM '.$db->prefix.'posts WHERE poster_id='.$ip_stats.' GROUP BY poster_ip ORDER BY last_used DESC') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
  73      if ($db->num_rows($result))
  74      {
  75          while ($cur_ip = $db->fetch_assoc($result))
  76          {
  77  
  78  ?>
  79                  <tr>
  80                      <td class="tcl"><a href="moderate.php?get_host=<?php echo $cur_ip['poster_ip'] ?>"><?php echo $cur_ip['poster_ip'] ?></a></td>
  81                      <td class="tc2"><?php echo format_time($cur_ip['last_used']) ?></td>
  82                      <td class="tc3"><?php echo $cur_ip['used_times'] ?></td>
  83                      <td class="tcr"><a href="admin_users.php?show_users=<?php echo $cur_ip['poster_ip'] ?>">Trouver plus d'utilisateur pour cette <acronym title="Internet Protocol" lang="en">IP</acronym></a></td>
  84                  </tr>
  85  <?php
  86  
  87          }
  88      }
  89      else
  90          echo "\t\t\t\t".'<tr><td class="tcl" colspan="4">Il n\'y a actuellement aucun message de cet utilisateur dans les forums.</td></tr>'."\n";
  91  
  92  ?>
  93              </tbody>
  94              </table>
  95          </div>
  96      </div>
  97  </div>
  98  
  99  <div class="linksb">
 100      <div class="inbox">
 101          <div><a href="javascript:history.go(-1)">Retour</a></div>
 102      </div>
 103  </div>
 104  <?php
 105  
 106      require  PUN_ROOT.'footer.php';
 107  }
 108  
 109  
 110  if (isset($_GET['show_users']))
 111  {
 112      $ip = $_GET['show_users'];
 113  
 114      if (!@preg_match('/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/', $ip))
 115          message('L\'adresse IP soumise n\'est pas correctement formée.');
 116  
 117  
 118      $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Utilisateurs';
 119      require  PUN_ROOT.'header.php';
 120  
 121  ?>
 122  <div class="linkst">
 123      <div class="inbox">
 124          <div><a href="javascript:history.go(-1)">Retour</a></div>
 125      </div>
 126  </div>
 127  
 128  <div id="users2" class="blocktable">
 129      <h2><span>Utilisateurs</span></h2>
 130      <div class="box">
 131          <div class="inbox">
 132              <table cellspacing="0">
 133              <thead>
 134                  <tr>
 135                      <th class="tcl" scope="col">Nom d'utilisateur</th>
 136                      <th class="tc2" scope="col">E-mail</th>
 137                      <th class="tc3" scope="col">Titre/Statut</th>
 138                      <th class="tc4" scope="col">Messages</th>
 139                      <th class="tc5" scope="col">Note admin</th>
 140                      <th class="tcr" scope="col">Actions</th>
 141                  </tr>
 142              </thead>
 143              <tbody>
 144  <?php
 145  
 146      $result = $db->query('SELECT DISTINCT poster_id, poster FROM '.$db->prefix.'posts WHERE poster_ip=\''.$db->escape($ip).'\' ORDER BY poster DESC') or error('Impossible de retrouver les informations des messages', __FILE__, __LINE__, $db->error());
 147      $num_posts = $db->num_rows($result);
 148  
 149      if ($num_posts)
 150      {
 151          // Loop through users and print out some info

 152          for ($i = 0; $i < $num_posts; ++$i)
 153          {
 154              list($poster_id, $poster) = $db->fetch_row($result);
 155  
 156              $result2 = $db->query('SELECT u.id, u.username, u.email, u.title, u.num_posts, u.admin_note, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id>1 AND u.id='.$poster_id) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());
 157  
 158              if (($user_data = $db->fetch_assoc($result2)))
 159              {
 160                  $user_title = get_title($user_data);
 161  
 162                  $actions = '<a href="admin_users.php?ip_stats='.$user_data['id'].'">Voir stats IP</a> - <a href="search.php?action=show_user&amp;user_id='.$user_data['id'].'">Afficher messages</a>';
 163  
 164  ?>
 165                  <tr>
 166                      <td class="tcl"><?php echo '<a href="profile.php?id='.$user_data['id'].'">'.pun_htmlspecialchars($user_data['username']).'</a>' ?></td>
 167                      <td class="tc2"><a href="mailto:<?php echo $user_data['email'] ?>"><?php echo $user_data['email'] ?></a></td>
 168                      <td class="tc3"><?php echo $user_title ?></td>
 169                      <td class="tc4"><?php echo $user_data['num_posts'] ?></td>
 170                      <td class="tc5"><?php echo ($user_data['admin_note'] != '') ? $user_data['admin_note'] : '&nbsp;' ?></td>
 171                      <td class="tcr"><?php echo $actions ?></td>
 172                  </tr>
 173  <?php
 174  
 175              }
 176              else
 177              {
 178  
 179  ?>
 180                  <tr>
 181                      <td class="tcl"><?php echo pun_htmlspecialchars($poster) ?></td>
 182                      <td class="tc2">&nbsp;</td>
 183                      <td class="tc3">Invité</td>
 184                      <td class="tc4">&nbsp;</td>
 185                      <td class="tc5">&nbsp;</td>
 186                      <td class="tcr">&nbsp;</td>
 187                  </tr>
 188  <?php
 189  
 190              }
 191          }
 192      }
 193      else
 194          echo "\t\t\t\t".'<tr><td class="tcl" colspan="6">L\'adresse IP soumise est introuvable dans la base de données.</td></tr>'."\n";
 195  
 196  ?>
 197              </tbody>
 198              </table>
 199          </div>
 200      </div>
 201  </div>
 202  
 203  <div class="linksb">
 204      <div class="inbox">
 205          <div><a href="javascript:history.go(-1)">Retour</a></div>
 206      </div>
 207  </div>
 208  <?php
 209      require  PUN_ROOT.'footer.php';
 210  }
 211  
 212  
 213  else if (isset($_POST['find_user']))
 214  {
 215      $form = $_POST['form'];
 216      $form['username'] = $_POST['username'];
 217  
 218      // trim() all elements in $form

 219      $form = array_map('trim', $form);
 220      $conditions = array();
 221  
 222      $posts_greater = trim($_POST['posts_greater']);
 223      $posts_less = trim($_POST['posts_less']);
 224      $last_post_after = trim($_POST['last_post_after']);
 225      $last_post_before = trim($_POST['last_post_before']);
 226      $registered_after = trim($_POST['registered_after']);
 227      $registered_before = trim($_POST['registered_before']);
 228      $order_by = $_POST['order_by'];
 229      $direction = $_POST['direction'];
 230      $user_group = $_POST['user_group'];
 231  
 232      if (preg_match('/[^0-9]/', $posts_greater.$posts_less))
 233          message('Vous avez saisi une donnée non-numérique dans un champ qui en requière une.');
 234  
 235      // Try to convert date/time to timestamps

 236      if ($last_post_after != '')
 237          $last_post_after = strtotime($last_post_after);
 238      if ($last_post_before != '')
 239          $last_post_before = strtotime($last_post_before);
 240      if ($registered_after != '')
 241          $registered_after = strtotime($registered_after);
 242      if ($registered_before != '')
 243          $registered_before = strtotime($registered_before);
 244  
 245      if ($last_post_after == -1 || $last_post_before == -1 || $registered_after == -1 || $registered_before == -1)
 246          message('Vous avez saisi une date/heure invalide.');
 247  
 248      if ($last_post_after != '')
 249          $conditions[] = 'u.last_post>'.$last_post_after;
 250      if ($last_post_before != '')
 251          $conditions[] = 'u.last_post<'.$last_post_before;
 252      if ($registered_after != '')
 253          $conditions[] = 'u.registered>'.$registered_after;
 254      if ($registered_before != '')
 255          $conditions[] = 'u.registered<'.$registered_before;
 256  
 257      $like_command = ($db_type == 'pgsql') ? 'ILIKE' : 'LIKE';
 258      while (list($key, $input) = @each($form))
 259      {
 260          if ($input != '' && in_array($key, array('username', 'email', 'title', 'realname', 'url', 'jabber', 'icq', 'msn', 'aim', 'yahoo', 'location', 'signature', 'admin_note')))
 261              $conditions[] = 'u.'.$db->escape($key).' '.$like_command.' \''.$db->escape(str_replace('*', '%', $input)).'\'';
 262      }
 263  
 264      if ($posts_greater != '')
 265          $conditions[] = 'u.num_posts>'.$posts_greater;
 266      if ($posts_less != '')
 267          $conditions[] = 'u.num_posts<'.$posts_less;
 268  
 269      if ($user_group != 'all')
 270          $conditions[] = 'u.group_id='.intval($user_group);
 271  
 272      if (empty($conditions))
 273          message('Vous n\'avez saisi aucun critères de recherche.');
 274  
 275  
 276      $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Utilisateurs';
 277      require  PUN_ROOT.'header.php';
 278  
 279  ?>
 280  <div class="linkst">
 281      <div class="inbox">
 282          <div><a href="javascript:history.go(-1)">Retour</a></div>
 283      </div>
 284  </div>
 285  
 286  <div id="users2" class="blocktable">
 287      <h2><span>Utilisateurs</span></h2>
 288      <div class="box">
 289          <div class="inbox">
 290              <table cellspacing="0">
 291              <thead>
 292                  <tr>
 293                      <th class="tcl" scope="col">Nom d'utilisateur</th>
 294                      <th class="tc2" scope="col">E-mail</th>
 295                      <th class="tc3" scope="col">Titre/Status</th>
 296                      <th class="tc4" scope="col">Messages</th>
 297                      <th class="tc5" scope="col">Note admin</th>
 298                      <th class="tcr" scope="col">Actions</th>
 299                  </tr>
 300              </thead>
 301              <tbody>
 302  <?php
 303  
 304      $result = $db->query('SELECT u.id, u.username, u.email, u.title, u.num_posts, u.admin_note, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id>1 AND '.implode(' AND ', $conditions).' ORDER BY '.$db->escape($order_by).' '.$db->escape($direction)) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());
 305      if ($db->num_rows($result))
 306      {
 307          while ($user_data = $db->fetch_assoc($result))
 308          {
 309              $user_title = get_title($user_data);
 310  
 311              // This script is a special case in that we want to display "Not verified" for non-verified users

 312              if (($user_data['g_id'] == '' || $user_data['g_id'] == PUN_UNVERIFIED) && $user_title != $lang_common['Banned'])
 313                  $user_title = '<span class="warntext">Not verified</span>';
 314  
 315              $actions = '<a href="admin_users.php?ip_stats='.$user_data['id'].'">Voir stats IP</a> - <a href="search.php?action=show_user&amp;user_id='.$user_data['id'].'">Afficher messages</a>';
 316  
 317  ?>
 318                  <tr>
 319                      <td class="tcl"><?php echo '<a href="profile.php?id='.$user_data['id'].'">'.pun_htmlspecialchars($user_data['username']).'</a>' ?></td>
 320                      <td class="tc2"><a href="mailto:<?php echo $user_data['email'] ?>"><?php echo $user_data['email'] ?></a></td>
 321                      <td class="tc3"><?php echo $user_title ?></td>
 322                      <td class="tc4"><?php echo $user_data['num_posts'] ?></td>
 323                      <td class="tc5"><?php echo ($user_data['admin_note'] != '') ? $user_data['admin_note'] : '&nbsp;' ?></td>
 324                      <td class="tcr"><?php echo $actions ?></td>
 325                  </tr>
 326  <?php
 327  
 328          }
 329      }
 330      else
 331          echo "\t\t\t\t".'<tr><td class="tcl" colspan="6">Aucun résultat.</td></tr>'."\n";
 332  
 333  ?>
 334              </tbody>
 335              </table>
 336          </div>
 337      </div>
 338  </div>
 339  
 340  <div class="linksb">
 341      <div class="inbox">
 342          <div><a href="javascript:history.go(-1)">Retour</a></div>
 343      </div>
 344  </div>
 345  <?php
 346  
 347      require  PUN_ROOT.'footer.php';
 348  }
 349  
 350  
 351  else
 352  {
 353      $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Utilisateurs';
 354      $focus_element = array('find_user', 'username');
 355      require  PUN_ROOT.'header.php';
 356  
 357      generate_admin_menu('users');
 358  
 359  ?>
 360      <div class="blockform">
 361          <h2><span>Recherche d'utilisateur</span></h2>
 362          <div class="box">
 363              <form id="find_user" method="post" action="admin_users.php?action=find_user">
 364                  <p class="submittop"><input type="submit" name="find_user" value=" Rechercher " tabindex="1" /></p>
 365                  <div class="inform">
 366                      <fieldset>
 367                          <legend>Saisissez vos critères de recherche</legend>
 368                          <div class="infldset">
 369                              <p>Recherche d'utilisateur dans la base de données. Vous pouvez saisir un ou plusieurs termes à rechercher. Utilisez le caractère astérisque (*) comme joker.</p>
 370                              <table  class="aligntop" cellspacing="0">
 371                                  <tr>
 372                                      <th scope="row">Nom d'utilisateur</th>
 373                                      <td><input type="text" name="username" size="25" maxlength="25" tabindex="2" /></td>
 374                                  </tr>
 375                                  <tr>
 376                                      <th scope="row">Adresse e-mail</th>
 377                                      <td><input type="text" name="form[email]" size="30" maxlength="50" tabindex="3" /></td>
 378                                  </tr>
 379                                  <tr>
 380                                      <th scope="row">Titre</th>
 381                                      <td><input type="text" name="form[title]" size="30" maxlength="50" tabindex="4" /></td>
 382                                  </tr>
 383                                  <tr>
 384                                      <th scope="row">Nom réel</th>
 385                                      <td><input type="text" name="form[realname]" size="30" maxlength="40" tabindex="5" /></td>
 386                                  </tr>
 387                                  <tr>
 388                                      <th scope="row">Site web</th>
 389                                      <td><input type="text" name="form[url]" size="35" maxlength="100" tabindex="6" /></td>
 390                                  </tr>
 391                                  <tr>
 392                                      <th scope="row">ICQ</th>
 393                                      <td><input type="text" name="form[icq]" size="12" maxlength="12" tabindex="7" /></td>
 394                                  </tr>
 395                                  <tr>
 396                                      <th scope="row">MSN Messenger</th>
 397                                      <td><input type="text" name="form[msn]" size="30" maxlength="50" tabindex="8" /></td>
 398                                  </tr>
 399                                  <tr>
 400                                      <th scope="row">AOL IM</th>
 401                                      <td><input type="text" name="form[aim]" size="20" maxlength="20" tabindex="9" /></td>
 402                                  </tr>
 403                                  <tr>
 404                                      <th scope="row">Yahoo! Messenger</th>
 405                                      <td><input type="text" name="form[yahoo]" size="20" maxlength="20" tabindex="10" /></td>
 406                                  </tr>
 407                                  <tr>
 408                                      <th scope="row">Lieu</th>
 409                                      <td><input type="text" name="form[location]" size="30" maxlength="30" tabindex="11" /></td>
 410                                  </tr>
 411                                  <tr>
 412                                      <th scope="row">Signature</th>
 413                                      <td><input type="text" name="form[signature]" size="35" maxlength="512" tabindex="12" /></td>
 414                                  </tr>
 415                                  <tr>
 416                                      <th scope="row">Note admin</th>
 417                                      <td><input type="text" name="form[admin_note]" size="30" maxlength="30" tabindex="13" /></td>
 418                                  </tr>
 419                                  <tr>
 420                                      <th scope="row">Nombre de messages supérieur à</th>
 421                                      <td><input type="text" name="posts_greater" size="5" maxlength="8" tabindex="14" /></td>
 422                                  </tr>
 423                                  <tr>
 424                                      <th scope="row">Nombre de messages inférieur à</th>
 425                                      <td><input type="text" name="posts_less" size="5" maxlength="8" tabindex="15" /></td>
 426                                  </tr>
 427                                  <tr>
 428                                      <th scope="row">Le dernier message est après le</th>
 429                                      <td><input type="text" name="last_post_after" size="24" maxlength="19" tabindex="16" />
 430                                      <span>(yyyy-mm-dd hh:mm:ss)</span></td>
 431                                  </tr>
 432                                  <tr>
 433                                      <th scope="row">Le dernier message est avant le</th>
 434                                      <td><input type="text" name="last_post_before" size="24" maxlength="19" tabindex="17" />
 435                                      <span>(yyyy-mm-dd hh:mm:ss)</span></td>
 436                                  </tr>
 437                                  <tr>
 438                                      <th scope="row">Inscrit après le</th>
 439                                      <td><input type="text" name="registered_after" size="24" maxlength="19" tabindex="18" />
 440                                      <span>(yyyy-mm-dd hh:mm:ss)</span></td>
 441                                  </tr>
 442                                  <tr>
 443                                      <th scope="row">Inscrit avant le</th>
 444                                      <td><input type="text" name="registered_before" size="24" maxlength="19" tabindex="19" />
 445                                      <span>(yyyy-mm-dd hh:mm:ss)</span></td>
 446                                  </tr>
 447                                  <tr>
 448                                      <th scope="row">Trier par</th>
 449                                      <td>
 450                                          <select name="order_by" tabindex="20">
 451                                              <option value="username" selected="selected">Nom d'utilisateur</option>
 452                                              <option value="email">e-mail</option>
 453                                              <option value="num_posts">messages</option>
 454                                              <option value="last_post">dernier message</option>
 455                                              <option value="registered">inscriptions</option>
 456                                          </select>&nbsp;&nbsp;&nbsp;<select name="direction" tabindex="21">
 457                                              <option value="ASC" selected="selected">croissant</option>
 458                                              <option value="DESC">décroissant</option>
 459                                          </select>
 460                                      </td>
 461                                  </tr>
 462                                  <tr>
 463                                      <th scope="row">Groupe utilisateurs</th>
 464                                      <td>
 465                                          <select name="user_group" tabindex="22">
 466                                                  <option value="all" selected="selected">Tous les groupes</option>
 467  <?php
 468  
 469      $result = $db->query('SELECT g_id, g_title FROM '.$db->prefix.'groups WHERE g_id!='.PUN_GUEST.' ORDER BY g_title') or error('Unable to fetch user group list', __FILE__, __LINE__, $db->error());
 470  
 471      while ($cur_group = $db->fetch_assoc($result))
 472          echo "\t\t\t\t\t\t\t\t\t\t\t".'<option value="'.$cur_group['g_id'].'">'.pun_htmlspecialchars($cur_group['g_title']).'</option>'."\n";
 473  
 474  ?>
 475                                          </select>
 476                                      </td>
 477                                  </tr>
 478                              </table>
 479                          </div>
 480                      </fieldset>
 481                  </div>
 482                  <p class="submitend"><input type="submit" name="find_user" value=" Rechercher " tabindex="23" /></p>
 483              </form>
 484          </div>
 485  
 486          <h2 class="block2"><span>Recherche <acronym title="Internet Protocol" lang="en">IP</acronym></span></h2>
 487          <div class="box">
 488              <form method="get" action="admin_users.php">
 489                  <div class="inform">
 490                      <fieldset>
 491                          <legend>Saisissez une adresse <acronym title="Internet Protocol" lang="en">IP</acronym> à rechercher</legend>
 492                          <div class="infldset">
 493                              <table class="aligntop" cellspacing="0">
 494                                  <tr>
 495                                      <th scope="row">Adresse <acronym title="Internet Protocol" lang="en">IP</acronym><div><input type="submit" value=" Trouver " tabindex="25" /></div></th>
 496                                      <td><input type="text" name="show_users" size="18" maxlength="15" tabindex="24" />
 497                                      <span>L'adresse <acronym title="Internet Protocol" lang="en">IP</acronym> à rechercher dans la base de données.</span></td>
 498                                  </tr>
 499                              </table>
 500                          </div>
 501                      </fieldset>
 502                  </div>
 503              </form>
 504          </div>
 505      </div>
 506      <div class="clearer"></div>
 507  </div>
 508  <?php
 509  
 510      require  PUN_ROOT.'footer.php';
 511  }


Généré le : Sat Nov 24 22:44:38 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics