我试着得到我的用户的推荐人。比如他们来自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
}
但一切都不像预期的那样。
有人知道如何检查推荐人的解决方案吗?
我需要,因为我想检查用户是否来自一些特定的网址,如果是这样,我想给予用户一些额外的“点击”排名上升。
8条答案
按热度按时间iszxjhcz1#
这似乎可以满足您的需求:
您可以在此处阅读Api DOC:
https://laravel.com/api/8.x/Illuminate/Http/Request.html#method_server
hgqdbh6s2#
Laravel获得裁判的方式:
vfhzx4xs3#
您可以使用
request()
辅助对象:或
Request
外观:093gszye4#
你得到
Undefined index: HTTP_REFERER
的原因是因为不是所有的请求都有HTTP_REFERER
头,只有大多数来自其他网站的请求才有HTTP_REFERER
头。如果你直接用url访问一个网站,你就不会发送HTTP_REFERER
头。因此,您应该先检查是否设置了标头。
3zwtqj6y5#
我们可以使用url()帮助器
如果你想回到初始化请求的页面,我们只需要写这个(通常在控制器中):
lrl1mhuk6#
我希望这条消息能让你对你的代码感到满意。但是,如果你遇到了任何关于引用URL的问题,你可能应该阅读这篇文章https://scotthelme.co.uk/a-new-security-header-referrer-policy/。
我一直在我的Laravel + NGINX应用程序中面临引用URL的问题,并尝试了所有可能的方法来修复,通过上面的评论中提到的代码(回,前,头等),但最终发现这篇文章丰富了我的知识,然后才适当地修复我的问题。
46scxncf7#
由客户端在HTTP请求的报头中发送引用者信息。
因此,如果客户端(浏览器,应用程序等)不发送引用,它将无法在请求头中提供给服务器。我猜WhatsApp应用程序已经禁用了发送引用,所以没有办法获得它。
在一些浏览器中,可以在设置中或通过扩展关闭发送引用者信息。例如,它也很容易被
curl
欺骗,所以它不能作为一种安全措施。更多信息在我的答案在这里:https://stackoverflow.com/questions/49050268/does-document-referrer-equal-the-http-referer-header/49050494
如果您不确定客户端是否发送了referrer,可以使用JavaScript进行检查(这里的referrer与HTTP头的拼写不同,增加了混淆):
wyyhbhjk8#