UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: sam от 02 Февраля 2016, 20:10:06

Название: Определение IP-адреса посетителей (вывод IP на сайте + вывод IP в Я.Метрике)
Отправлено: sam от 02 Февраля 2016, 20:10:06
Здравствуйте!
На сайте есть скрипт Я.Метрики с асинхронным кодом в файле .../xsltTpls/layouts/default.xsl:
				<!-- Yandex.Metrika counter -->
<script type="text/javascript">
var yaParams = {IP-address: "<?php echo $_SERVER['REMOTE_ADDR']; ?>"};
</script>
<script type="text/javascript">
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter******** = new Ya.Metrika({ id:********, webvisor:true, clickmap:true, trackLinks:true, accurateTrackBounce:true, params:window.yaParams||{ } });
}
catch(e) { }
});
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () {
n.parentNode.insertBefore(s, n);
};
s.type = "text/javascript";
s.async = true;
s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";
if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="//mc.yandex.ru/watch/********" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
В этом коде прошу обратить внимание на следующий скрипт, и параметр:
<script type="text/javascript">
var yaParams = {IP-address: "<?php echo $_SERVER['REMOTE_ADDR']; ?>"};
</script>

params:window.yaParams||{ }
Так как Я.Метрика перестал выводить IP-адреса посетителей, приходится изощряться таким образом, чтобы при выявлении злостных вредителей сайта, добавить их IP в черный список.

Но скрипт + параметр (см. второй код) не выполняют свою функцию, т.е. IP-адреса так и не видны.

Может кто подскажет, как для тестирования выводить IP-адрес в .../xsltTpls/layouts/default.xsl через скрипт/php? А также, как правильно все сделать, чтобы IP-адреса посетителей выводились в Я.Метрике?
Название: Re: Определение IP-адреса посетителей (вывод IP на сайте + вывод IP в Я.Метрике)
Отправлено: crazygeorgio от 04 Февраля 2016, 01:21:04
конечно так ничего не будет выводиться, сделайте кастомный метод, который бы возвращал $_SERVER['REMOTE_ADDR'] и пропишите через xslt
Название: Re: Определение IP-адреса посетителей (вывод IP на сайте + вывод IP в Я.Метрике)
Отправлено: sam от 05 Февраля 2016, 10:09:59
crazygeorgio, а можно попросить пример кастомного макроса на этот счетчик и его вызова через xslt? Код счетчика я уже привел выше.
Название: Re: Определение IP-адреса посетителей (вывод IP на сайте + вывод IP в Я.Метрике)
Отправлено: crazygeorgio от 08 Февраля 2016, 02:21:25
в custom.php пишем

public function getUserIp {
  return $_SERVER['REMOTE_ADDR'];
}

в шаблоне
<script type="text/javascript">
  var yaParams = {IP-address: "<xsl:value-of select="document('udata://custom/getUserIp')/udata" />"};
</script>
Название: Re: Определение IP-адреса посетителей (вывод IP на сайте + вывод IP в Я.Метрике)
Отправлено: sam от 08 Февраля 2016, 17:43:59
Спасибо! Попробую сделать.
Название: Re: Определение IP-адреса посетителей (вывод IP на сайте + вывод IP в Я.Метрике)
Отправлено: sam от 08 Февраля 2016, 18:04:34
Была одна неточность в макросе - казалось бы мелочь - забыли скобки "()"

public function getUserIp() {
  return $_SERVER['REMOTE_ADDR'];
}

Без этих скобок на сайте была ошибка в custom.php, в строке начала макроса. Надо что-то внутри скобок прописать или нет?
Название: Re: Определение IP-адреса посетителей (вывод IP на сайте + вывод IP в Я.Метрике)
Отправлено: crazygeorgio от 08 Февраля 2016, 18:16:42
нет, не надо, параметров ведь нет
Название: Re: Определение IP-адреса посетителей (вывод IP на сайте + вывод IP в Я.Метрике)
Отправлено: sam от 08 Февраля 2016, 18:26:01
Ок. Читал, что IP-адрес не всегда в "REMOTE_ADDR" - может усовершенствовать макрос, чтобы если не там IP, то в любом случае выводить правильный IP-адрес посетителя сайта?

Просто в Я.Маркете есть злостные "кликальщики", которые жмут и жмут. Не так много, конечно, но Я.Маркет это за склик не принимает почему-то (видимо выгодно, что у нас списываются $)?!
Название: Re: Определение IP-адреса посетителей (вывод IP на сайте + вывод IP в Я.Метрике)
Отправлено: crazygeorgio от 08 Февраля 2016, 18:32:34
можно как-то так

    public function getUserIp() {
      //получаем HTTP_X_FORWARDED_FOR
      $forward_ip = @getenv('HTTP_X_FORWARDED_FOR');
      if(empty($forward_ip)){
        $user_ip = @getenv('REMOTE_ADDR');
        $proxy_ip = '';
      } else{
        $user_ip = $forward_ip;
        $proxy_ip = @getenv('REMOTE_ADDR');
      }
      return $user_ip;
    }