static private function getHost($url) {
// Return host given URL; NULL if host is
// not found.
return parse_url($url, PHP_URL_HOST);
}
static public function recordClick(Link $link, Request $request) {
/**
* Given a Link model instance and Request object, process post click operations.
* @param Link model instance $link
* @return boolean
*/
$ip = $request->server('HTTP_X_FORWARDED_FOR');
$referer = $request->server('HTTP_REFERER');
$click = new Click;
$click->link_id = $link->id;
$click->ip = $ip;
$click->country = self::getCountry($ip);
$click->referer = $referer;
$click->referer_host = ClickHelper::getHost($referer);
$click->user_agent = $request->server('HTTP_USER_AGENT');
$click->save();
return true;
}
I am not getting my Click Location in map and rest is working like a charm.
I am using php-fpm-7.0, Cloudlfare and Nginx web server. As I found out that Nginx hides native origin source IP. So I followed below links:
https://support.cloudflare.com/hc/en-us/articles/200170706-How-do-I-restore-original-visitor-IP-with-Nginx-)
https://github.com/cydrobolt/polr/issues/491
I have modified /app/Helpers/ClickHelper.php file as suggested by above links
`<?php namespace App\Helpers; use App\Models\Click; use App\Models\Link; use Illuminate\Http\Request;
class` ClickHelper { static private function getCountry($ip) { $country_iso = geoip()->getLocation($ip)->iso_code; return $country_iso; }
}`
please help me to resolve this issue. Thanks:)