Список IP и доменов пользователей, которые сейчас на сайте

Авторы решений:
Версия Drupal:

Задача

Получить информацию о том, кто в данный момент находится на сайте

Решение

Варианты

  • Включить стандартный блок "Сейчас на сайте"
  • Создать свой блок, где будет выводиться нужная информация

Создаём блок

Код показывает IP-адреса и домены анонимных пользователей (гостей). Примерно так:
Так выглядит работающий блок

Drupal 5:

<?php
$number
= db_result(db_query('SELECT COUNT(uid) AS number FROM {users} WHERE status=1'));

        if (
user_access('access content')) {
         
// Count users with activity in the past defined period.
         
$time_period = variable_get('user_block_seconds_online', 900);

         
// Perform database queries to gather online user lists.
         
$guests = db_fetch_object(db_query('SELECT COUNT(sid) AS count FROM {sessions} WHERE timestamp >= %d AND uid = 0', time() - $time_period));
         
$guests_hostname = db_query('SELECT hostname FROM {sessions} WHERE timestamp >= %d AND uid = 0', time() - $time_period);
         
$total_guests = db_num_rows($guests_hostname);

         
$users = db_query('SELECT uid, name, access FROM {users} WHERE access >= %d AND uid != 0 ORDER BY access DESC', time() - $time_period);
         
$total_users = db_num_rows($users);

         
// Display a list of currently online users.
         
$max_users = variable_get('user_block_max_list_count', 10);
          if (
$total_users && $max_users) {
           
$items = array();
            while (
$max_users-- && $account = db_fetch_object($users)) {
             
$items[] = $account;
            }
           
$output.="<h7>Users</h7>";
           
$output .= theme('user_list', $items, NULL);
          }

         
// Display a list of currently online guests.
         
if ($total_guests) {
           
$output.="<div class=\"item-list\"><h7>Guests</h7><ul><fine>";
           
$guestitems = array();

            while (
$guests-- && $account = db_fetch_object($guests_hostname)) {
             
$guestitems[] = $account->hostname;
             
$output.="<li><a title=\"Go to address\" href=\"http://$account->hostname\">$account->hostname</a>
              <a title=\"Go to address\" href=\"http://"
.gethostbyaddr($account->hostname)."\">".gethostbyaddr($account->hostname)."</a>       "
            }
          
$output.="</fine></ul></div>";
          }
        }
        return
$output;
?>

Drupal 6:

Чтобы адаптировать этот сниппет для D6 нужно заменить в коде функцию db_num_rows(), которой уже нет в Друпал 6, на функцию
mysql_num_rows() в соответствии с API функции mysql_num_rows().

Вывод


То Вам в наш магазин, обувь оптом. | На услуги грузовых перевозок автотранспортом москва екатеринбург.

Внимание:
не забудьте настроить права доступа к блок с этой информацией, потому что пользователи хотят анонимности и показ информации про них может расстоить...

Использованные материалы

Custom "Who's Online" block

Полезные ссылки

Как показать IP гостей в блоке "Who is online"

Creative Commons: ­Attribution-Share Alike 2.5

Данные материалы выложены под лицензией Creative Commons: ­Attribution-Share Alike 2.5. Это значит, что вы можете распространять, копировать и модифицировать эти произведения при условии упоминания авторства оригинала, и при условии, что они также будут распространяться на условиях этой лицензии (то есть, изменённую работу нельзя защитить копирайтом). Подробнее смотри: http://ru.wikipedia.org/wiki/Creative_Commons