Отображаем IP анонимных авторов в комментариях

Практически на всех «подведомственных» мне ресурсах включена возможность оставлять комментарии незарегистрированным пользователям. Имеется так же парочка сайтов, содержание коих периодически провоцирует недоношенных в чреве матери организмов писать в комментариях непотребного смысла вещи: оскорбления, матюки не в тему и разного рода безосновательные обвинения.

Не считая правильным запрещение анонимам комментирование, и не желая «заморачиваться» с предварительным их модерированием, нашел для себя иной выход. Состоит он в том, что у анонима рядом с введенным им ником(или без такового, не суть) высвечиваеться его IP-адрес. У зарегистрированного пользователя - нет.

Нельзя сказать, что решение универсально, но практическая польза от него однозначно есть. Как есть и «живые» юридические прецеденты с привлечением «смелых анонимов» к ответственности по соответствующим статьям отечественного кодекса.

Правда «говнюк», пишущий гадости, дабы осознать возможные для себя последствия, должен иметь представление о том, что такое IP-адрес. Хотя бы смутное. Не нужно быть психологом, что бы понимать одну простую штуку: большинство «изподтишковых», «с подлянкой» комментов появляются по причине владеющей умами их авторов иллюзии анонимности. Ну и плюс мое личное наблюдение - где подлость, там и паранойя.

Вернемся же к сниппету.

IP «постящего» берется из базы. Там, в таблице комментариев сайта, если кто не знает, ай-пи хранится в поле hostname. Что бы добавить его вывод мной был добавлен в файл comment.tpl.php шаблона темы, в нужное его место, нижеприведенный код.

<?php
if ($comment->uid == '0'){
$comment_host_query = "SELECT hostname FROM {comments} WHERE cid='" . $comment->cid . "' and uid='0'";
if ($comment_host_result = db_query($comment_host_query)){
print ' | IP: ' . db_result($comment_host_result);
}}
?>

Как вариант, можно «привентить» и серверные глобальные переменные:

function get_real_ip()
{
    return ($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
}

Но возможность «забора» уже готового и записанного результата из таблицы мне видиться гораздо менее «ресурсоемкой» операцией. Посему мой выбор и рекоммендации относятся к первому приведенному методу.

Dalay