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

مارس 20, 2012 توسط : سعید

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

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

[php]

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;
}

[/php]

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

حمید
آوریل 12, 2012 @ 1:28 ب.ظ

سلام

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

پاسخ
    سعید
    می 6, 2012 @ 2:45 ب.ظ

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

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

    پاسخ
wandad
آوریل 23, 2012 @ 12:00 ق.ظ

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

پاسخ
    سعید
    آوریل 24, 2012 @ 2:01 ق.ظ

    سلام
    [code]$ip=$_SERVER[‘REMOTE_ADDR’];[/code]

    پاسخ
      wandad
      آوریل 24, 2012 @ 8:08 ب.ظ

      مرسی

      پاسخ
alireza
نوامبر 15, 2012 @ 4:20 ب.ظ

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

پاسخ
    سعید
    نوامبر 17, 2012 @ 1:43 ب.ظ

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

    پاسخ
    سعید
    نوامبر 17, 2012 @ 1:44 ب.ظ

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

    پاسخ
محسن
ژوئن 14, 2015 @ 9:29 ق.ظ

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

پاسخ
    Saeed Moqadam
    ژوئن 17, 2015 @ 7:11 ب.ظ

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

    پاسخ

دیدگاهتان را بنویسید

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


*