第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Laravel - 獲取網(wǎng)站唯一訪客數(shù)量

Laravel - 獲取網(wǎng)站唯一訪客數(shù)量

PHP
搖曳的薔薇 2022-08-19 15:22:57
我想收集我網(wǎng)站上唯一數(shù)量的訪問(wèn)者并將其存儲(chǔ)在數(shù)據(jù)庫(kù)中。即使沒(méi)有帳戶的人訪問(wèn)該網(wǎng)站,訪問(wèn)者數(shù)量也會(huì)增加。我該如何做到這一點(diǎn)?我知道我必須獲取用戶的IP地址或類似的東西,但我不知道如何在頁(yè)面加載時(shí)獲取沒(méi)有帳戶的用戶的IP地址目前我有這個(gè)數(shù)據(jù)庫(kù)表Visitors - ip - date_visited路線Route::get('/', function () {    $ip = Request::ip();    return view('welcome', compact('ip'));});
查看完整描述

4 回答

?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

嘗試使用以獲取ip;Request::ip()


$ip = Request::ip();

對(duì)于拉拉維爾 5.4 +:


$ip = $request->ip();

// or

$ip = request()->ip();

我認(rèn)為你可以使用中間件和redis來(lái)計(jì)算這個(gè)計(jì)數(shù),這將減輕數(shù)據(jù)庫(kù)的壓力。


查看完整回答
反對(duì) 回復(fù) 2022-08-19
?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

在這種情況下,一個(gè)好的解決方案是創(chuàng)建一個(gè)跟蹤所有用戶的。我們可以將任何類型的業(yè)務(wù)邏輯放在 .middlewaremiddleware


<?php


namespace App\Http\Middleware;


use Closure;


class TrackUser

{

    public function handle($request, Closure $next)

    {

        /* You can store your user data with model, db or whatever...

           Here I use a repository that contains all my model queries. */

        $repository = resolve('App\Repositories\TrackUserRepository');


        $repository->addUser([

            'ip'   => request()->ip(),

            'date' => now(),

        ]);


        return $next($request);

    }

}

然后添加到 :middlewareApp\Kernel.php

  • 如果您希望它是在每個(gè)請(qǐng)求上運(yùn)行的全局中間件,請(qǐng)將其添加到。$middleware

  • 如果您希望它僅在每個(gè) -route 上運(yùn)行,請(qǐng)將其添加到。$middlewareGroupsweb

  • 如果要指定何時(shí)應(yīng)用中間件,請(qǐng)將其添加到。$routeMiddlewareroutes/web.php

您還應(yīng)該考慮在“ ”-語(yǔ)句中移動(dòng)任何邏輯,這樣可以最大程度地降低用戶因“跟蹤”代碼引起的任何錯(cuò)誤而停止的風(fēng)險(xiǎn)。middlewaretrycatch

try {

    $repository = resolve('App\Repositories\TrackUserRepository');


    $repository->addUser([

        'ip'   => request()->ip(),

        'date' => now(),

    ]);

} catch (\Exception $e) {

    // Do nothing or maybe log error

}


return $next($request);


查看完整回答
反對(duì) 回復(fù) 2022-08-19
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

最好使用組合并有更準(zhǔn)確的結(jié)果,許多用戶可能具有相同的IP,但通常具有不同的用戶代理:user_agentip


request()->userAgent();

request()->ip();

或者,如果您使用的是中間件(不是),Laravel 會(huì)為每個(gè)客戶端啟動(dòng)一個(gè)會(huì)話。您可以更改會(huì)話驅(qū)動(dòng)程序,并使用 代替默認(rèn)的 .webapidatabasefile


通過(guò)這種方式,Laravel將在表格中為每個(gè)客戶存儲(chǔ)一條記錄,其中包含您需要的所有信息,甚至更多:sessions


Schema::create('sessions', function ($table) {

    $table->string('id')->unique();

    $table->unsignedInteger('user_id')->nullable();

    $table->string('ip_address', 45)->nullable();

    $table->text('user_agent')->nullable();

    $table->text('payload');

    $table->integer('last_activity');

});

如您所見(jiàn),有 、 和 。將用于來(lái)賓用戶,并且對(duì)經(jīng)過(guò)身份驗(yàn)證的用戶具有價(jià)值。ip_addressuser_agentlast_activityuser_idnull


請(qǐng)參閱 Laravel 文檔以將會(huì)話驅(qū)動(dòng)程序配置為使用 。database


查看完整回答
反對(duì) 回復(fù) 2022-08-19
?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

您將如何獲得IP地址。

為 IP 地址及其訪問(wèn)時(shí)間戳創(chuàng)建一個(gè)新表。

檢查IP是否不存在或(1天),將IP的時(shí)間戳編輯為time()(表示現(xiàn)在)并增加您的視圖,其他人什么都不做!time()-saved_timestamp > 60*60*24

此外,您可以通過(guò)以下方式獲得IP$_SERVER['REMOTE_ADDR']

這里提到了獲取IP的更多方法。https://stackoverflow.com/a/54325153/2667307

已查看返回127.0.0.1

請(qǐng)嘗試:-

request()->server('SERVER_ADDR');

或者您可以使用

$_SERVER['SERVER_ADDR'];

$_SERVER['REMOTE_ADDR']


查看完整回答
反對(duì) 回復(fù) 2022-08-19
  • 4 回答
  • 0 關(guān)注
  • 199 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)