DrupalBook.org.ua
Готовые решения для сайта на Drupal.Список IP и доменов пользователей, которые сейчас на сайте
Задача
Получить информацию о том, кто в данный момент находится на сайте
Решение
Варианты
- Включить стандартный блок "Сейчас на сайте"
- Создать свой блок, где будет выводиться нужная информация
Создаём блок
Код показывает 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().
Вывод
То Вам в наш магазин, обувь оптом. | На услуги грузовых перевозок автотранспортом москва екатеринбург.
Внимание:
не забудьте настроить права доступа к блок с этой информацией, потому что пользователи хотят анонимности и показ информации про них может расстоить...
Использованные материалы
Полезные ссылки
- Страница для печати
- 86 reads
Creative Commons: Attribution-Share Alike 2.5
Данные материалы выложены под лицензией Creative Commons: Attribution-Share Alike 2.5. Это значит, что вы можете распространять, копировать и модифицировать эти произведения при условии упоминания авторства оригинала, и при условии, что они также будут распространяться на условиях этой лицензии (то есть, изменённую работу нельзя защитить копирайтом). Подробнее смотри: http://ru.wikipedia.org/wiki/Creative_Commons