IP-адрес пользователя в личном сообщении

Автор Slavegirl, 26 декабря 2014, 13:06:45

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Slavegirl

Здравствуйте!

Некоторое время назад решила добавить отображение IP-адреса пользователя при просмотре личного сообщения (по аналогии с обычными сообщениями в топиках). Внесла правку в файл PersonalMessage.template.php


// Show the IP to this user for this post - because you can moderate?
if (allowedTo('moderate_forum'))
echo '
<img src="', $settings['images_url'], '/ip.gif" alt="" /> <a href="', $scripturl, '?action=helpadmin;help=see_admin_ip" onclick="return reqWin(this.href);" class="help">', $message['member']['ip'], '</a>';


Позже в логах была замечена ошибка, которая возникала при просмотре личного сообщения от пользователя, который был удален с форума. Ошибку я исправила (добавила проверку на пустой IP). Но при поиске решения обнаружила одну интересную деталь. Как оказалось, IP-адрес пользователя не записывается в таблицу 'smf_personal_messages', как это происходит с обычными сообщениями (я этого не знала ранее). Также в файле /Source/PersonalMessage.php я не нашла никаких упоминаний об IP-адресе пользователя, отправившего личное сообщение.

Вопрос: какая неведомая сила заполняет переменную $message['member']['ip']? Ведь IP-адрес выводится вполне корректный при просмотре лички.

Заранее большое спасибо за подсказку!

С уважением,
Slavegirl

Slavegirl

Как ни странно, самой удалось только что найти ответ. За текущий IP-адрес пользователя в личных сообщениях отвечает массив $memberContext из Load.php, который подключается в PersonalMessage.php. Код вывода IP-адреса в личке изменила и теперь он имеет следующий вид:


// Show the IP to this user for this post - because you can moderate?
if (allowedTo('moderate_forum') && !$message['member']['is_guest'])
echo '
<img src="', $settings['images_url'], '/ip.gif" alt="" /> <a href="', $scripturl, '?action=helpadmin;help=see_admin_ip" onclick="return reqWin(this.href);" class="help">', $message['member']['ip'], '</a>';


Может кому-нибудь пригодится.  ::)

Серый Лис

Цитата: Slavegirl от 26 декабря 2014, 14:09:50Может кому-нибудь пригодится.

Почему бы и нет? )
За находчивость + тем более даме

Slavegirl

gray fox, правда у себя я немного переписала код по выводу IP-адреса пользователей в сообщениях, они отображаются только тем, у кого в правах доступа установлена опция "Управление пользователями форума". То есть, даже автор сообщения не видит свой IP-адрес (я посчитала это лишним).

Серый Лис

Цитата: Slavegirl от 26 декабря 2014, 15:15:38у себя я немного переписала код по выводу IP-адреса пользователей
Я вас понял. Спасибо.

valek0972

Цитата: Slavegirl от 26 декабря 2014, 14:09:50Может кому-нибудь пригодится.  ::)
Спасибо, плюсанул.

Цитата: Slavegirl от 26 декабря 2014, 15:15:38правда у себя я немного переписала код по выводу IP-адреса пользователей в сообщениях, они отображаются только тем, у кого в правах доступа установлена опция "Управление пользователями форума". То есть, даже автор сообщения не видит свой IP-адрес (я посчитала это лишним).
Выложите и этот исправленный код, если возможно.

Slavegirl

Окончательный вариант (вернула проверку на пустой IP, отказавшись на лишнюю проверку на "гостя" в личке):

Display.template.php, PersonalMessage.template.php

// Show the IP to this user for this post - because you can moderate?
if (allowedTo('moderate_forum') && !empty($message['member']['ip']))
echo '
<img src="', $settings['images_url'], '/ip.gif" alt="" /> <a href="', $scripturl, '?action=helpadmin;help=see_admin_ip" onclick="return reqWin(this.href);" class="help">', $message['member']['ip'], '</a>';


Убрала также функцию "trackip" при клике по IP-адресу админом, которая используется в оригинальных исходниках. На моем форуме с огромной базой данных она вызывала жуткие тормоза.

valek0972

Цитата: Slavegirl от 26 декабря 2014, 15:58:13Окончательный вариант
Благодарствую.
Еще один вопросик, если вставлять код в PersonalMessage, IP отображается с левой стороны блока, а в сообщениях в темах он справа, как сделать отображение в справа блока.


Slavegirl

PersonalMessage.template.php

echo '
<div class="smalltext reportlinks">';

// Show the IP to this user for this post - because you can moderate?
if (allowedTo('moderate_forum') && !empty($message['member']['ip']))
echo '
<img src="', $settings['images_url'], '/ip.gif" alt="" /> <a href="', $scripturl, '?action=helpadmin;help=see_admin_ip" onclick="return reqWin(this.href);" class="help">', $message['member']['ip'], '</a>';

echo '
</div><div class="clear"></div>';


index.css

#personal_messages .reportlinks
{
margin-right: 1.5em;
text-align: right;
}