【问题标题】:Get REFERRER in laravel在 laravel 中获取 REFERRER
【发布时间】:2019-04-27 05:55:37
【问题描述】:

我是 laravel 的新手,所以请不要打败我 :-)

我尝试以这种方式在控制器中获取引荐来源网址

$from=Request::server('HTTP_REFERER');

结果,我得到了这个错误

不应静态调用非静态方法 Illuminate\Http\Request::server(),假设 $this 来自不兼容的上下文

控制器的顶部是

namespace Common\Auth\Controllers;

use Auth;
use Illuminate\Http\Request;
use Common\Settings\Settings;
use Common\Core\Controller;
use Common\Core\BootstrapData;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Common\Auth\User;

希望有人能告诉我如何让推荐人给我一些关于这方面的教训。

非常感谢。

更新。

与此同时,我已将“function name(Request $request)”添加到我的函数中 并在函数“$this->request = $request;”

现在我可以使用“$this->request->ip();”访问一些信息。

如果我尝试回显“$this->request->header('HTTP_REFERRER')”,什么都不会显示?

【问题讨论】:

  • 请记住,官方 HTTP_REFERRER 标头拼写错误为 HTTP_REFERER(请注意它没有双 R)。

标签: php laravel


【解决方案1】:

您可以从请求的标头中获取referer:

$uri = $request->header('referer');

其中$request是默认注入的Illuminate\Http\Request

Read more on the headers of the request

【讨论】:

    【解决方案2】:

    查看UrlGenerator@previous 中的 URL::previous() 句柄 显示使用 $this->request->headers->get('referer'); 访问引荐来源网址

    【讨论】:

      【解决方案3】:

      请更改:

      use Illuminate\Http\Request;
      
      

      与:

      use Request;
      

      【讨论】:

        【解决方案4】:

        要获取上一个请求的完整 URL,请使用 Laravel 辅助函数

        url()->previous();
        

        您也可以通过 URL 外观访问它

        URL::previous();
        

        如果您使用的是 URL 外观,请务必解析导入。

        use Illuminate\Support\Facades\URL;
        

        Laravel doc

        【讨论】:

          【解决方案5】:
          // with request helper function from anywhere in your application
          $from = request()->getSchemeAndHttpHost();
          
          // with request method. this return http:// part too
          $from = $request->getHttpHost();
          

          来源:https://stackoverflow.com/a/39835651/10482374

          【讨论】:

            【解决方案6】:

            您也可以改用$_SERVER['HTTP_REFERER'] 直接从 PHP 获取引用。

            【讨论】:

              【解决方案7】:

              我不知道为什么 laravel 请求门面不能像上面那样工作,但是你可以得到这样的标题

              function example(Request $request) {
                  dd($request->header('HTTP_REFERRER'));
              }
              

              确保您的方法从路由访问

              【讨论】:

              • “确保你的方法是从路由访问的”对不起,你的意思是什么?
              • like on web.php Route::get('/example', 'class@example');
              猜你喜欢
              • 2020-07-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-10-19
              • 2023-02-08
              • 1970-01-01
              相关资源
              最近更新 更多