如何在Laravel 5.1中获取访问者的IP地址?

3
我正在尝试获取网站访问者的IP地址,并希望将其存储在表中。 这是我的代码来存储数据。
public function store(Request $request)
{
    $secretcode=str_random(10);
    while(1)
    {
        $txnid=substr(hash('sha256', mt_rand() . microtime()), 0, 20);
        $txnstatus=Ticket::where('transactionid',$txnid)->get();
        if($txnstatus->isEmpty())
            break;


    }
    $request['ipaddress']=$request->ip();
    $request['transactionid']=$txnid;
    $request['secretcode']=$secretcode;


     $input=$request->all();
     Ticket::create($input);
     return view('payment');
}

我正在使用这行代码来获取IP地址

 $request['ipaddress']=$request->ip();

当此代码向数据库表插入数据时,显示如下: enter image description here 请有人帮我完成这项工作。我也使用了Request::ip(),但它也没有起作用。
重要的是,我在具有活动互联网连接的本地主机环境中工作。

Request::ip(); 应该可以工作。请参考这个答案,了解 Request::ip(); 内部的工作原理。 - camelCase
是的,首先我参考了那篇文章并尝试使用Request::IP(),但它会给出错误消息,指出不能静态使用。 - dollar
1个回答

3

您的代码运行正常。$request->ip()应该可以正常工作,我已尝试确认您的代码正确无误。::1如果在本地环境下运行,则此结果是正常的。请尝试在托管服务器上运行以查看您的实际IP地址。


是的,你说得对。这个 ::1 只是因为我在本地工作时看到的,当它被托管到服务器上时,它可以正常工作。谢谢。 - dollar
仅作澄清:::1 是一个 IPv6 地址,这就是为什么它的格式与通常的 IP 地址不同。::1 等同于 127.0.0.1,即 localhost - Tim Visée

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接