По умолчанию в письмах от посетителей сайта, отправленных через стандартный компонент Контакты указано только их имя, email и непосредственно сам текст сообщения. Иногда же помимо этого требуется знать еще и IP-адрес автора сообщения. Такого функционала в компоненте Контакты нет, но путем несложной модификации можно его туда добавить.
ПРИМЕЧАНИЕ: перед внесением любых изменений рекомендуем сделать резервные копии модифицируемых файлов, чтобы при желании можно было откатиться на оригинальную версию.
Приступим к модификации, для этого открываем файл components/com_contact/contact.php, находим в нем строчку:
$text = $prefix ."\n". $name. ' <'. $email .'>' ."\n\n". ( $text );
и заменяем ее на:
$text = $prefix ."\n". $name. ' <'. $email .'>' . "\nIP: ". ( 'REMOTE_ADDR' ) ."\n\n". ( $text );
После этой модификации в тексте писем помимо имени и e-mail будет еще и IP-адрес отправителя. Однако, если он включит функцию отправки копии ему на e-mail, он тоже увидит, что его IP-адрес записан. Если в ваши планы не входит информирование пользователя о том, что его «посчитали», то делаем дополнительную модификацию: находим в нем строчку:
$copy_text = $copy_text ."\n\n". $text .'';
и заменяем ее на:
$text = $prefix ."\n". $name. ' <'. $email .'>' ."\n\n". ( $text );
$copy_text = $copy_text ."\n\n". $text .'';
В результате этой модификации в копии письма отправленной пользователю информации о его IP уже не будет.
В принципе приведенную модификацию можно слегка усложнить, сделав более «навороченную» функцию для определения IP-адреса посетителя. Данная функция учитывает возможность использования пользователем proxy-сервера. Для этого в первом случае (вторая часть модификации не затрагивается) код:
$text = $prefix ."\n". $name. ' <'. $email .'>' ."\n\n". ( $text );
необходимо заменить на:
$ip = "";
$proxy = "";
if (($_SERVER)) {
if (($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
$proxy = $_SERVER["REMOTE_ADDR"];
} elseif (($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}
} else {
if ( ( 'HTTP_X_FORWARDED_FOR' ) ) {
$ip = ( 'HTTP_X_FORWARDED_FOR');
$proxy = $_SERVER["REMOTE_ADDR"];
} elseif ( ( 'HTTP_CLIENT_IP' ) ) {
$ip = ( 'HTTP_CLIENT_IP' );
} else {
$ip = ( 'REMOTE_ADDR' );
}
}
if (($ip, ',')) {
$ips = (',', $ip);
$ip = $ips[0];
}
if ($proxy != '') {
$ip = $ip . '(Proxy: '.$proxy.')';
}
$text = $prefix ."\n". $name. ' <'. $email .'>' . "\nIP: ". $ip ."\n\n". ( $text );
Источник: joomlaportal.ru



Май 25th, 2012
Archi
Опубликовано в рубрике
Метки: