我正在创建带有一些自定义会员链接的会员跟踪系统。这些链接触发控制器功能,以将一些指标存储在数据库中,然后重定向到用户想要的实际页面。
我想要的功能是:将会员链接插入网页->用户点击->控制器触发/存储的数据->重定向到预期页面。我要存储的数据之一是用户单击链接的原始站点。但是因为我用URL调用控制器,所以url()-> previous()会触发我的会员链接,该链接触发了控制器,而不是嵌入了链接的原始站点。
我不确定“ previous()”是否可以接受参数,但是我尝试了“ previous(2)”,但这显然行不通。
$url = url()->previous();
$click->came_from = $url;
使用上面的代码,如果我的链接托管在www.w3schools.com上,而我的会员链接是myurl / affiliatelink / 2,我希望将“ www.w3schools.com”插入到我的数据库中,但是我m改为插入“ myurl / affiliatelink / 2”。谁能帮我解决这个问题?
答案 0 :(得分:2)
previous()
方法返回用户在应用程序中的最后一个位置,而不是浏览器访问的最后一个URL。
为此,您可以在Laravel中尝试Request::server('HTTP_REFERER')
,或者在纯PHP中尝试$_SERVER['HTTP_REFERER']
。
也就是说,请注意HTTP_REFERER
并非最可靠的值。它很容易被欺骗(伪造)或根本不提供,因此请进行相应的测试。
如果可能的话,最好的选择是将GET参数添加到远程站点中存在的链接中,这样,当您在Controller中收到请求时,便可以识别用户的来源。 / p>
答案 1 :(得分:0)
您可以简单地从刀片文件中获取并存储带有参数的前一个 url 变量 ($url),然后将该变量传递给您的锚标记,如下所示:
@php
$url= url()->previous();
@endphp
href="{{url($url)}}"
这很好用。