Учёт количества нажатий по ссылкам через редирект
Продолжаем тему собирания инфы о ваших юзерах.
Я буду писать редирект а не перенаправление. Так принято в интернете.
Казалось-бы всё просто. Мы просто делаем так-же как и при учёте количества просмотров картинок.
Оффтоп:
Кстати я реализовал эту тему. Если кому интересно, то она находится здесь.
Продолжим.
На самом деле это не так.
Объясню. Если делать также как и в этой статье выше, то вы сможете вести только суммарный учёт кликов по ссылкам.
Узнать на какую именно ссылку нажали вы не сможете, в случае, если на странице больше одной ссылки через редирект.
Либо же вам придётся дописывать параметры к ссылке, которые сделают её уникальной: например типа link.php?id=какоето_число.
Проблема в том, что мы хотим автомата, и мы очень ленивые.
Чтобы правильно учесть количество нажатий по ссылкам на автомате, нужно учитывать:
- То, куда ведёт эта ссылка, то-есть адрес ссылки. С этим в принципе проблем нету.
- Адрес страницы на которой находится ссылка. Это нужно, так как вы можете ссылаться на один и тот-же адрес в разных статьях. Вот тут огромная проблема.
Это можно сделать через реферер, но его можно подменить — поэтому такой вариант отпадает.
К тому-же многие не передают реферер. Ну например я.
Выбор автоматически падает на джаваскрипт.
Хорошо допустим это будет по событию onclick.
И тут новая проблема:Джаваскрипт то на стороне юзера, а это значит его легко изменить.
С сессиями тоже облом.
Вот вырезка из статьи:
session.use_cookies - если равно 1, то PHP передает идентификатор в куках, если 0 - то нет. session.use_trans_sid если равно 1, то PHP передает его, добавляя к URL и формам, если 0 - то нет. Менять эти и другие параметры сессий можно так же, как и другие настройки PHP - в файле php.ini, а так же с помощью команды ini_set() или в файлах настройки веб-сервера Если включена только первая, то при старте сессии (при каждом вызове session_start()) клиенту устанавливается кука. Браузер исправно при каждом следующем запросе эту куку возвращает и PHP имеет идентификатор сессии. Проблемы начинаются, если браузер куки не возвращает. В этом случае, не получая куки с идентификатором, PHP будет все время стартовать новую сессию, и механизм работать не будет. Если включена только вторая, то кука не выставляется. А происходит то, ради чего, в основном, собственно, и стоит использовать встроенный механизм сессий. После того, как скрипт выполняет свою работу, и страница полностью сформирована, PHP просматривает ее всю и дописывает к каждой ссылке и к каждой форме передачу идентификатора сессии. Это выглядит примерно так: <a href="/index.php">Index</a> превращается в <a href="/index.php?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f">Index</a> а к формам добавляется скрытое поле <input type="hidden" name="PHPSESSID" value="00196c1c1a02e4c37ac04f921f4a5eec" /> И браузер при клике на любую ссылку, или при нажатии на кнопку в форме, пошлет в запросе нужную нам переменную - идентификатор сессии!
Как видите слишком много обстоятельств чтобы не передать сессию.
Вывод:
Наша задумка с автоматом невозможна, вернее возможна, но она будет дырявой и юзерозависимой.
Используйте способ типа link.php?id=какоето_число.