web-dev-qa-db-fra.com

Laravel 5.4 get Referer

J'essaie d'obtenir le référent de mes utilisateurs. Comme s'ils viennent de Facebook, YouTube, Google ou autre chose.

Maintenant, j'ai essayé quelque chose comme ça:

        $referrer = $this->request->headers->get('referer');
        $url = $referrer ? $this->to($referrer) : $this->getPreviousUrlFromSession();
        return $url ?: $this->to('/'); // returns: Method referer does not exist.

Cette:

        return $_SERVER["HTTP_REFERER"] // returns Undefined index: HTTP_REFERER

cette:

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"]; // returns Undefined index: HTTP_REFERER

Mais rien n'a fonctionné comme prévu.

Est-ce que quelqu'un connaît une solution pour vérifier le référent?

J'en ai besoin parce que je veux vérifier si l'utilisateur provient de certaines URL spécifiques et si oui, je veux donner à l'utilisateur quelques "clics" supplémentaires pour se classer. Quelque chose comme un petit système d'affiliation.

10
PHPprogrammer42

Il semble que cela fera ce que vous recherchez:

Request::server('HTTP_REFERER').

Vous pouvez lire l'API DOC ici:

http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_server

19
WebFreak

La raison pour laquelle vous obtenez Undefined index: HTTP_REFERER est parce que toutes les demandes n'ont pas de HTTP_REFERER en-tête, uniquement la plupart des demandes provenant d'autres sites Web. Si vous visitez un site Web directement avec l'URL, vous n'enverrez pas de HTTP_REFERER entête.

Vous devez donc vérifier si l'en-tête est défini en premier.

if (!isset($_SESSION["origURL"]) && array_key_exists('HTTP_REFERER', $_SERVER))
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
2
Jerodev