За последние 24 часа нас посетили 71349 программистов и 1625 роботов. Сейчас ищут 916 программистов ...

Своя статистика для своих сайтов

Тема в разделе "PHP для новичков", создана пользователем bkm, 6 май 2013.

  1. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    Пытался реализовать статистику запросов для своего сайта.
    Тестовый сайт подгружает скрипт с сервера.

    Код (Text):
    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    2. <html>
    3. <head>
    4. <title>test</title>
    5. <script charset="UTF-8" src="http://server.ru/analytics/watch.js"></script>
    6. </head>
    7. <body>
    8. </body>
    9. </html>
    Файл watch.js на сервере
    Код (PHP):
    1. <?php
    2.     header('Content-Type:text/javascript;charset=utf-8');
    3.     echo "var ref = document.referrer; document.write(ref);";
    4. ?>
    Файл .htaccess на сервере
    Код (Text):
    1. AddType application/x-httpd-php .js
    2. AddHandler x-httpd-php5 .js
    3.  
    4. <FilesMatch "\.(js|php)$">
    5. SetHandler application/x-httpd-php
    6. </FilesMatch>
    Тут без проблем, вывожу адрес сайта с которого был переход.
    Но дальше засада, не знаю как передать значение js-переменной ref в php.

    Ткните, в какую сторону смотреть.
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Кроме как $.get и $.post или $.ajax вам не удастся передать из javascript в php.
     
  3. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    $.get и $.post или $.ajax предполагает наличие фреймворка jquery, я правильно Вас понял?

    Добавлено спустя 40 минут 31 секунду:
    сделал пока так

    Код (PHP):
    1. echo "var ref = document.referrer; var loc = window.location.href; if (ref!='') { document.write('<img src=\"http://server.ru/analytics/watch.php?ref=' + ref + '&loc=' + loc + '\" '+'border=\"0\" width=\"1\" height=\"1\" />'); }";
    меня терзают смутные сомнения, что можно сразу watch.php подключать.
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    почему?
     
  5. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    да, вы правы, так не выйдет.
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Не обязательно.
    XMLHttpRequest для красоты?
     
  7. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    а разве XMLHttpRequest работает за пределами домена?
    пошел читать маны.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я вот вам в личку скинул пример формирования запроса. если клиент поддерживает жс то будет записан тег с вызовом картинки по фиксированному адресу с передачей собранных данных. не поддерживает? - вызываем такую же картинку но передаем флаг "без скриптов". чем не устроило данное решение?
     
  9. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    Ооо, пардон, не заметил сообщения, со времен моей регистрации на этом форуме это первое личное сообщение =). будем смотреть.
     
  10. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    bkm, по-моему, ты правильно сделал. Скрипт узнает referrer и запрашивает картинку с добавлением GET параметров.
    Можешь файлу дать расширение не php, а gif, например. В htaccess
    Код (Text):
    1. AddType application/x-httpd-php .gif
    , а watch.gif будет обычным php файлом, который и будет забивать БД статистикой.
     
  11. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да ничего не надо менять. можно делать запрос не к гифке а к пыху - никто не мешает отображать картинки полученные с адреса с расширением пхп. просто потому что браузеру все равно на расширение. можно реврайт написать с перехватом гифа на пхп. но и этого не надо. на запрос просто надо ответить 204 и закрыть соединение.
     
  12. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    это для эстетики, запрашивается картинка, возвращается тоже красивая картинка
     
  13. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    зачем вообще что-то возвращать? это же не информатор а тупо коллектор статистики
     
  14. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Чтобы показать всему миру свой крутой баннер и плюнуть Гууглу|Яндексу в лицо. Ведь своя система статистики - это круто (как и своя CMS, например).
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты не прав. =) яша с гуглом дают статистику поверхностную.
     
  16. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Ну вы на сервере делаете?
    Или на защищенный протокол другого сервера пытаетесь передать?
     
  17. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    убей себя об стену.

    Your, с сервера подгружаю скрипт, который получает некоторые данные и подгружает "картинку". т.к. скрипт выполняется на клиенте (сайт на который скрипт подгружается), то передать данные на сервер посредством js не получается.
    вариант с картинкой и src вполне подходит, уже заканчиваю админку, скоро мое любимое занятие - тест - исправление - тест - исправление - тест - исправление и т.д.
     
  18. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    И что это значит?

    .. ок, удалил, не скромно.
     
  19. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    хватит понтаваться, я пишу потому что хочу писать, вот и все. Ваши замечания ...
    ... неуместны.
     
  20. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    - это было тебе.
    А "замечания" - это не замечания, по другому поводу написаны, но всё равно в ответ получил
    Спасибо.
     
  21. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    подгружаю файл script.js внутри него код php, в дебагере ошибка - выводит все содержимое файла начиная с <?php

    SyntaxError: Unexpected token <

    файл .htaccess

    Код (Text):
    1. AddType application/x-httpd-php .js
    2. AddHandler x-httpd-php5 .js
    3.  
    4. <FilesMatch "\.(js|php)$">
    5. SetHandler application/x-httpd-php
    6. </FilesMatch>
    в чем может быть проблема?
     
  22. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Разобрался?
    Если в конфиге Апача в настройках директории стоит AllowOverride None, то .htaccess не обрабатывается.
     
  23. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    Проблема была в хостинге. Вот ответ техподдержки
    надо переезжать хотя бы на vds.
    Я бы мог отправлять данные пхп скриптом (curl), но это надо лезть в движок, а тут код вставил и собирай статистику. Ну и вообще для опыта было интересно.
     
  24. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Сначала я так и подумал, что хостинг. Но промолчал.
    И не совсем понял задачу.
    Что отправляете, куда и что в итоге должно получиться.
    Ну раз разобрались значит уже не важно.