Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определить откуда пришел пользователь, HTTP_REFERER не помогает 
:(
    Опции темы
slutsker
Дата 3.12.2012, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 24.5.2007

Репутация: нет
Всего: нет



Добрый день,
есть такая ситуация 
в шаблон UMI добавлена ссылка на внешний php скрипт
в виде
Код

%system getOuterContent(http://site.ru/script.php)%

в этом скрипте нужно узнать - откуда пришёл пользователь
то есть получить referer

в скрит добавил 
Код

print_r($_SERVER); print_r($GLOBAL);

перехожу с другого сайта, но ничего про referer нет
быть может дело в то, что скрипт подгружается из шаблона
как быть?
--------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
PM MAIL   Вверх
Arantir
Дата 3.12.2012, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



referer - это заголовок, отправляемый браузером. Если вы открываете ссылку сервером, то там никакого referer и не будет, если сервер сам его не пошлет в заголовке запроса.

Добавлено через 5 минут и 17 секунд
Вечно все решают тривиальные задачи нетривиальными методами.

Почему бы просто не сделать ссылку вида 
Код

"http://site.ru/script.php?ref=".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
и в скрипте script.php брать из $_GET['ref'] адрес, с которого поступил запрос?

Это сообщение отредактировал(а) Arantir - 3.12.2012, 11:18


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
slutsker
Дата 3.12.2012, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 24.5.2007

Репутация: нет
Всего: нет



есть другие сайты, на которых уже стоят ссылки, и нужно менять содержимое нашего сайта при переходе с определенных сайтов
как это сделать?
--------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
PM MAIL   Вверх
Arantir
Дата 3.12.2012, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



slutsker, а по IP не катит?


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
slutsker
Дата 3.12.2012, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 24.5.2007

Репутация: нет
Всего: нет



я хочу отслеживать переходы с директа, адвордса, поиска яндекса, поиска гугла, дургих поисковиков, внешних сайтов
по ip не подходит

кстати, если переходить напрямую на script.php - реферер виден
а вот если script вызывается из шаблона - он уже ничего не видит


Это сообщение отредактировал(а) slutsker - 3.12.2012, 12:04
--------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
PM MAIL   Вверх
Arantir
Дата 3.12.2012, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Объясняю еще раз:
При открытии скрипта из шаблона вы открываете его сервером. А ваш скрипт шаблона на вашем сервере не передает заголовок реферера при открытии этого скрипта. Так как в этом случае реферера как такового быть и не может! 

Надо было обо всем этом думать до того, как проделывать все это на "других сайтах". Теперь вам как минимум надо на каждом из этих сайтов менять способ открытия этой ссылки. Или вписать реферера как get-параметр, или передавать реферера в заголовке при запросе.

Нельзя вот так вот взять и на одном сервере узнать данные другого сервера.

Это сообщение отредактировал(а) Arantir - 3.12.2012, 12:18


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
slutsker
Дата 3.12.2012, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 24.5.2007

Репутация: нет
Всего: нет



"Нельзя вот так вот взять и на одном сервере узнать данные другого сервера." - это не так

если на другом сайте стоит ссылка прямо на script.php - я вижу откуда пришёл человек
--------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
PM MAIL   Вверх
Arantir
Дата 3.12.2012, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Цитата

"Нельзя вот так вот взять и на одном сервере узнать данные другого сервера." - это не так
Это так.

О боже... Что же все так трудно объяснить-то.

Если на сайте стоит прямая ссылка, то реферер отправляется браузером. И это не является данными сервера. Являтся данными сервера оно начинает после того, как сервер принимает этот запрос. Тогда реферер - это переменная внутри одной из множества сессий в оперативной памяти сервера.
А вы хотите открыть ссылку одним сервером и при этом на другом сервере непонятным образом получить доступ к переменной внутри какой-то сессии первого сервера.

Это как будто бы вы зашли на сайт, а он начинает у вас с компьютера сливать ваши файлы. Если вы сами не предоставите сайту файл, он его никак по другому не получит.
Точно так же, если вы при запросе с одного сервера на другой не передадите какую-то закрытую (например, глобальные еременные) информацию другому серверу, то он ее никак узнать не сможет.

Поймите, пожалуйста, наконец-то, что открыть ссылку браузером и открыть ее сервером - это не одно и то же.

Это сообщение отредактировал(а) Arantir - 3.12.2012, 12:46


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
slutsker
Дата 3.12.2012, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 24.5.2007

Репутация: нет
Всего: нет



хорошо,
я согласен получить рефера и из браузера
это можно сделать из подключаемого php-скрипта? средствами JS?

--------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
PM MAIL   Вверх
Arantir
Дата 3.12.2012, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



slutsker, вы не можете получить реферера из браузера тем сервером, на который браузер не делал прямого запроса. Браузер открывает example.com, а вы сервером example.com открываете некий site.com. Так вот на site.com вы ничего не узнаете из браузера посетителя сайта example.com.

Вам нужно из example.com не просто открыть скрипт с site.com, а явно передать ему в запросе данные (реферера).

Можно и через JS. Делаете с другого сайта post-запрос (с указанием реферера в одном из параметров) на свой скрипт и потом сможете из $_POST его получить.
Можно открывать так же, как сейчас, но дописать реферера в get-запрос ("example.com/script.php?ref=".$_SERVER['REFERER']).
Можно сделать запрос без передачи get и post, но с пользовательским заголовком, ("X-Original-Referer: ".$_SERVER['REFERER']).

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

Есть целая куча способов. От картинки до записи в БД. Но во всех случаях потребуется изменить ваш текущий метод на всех сайтах.

Это сообщение отредактировал(а) Arantir - 3.12.2012, 19:44


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
slutsker
Дата 4.12.2012, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 24.5.2007

Репутация: нет
Всего: нет



спасибо за совет
а как яндекс.метрика узнаёт, откуда пользователь пришел на сайт?
--------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
PM MAIL   Вверх
Arantir
Дата 4.12.2012, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



slutsker, очень просто - отправляет себе значение поля document.referer из javascripts с помощью javascripts.
Еще один способ к той куче, о которой я говорил. Но опять же, реферер отправляется принудительно, а не сам по себе.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.