PHP : تشخیص مکان کاربر به وسیله IP

فروردین ۱, ۱۳۹۱ توسط : سعید

در ادامه تابعی رو خواهید دید که با ارسال IP کاربر میتوان مکان کاربر را از روی IP تشخیص داد.

این تابع یک پارامتر به عنوان IP خواهد گرفت. اگر مکان مورد نظر پیدا نشد UNKNOWN برگشت داده میشود


function detect_city($ip)
{

$default = 'UNKNOWN';

if (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost')
$ip = '8.8.8.8';

$curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';

$url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);
$ch = curl_init();

$curl_opt = array(
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT => $curlopt_useragent,
CURLOPT_URL => $url,
CURLOPT_TIMEOUT => 1,
CURLOPT_REFERER => 'http://' . $_SERVER['HTTP_HOST'],
);

curl_setopt_array($ch, $curl_opt);

$content = curl_exec($ch);

if (!is_null($curl_info))
{
$curl_info = curl_getinfo($ch);
}

curl_close($ch);

if (preg_match('{<li>City : ([^<]*)</li>}i', $content, $regs))
{
$city = $regs[1];
}
if (preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs))
{
$state = $regs[1];
}

if ($city != '' && $state != '')
{
$location = $city . ', ' . $state;
return $location;
} else
{
return $default;
}

منبع : http://www.catswhocode.com/blog/snippets/detect-location-by-ip

بازدید : ۷۲۰۲

حمید
فروردین ۲۴, ۱۳۹۱ @ ۱:۲۸ ب.ظ

سلام

من یه سوالی دارم . میشه توضیح بدین چطور میشه از کلیک های scam جلوگیری کرد ؟ من میخوام ۱ سیستم تبادل بنر ساده بسازم اما نمیدونم که چه راه هایی واسه کلاهبرداری هست و چطور میشه جلوشو گرفت ؟ مثلا اگه طرف همش از رو localhost کلیک کنه تا creadit بگیره آیا راهی هست که فیتیله پیچش کرد ؟ مرسی !

پاسخ دادن
    سعید
    اردیبهشت ۱۷, ۱۳۹۱ @ ۲:۴۵ ب.ظ

    خب ابتدا باید راههای که میشه کلاهبرداری کرد رو برای خودت لیست کنی
    بعد یکیئ یکی شروع کنی به رفع این مشکلات
    برای اینکه بدونی از چه سایتی روش کلیک شده میتونی از کد زیر استفاده کنی :

    if(isset($_SERVER['HTTP_REFERER'])) {
    echo $_SERVER['HTTP_REFERER'];
    }

    پاسخ دادن
wandad
اردیبهشت ۴, ۱۳۹۱ @ ۱۲:۰۰ ق.ظ

بسیار عالی
ممنون
تابعی هست که IP کاربر رو بگیره؟(البته باید این سوال رو استفهامی می پرسیدم با این تفاوت که اسم تابع چیه)

پاسخ دادن
    سعید
    اردیبهشت ۵, ۱۳۹۱ @ ۲:۰۱ ق.ظ

    سلام

    $ip=$_SERVER['REMOTE_ADDR'];
    پاسخ دادن
alireza
آبان ۲۵, ۱۳۹۱ @ ۴:۲۰ ب.ظ

سلام. یه سوال داشتم ، میخواستم بدونم چطور میشه از طریق IP ساعت کاربر رو نمایش داد؟

پاسخ دادن
    سعید
    آبان ۲۷, ۱۳۹۱ @ ۱:۴۳ ب.ظ

    اگر برای نمایش به خود کاربر میخواید که باید از جاوااسکریپت استفاده کنید.در غیر اینصورت میتونید هنگامی که مکان کاربر رو تشخیص دادید اختلاف زمانی رو بر حسب گرینویچ حساب کنید.

    پاسخ دادن
    سعید
    آبان ۲۷, ۱۳۹۱ @ ۱:۴۴ ب.ظ

    سلام
    نه نیازی به اینکار نیست چون سایت شما قراره پلاس بخوره نه اکانت گوگل پلاستون

    پاسخ دادن
محسن
خرداد ۲۴, ۱۳۹۴ @ ۹:۲۹ ق.ظ

با سلام
روی لوکال تست که میکنم سر این تابع curl_init() رو پیدا نمیگنه و خطا میده

پاسخ دادن
    Saeed Moqadam
    خرداد ۲۷, ۱۳۹۴ @ ۷:۱۱ ب.ظ

    شما باید افزونه curl رو فعال کنید
    برای اینکار توی فایل php.ini دنبال curl بگردید و کاراکتر ; رو از اولش بردارید

    پاسخ دادن

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*