Как получить referrer

O2
На сайте с 12.01.2011
Offline
47
1133

Не сердитесь, в инернетах реализацию конкретно такого не нашел.

Вообщем, вариант прикрутить аналитику.гугл не рассматривается. Речь о том, как вывести список реферреров, чтоб те писались сами в одну строку в другом файле на том же сервере где и стоит сайт, посредством джаваскрипта.

Т.е. с каждым заходом на сайт будет создаваться новая строка в файле (например referrers.html) с ПОЛНЫМ УРЛОМ страницы откуда пришел посетитель.

owx
На сайте с 27.06.2009
Offline
100
owx
#1

С помощью голого Javascript нельзя реализовать запись в файл

Оптимизайка
На сайте с 11.03.2012
Offline
396
#2

В логи веб-сервера по умолчанию пишется referer. Но google его не передаст вам, а яндекс передает зашифрованный :)

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
O2
На сайте с 12.01.2011
Offline
47
#3
~AL~:
С помощью голого Javascript нельзя реализовать запись в файл

с помощью чего можно?

---------- Добавлено 27.03.2015 в 01:52 ----------

Оптимизайка:
В логи веб-сервера по умолчанию пишется referer. Но google его не передаст вам, а яндекс передает зашифрованный :)

забыл отметить, что меня не интересует информация о рефереррах передаваемых из поисковых систем, если это как-то влияет на ваш ответ

owx
На сайте с 27.06.2009
Offline
100
owx
#4
Opachki23:
с помощью чего можно?

С помощью php, например


if(isset($_SERVER['HTTP_REFERER'])) {
$file = dirname(__FILE__)."/referers.html";
$current = file_get_contents($file);
file_put_contents($file, $current.$_SERVER['HTTP_REFERER']."\r\n");
}

предварительно создав файл referers.html

Оптимизайка
На сайте с 11.03.2012
Offline
396
#5
~AL~:



if(isset($_SERVER['HTTP_REFERER'])) {
$file = dirname(__FILE__)."/referers.html";
$current = file_get_contents($file);
file_put_contents($file, $current.$_SERVER['HTTP_REFERER']."\r\n");
}


С вашего позволения 🍾


if (isset($_SERVER['HTTP_REFERER'])) {
$file = __DIR__ . '/referers.txt';
file_put_contents($file, $_SERVER['HTTP_REFERER'] . "\n", FILE_APPEND | LOCK_EX);
}

1. Почему многие пишут dirname(__FILE__) вместо __DIR__, ведь второе короче и понятнее?

2. Писать в HTML без фильтрации — нежелательно, т.к. доброжелатели могут прислать referer вида <?php evil_code(); ?> и он может зачастую выполниться внутри .html (если есть настройки соответствующие, а так бывает часто)

3. Если содержимое файла станет большим, то памяти на чтение всего файла не хватит

4. Блокировка поможет, если одновременно сайт посетит несколько человек

owx
На сайте с 27.06.2009
Offline
100
owx
#6
Оптимизайка:
С вашего позволения 🍾


if (isset($_SERVER['HTTP_REFERER'])) {
$file = __DIR__ . '/referers.txt';
file_put_contents($file, $_SERVER['HTTP_REFERER'] . "\n", FILE_APPEND | LOCK_EX);
}


1. Почему многие пишут dirname(__FILE__) вместо __DIR__, ведь второе короче и понятнее?
2. Писать в HTML без фильтрации — нежелательно, т.к. доброжелатели могут прислать referer вида <?php evil_code(); ?> и он может зачастую выполниться внутри .html (если есть настройки соответствующие, а так бывает часто)
3. Если содержимое файла станет большим, то памяти на чтение всего файла не хватит
4. Блокировка поможет, если одновременно сайт посетит несколько человек

1. dirname(__FILE__) по старой привычке, нужно переучиваться :)

2. Полностью согласен, но мы ведь рассматриваем здесь базовый пример, хотя htmlspecialchars, безусловно, добавить стоило бы.

В общем, победа, безусловно, за Вами ;)

Mad_Man
На сайте с 10.11.2008
Offline
162
#7
~AL~:
С помощью голого Javascript нельзя реализовать запись в файл

В последних версиях вебкитоподобных движков разрешено из JS инициализировать скачивание файла по данным любой строковой переменной (:

Оптимизайка:
С вашего позволения 🍾


if (isset($_SERVER['HTTP_REFERER'])) {
$file = __DIR__ . '/referers.txt';
file_put_contents($file, $_SERVER['HTTP_REFERER'] . "\n", FILE_APPEND | LOCK_EX);
}


1. Почему многие пишут dirname(__FILE__) вместо __DIR__, ведь второе короче и понятнее?
2. Писать в HTML без фильтрации — нежелательно, т.к. доброжелатели могут прислать referer вида <?php evil_code(); ?> и он может зачастую выполниться внутри .html (если есть настройки соответствующие, а так бывает часто)
3. Если содержимое файла станет большим, то памяти на чтение всего файла не хватит
4. Блокировка поможет, если одновременно сайт посетит несколько человек


if (isset($_SERVER['HTTP_REFERER'])) {
$file = __DIR__ . DIRECTORY_SEPARATOR . 'referers.txt';
file_put_contents($file, $_SERVER['HTTP_REFERER'] . PHP_EOL, FILE_APPEND | LOCK_EX);
}

... теперь банановый под все OS.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий