Giter VIP home page Giter VIP logo

yii2-ipinfo's Introduction

Krajee Logo
yii2-ipinfo
Donate

Stable Version Unstable Version License Total Downloads Monthly Downloads Daily Downloads

An IP address information display widget for Yii framework 2.0 with ability to display country flag and geo position info. This is based on the HTTP API from ip-api.com to parse IP address details. The plugin also uses the yii2-popover-x extension by Krajee and the yii2-httpclient yiisoft extension for fetching and displaying IP details via a popover, and the yii2-icons extension by Krajee for displaying the flag icons.

Features

  • Ability to display the flag for a IP address.
  • Implement Yii2 HTTP Client to process IP API info fetch. The 1.0 AJAX based API query will be eliminated and replaced with the Yii2 server based HTTP Client. This will ensure it works both for HTTPS and HTTP and also use yii2 caching.
  • Implement Yii2 Cache component to cache/store IP data. If Cache component is not defined no caching will be performed.
  • Implement Yii2 DetailView widget to render the IP Information Details table. The layout of attributes and formats can therefore be customized as per user need.
  • Ability to display geo position details for the IP address.
  • Ability to use your own API if needed
  • Ability to render IP details inline instead of popover.
  • Ability to configure fields rendered and also control the layout with templates.
  • Use yii2-popover-x extension features to control popover placements and styles.
  • Use flag icons from yii2-icons to render country wise high resolution flags of any size.
  • Uses Yii i18N translations to generate locale specific data.

Note: Check the composer.json for this extension's requirements and dependencies. Read this web tip /wiki on setting the minimum-stability settings for your application's composer.json.

Demo

You can see detailed documentation and examples on usage of the extension.

Installation

The preferred way to install this extension is through composer.

Note: Check the composer.json for this extension's requirements and dependencies. Read this web tip /wiki on setting the minimum-stability settings for your application's composer.json.

Either run

$ php composer.phar require kartik-v/yii2-ipinfo "@dev"

or add

"kartik-v/yii2-ipinfo": "@dev"

to the require section of your composer.json file.

Usage

IpInfo

use kartik\ipinfo\IpInfo;

echo IpInfo::widget([
    'ip' => '12.23.155.123',
    /**
     * optionally setup more options
     * refer docs for all options
     */
    // 'showFlag' => true,
    // 'showPopover' => true,
    // 'popoverOptions' => [],
    // 'flagWrapperOptions' => []
    // 'flagOptions' => []
]);

License

yii2-ipinfo is released under the BSD-3-Clause License. See the bundled LICENSE.md for details.

yii2-ipinfo's People

Contributors

edofre avatar gugoan avatar kartik-v avatar ricardomm85 avatar werewolf8904 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

yii2-ipinfo's Issues

Proplem on Yii2 (php7.2)

Hello

I'm trying to use next code

echo IpInfo::widget([
                                        'ip' => $model->last_ip,
                                        'template' => '{flag} {country_code} ({city} {region_name} {country_name} {zip_code})',
                                        'access_key'=>'tralala',
                                        'popoverOptions' => [
                                            'placement' => PopoverX::ALIGN_BOTTOM_LEFT,
                                            'size' => PopoverX::SIZE_MEDIUM
                                        ]
                                    ]);

And have error in /home/rodman/Development/smpp-gateway/vendor/kartik-v/yii2-ipinfo/src/IpInfo.php
https://prnt.sc/l7moax

what version of php i can use it?

Implement ability to skip access key if NOT needed

New boolean property IpInfo::needsAccessKey will control whether access key will be utilized and parsed by the api.

/**
 * @var bool whether access key is required. You can set this to `false` if using 
 * your own [[api]] endpoint.
 */
public $needsAccessKey = true;

Implement client level caching for optimal performance

Use client local storage (HTML5) to cache already parsed ip addresses by the api. One can use their custom db and a custom api to parse and send IP info.

Following properties will be implemented in IpInfo

/**
 * @var bool whether to cache ip information in local client storage for the session. 
 * This will optimize and reduce server api calls for ip addresses already parsed in 
 * the past.
 */
public $cache = true;

/**
 * @var int the cache timeout in milli seconds when the client cache will expire.
 */
public $cacheTimeout = 30000;

How to get array of values using this ?

Prerequisites

  • I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
  • The issue still exists against the latest master branch of yii2-ipinfo.
  • This is not an usage question. I confirm having gone through and read the documentation and demos.
  • This is not a general programming / coding question. (Those should be directed to the webtips Q & A forum).
  • I have attempted to find the simplest possible steps to reproduce the issue.
  • I have included a failing test as a pull request (Optional).

Steps to reproduce the issue

Expected behavior and actual behavior

When I follow those steps, I see...

I was expecting...

Environment

Browsers

  • Google Chrome
  • Mozilla Firefox
  • Internet Explorer
  • Safari

Operating System

  • Windows
  • Mac OS X
  • Linux
  • Mobile

Libraries

  • jQuery version:
  • yii2-ipinfo version:

Isolating the problem

  • This bug happens on the demos page
  • The bug happens consistently across all tested browsers
  • This bug happens when using yii2-ipinfo without other plugins.

Getting Mixed Content protocol error when loading from https while the freegeoip loading from http.

Could we make the request via "//freegeoip.net*"?

Mixed Content: The page at 'https://example.com' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://freegeoip.net/json/107.77.203.47'. This request has been blocked; the content must be served over HTTPS. send @ all-015600bac8ac71a8cb7c9e05a05b3501.js:561 all-015600bac8ac71a8cb7c9e05a05b3501.js:561 XMLHttpRequest cannot load http://freegeoip.net/json/107.77.203.47. Failed to start loading.

Enhanced Release Version 2.0

BC Breaking Updates for v2.0 vs v1.0

  • Replace to use Free API from http://ip-api.com (free for non commercial use)
  • Eliminates use of API access key
  • One can however reconfigure the widget to use any other IP API source
  • Validate automatically Bootstrap 3.x or Bootstrap 4.x format using Krajee Bootstrap settings and render the relevant icons
  • Implement Yii2 HTTP Client to process IP API info fetch. The 1.0 AJAX based API query will be eliminated and replaced with the Yii2 server based HTTP Client. This will ensure it works both for HTTPS and HTTP and also use yii2 caching.
  • Implement Yii2 Cache component to cache/store IP data. If Cache component is not defined no caching will be performed.
  • Implement Yii2 DetailView widget to render the IP Information Details table. The layout of attributes and formats can therefore be customized as per user need
  • Implements IpInfoModel to manage the IP information attributes. In case you wish to use a different IP Info API - then you can extend this class to have your own attributes.
  • Various properties have been eliminated and replaced. The new version now includes these properties:
    • api
    • ip
    • modelClass
    • detailViewClass
    • detailViewConfig
    • detailRowOptions
    • params
    • requestConfig
    • cache
    • flushCache
    • template
    • showFlag
    • hideEmpty
    • showPopover
    • errorData
    • errorDataOptions
    • fields
    • skipFields
    • popoverOptions
    • flagWrapperOptions
    • flagOptions
    • contentHeader
    • errorIcon
    • contentHeaderIcon
    • noFlagIcon
    • errorIcon
    • options

Enhance extension to use AJAX based jQuery plugin to refresh IP info

  • New jQuery plugin kvIpInfo created to allow refreshing IP info asynchronously via AJAX
  • CSS Styling enhancements.
  • Enhancements with various new options (e.g. loadingOptions) and revamp code.
  • Remove showJson property and feature - as it can directly be derived by calling the API.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.