amir-hossein5/laravel-ip-logger

v1.2.1 2022-06-19 18:25 UTC

This package is auto-updated.

Last update: 2024-09-23 18:31:52 UTC


README

混合获取IP详情并保存。

先决条件

  • Laravel ^8.0|^9.0
  • PHP 8
  • guzzlehttp/guzzle: ^6.3.1|^7.0.1

安装

composer require amir-hossein5/laravel-ip-logger

和发布配置文件

php artisan vendor:publish --tag ipLogger

用法

仅获取详情

use AmirHossein5\LaravelIpLogger\Facades\IpLogger;

IpLogger::getDetails();

处理详情的方法

例如

use AmirHossein5\LaravelIpLogger\Facades\IpLogger;

IpLogger::prepare(function ($details) {
  return $details + ['test' => 'test'];
})->getDetails();

保存到数据库

use AmirHossein5\LaravelIpLogger\Facades\IpLogger;

IpLogger::model(ModelName::class)
  ->updateOrCreate(
    fn ($details) => [
      'ip'        => $details['query']
    ],
    fn ($details) => [
      'continent' =>  $details['continent'],
      'country'   =>  $details['country'],
      ...
    ],
);

保存有两种方法,createupdateOrCreate,与Laravel类似。

手动获取详情

默认已编写两个API获取IP详情,ip_apivpn_api。可以在配置文件中设置。

或者如果你想使用其他API手动获取详情。

use \AmirHossein5\LaravelIpLogger\Facades\IpLogger;

IpLogger::detailsBe(function () {
  return [ ... ];
})->updateOrCreate(...);

异常处理

当保存到数据库(例如,create,updateOrCreate)时发生的异常可以通过以下方式处理

获取最后一个发生的异常

use AmirHossein5\LaravelIpLogger\Facades\IpLogger;

IpLogger::getLastException();

直接捕获异常

use AmirHossein5\LaravelIpLogger\Facades\IpLogger;

IpLogger::catch(function ($exception) {
  // send mail ...
})...;

你应该将此作为第一种方法使用。

使用这种方式时不会分发任何事件。

监听异常

/**
 * The event listener mappings for the application.
 *
 * @var array
 */
protected $listen = [
  AmirHossein5\LaravelIpLogger\Events\Failed::class => [
    IpLoggerFailed::class,
  ]
];

许可证

许可证