Я пытаюсь получить Referer моих пользователей. Например, если они происходят из facebook, youtube, google или чего-то еще.
Теперь я пробовал что-то вроде этого:
$referrer = $this->request->headers->get('referer'); $url = $referrer ? $this->to($referrer) : $this->getPreviousUrlFromSession(); return $url ?: $this->to('/'); // returns: Method referer does not exist.
Эта:
return $_SERVER["HTTP_REFERER"] // returns Undefined index: HTTP_REFERER
что:
session_start(); if ( !isset( $_SESSION["origURL"] ) ) $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"]; // returns Undefined index: HTTP_REFERER
Но ничего не получилось, как ожидалось.
Кто-нибудь знает, как я могу проверить референта?
Мне нужно это, потому что я хочу проверить, исходит ли пользователь от определенных URL-адресов, и если да, я хочу дать пользователю дополнительные «клики» для ранжирования. Что-то вроде небольшой партнерской системы.
Похоже, что это сделает то, что вы ищете:
Request::server('HTTP_REFERER').
Вы можете прочитать Api DOC здесь:
http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_server
Причина, по которой вы получаете Undefined index: HTTP_REFERER
состоит в том, что не все запросы имеют заголовок HTTP_REFERER
, а только большинство запросов, поступающих с других веб-сайтов. Если вы посещаете сайт напрямую с URL-адресом, вы не будете отправлять заголовок HTTP_REFERER
.
Итак, вы должны проверить, установлен ли заголовок первым.
if (!isset($_SESSION["origURL"]) && array_key_exists('HTTP_REFERER', $_SERVER)) $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];