شاید با خودتان فکر کرده باشید که چگونه میشود آی پی (IP) کاربر را به دست آورد و از آن استفاده کرد و یا آن را در جایی از پروژه ی خودتان به عنوان اطلاعاتی از کاربران تان ذخیره کنید. ما در این مقاله، دو مورد از رایجترین روش ها برای بدست آوردن آی پی کاربر را به شما آموزش خواهیم داد، با ما همراه باشید.قبل از هرچیز اگر نیازمند اطلاعات بیشتر درباره زبان برنامه نویسی PHP دارید به مقاله " PHP چیست " مراجعه نمایید.
برای چه IP کاربر را داشته باشیم؟
آدرس آی پی، شماره شناسایی منحصر به فرد هر کامپیوتر متصل به شبکه اینترنت است، شما میتوانید با آی پی کاربر سایت خود، کارهای زیادی انجام دهید از جمله:
متوجه شوید که بازدیدکنندگان و کاربران وب سایت شما بیشتر از چه کشورهایی هستند.
در صورت لزوم، IP کاربران یا کشورهای خاصی را ببندید تا نتوانند به وب سایت شما وارد شوند.
آخرین باری که ادمین وارد سایت شده است، چه آی پی داشته است.
و بسیار کاربردهای دیگر ...
گاهی اوقات سوالاتی وجود دارد که گفته میشود بدست آوردن آی پی گوشی امکان پذیر است یا خیر؟ که باید گفت بله امکان پذیر است و با همین کدهای نوشته شده در ادامه ی مقاله میتوانید آی پی کاربر را به دست آورید.
به دست آورد آوردن آی پی با PHP
برای بدست آوردن آی پی سرور، کامپیوتر یا گوشی از طریق PHP میتوانید از تابع زیر استفاده کنید:
function GetIp()
{
$ip = $_SERVER['REMOTE_ADDR'];
return $ip;
}
echo(GetIp());
ولی ممکن است کاربر شما از پروکسی استفاده کند و IP خودش را تغییر بدهد. برای این که از این کار جلوگیری کنیم و آی پی واقعی کاربر را بدست بیاوریم، بهتر است از تابع زیر استفاده کنید:
function GetRealIp()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//check ip from share internet
$ip = $_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//to check ip is pass from proxy
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
else
$ip = $_SERVER['REMOTE_ADDR'];
return $ip;
}
echo(GetRealIp());
این تابعها در localhost یا بر روی سیستم شما به درستی کار نمیکنند. بنابراین بهتر است آن را برای تست در هاست خود آپلود کنید و از آنجا تست بگیرید.
برای بدست آوردن آی پی سایت میتوانید از تابع زیر استفاده کنید:
function GetIpHost($ip)
{
$ip = gethostbyname($ip);
return $ip;
}
echo(GetIpHost("www.7learn.com"));
اگر پارامتر ورودی تابع، سایتی باشد که وجود خارجی نداشته باشد، خروجی تابعها عبارت "سایت نامعتبر" میباشد.
به دست آوردن آدرسIP توسط پکیجهای موجود
یکی دیگر از روشهای به دست آوردن آی پی کاربر استفاده کردن از پکیجهای موجود میباشد که جز بهترین پیشنهادها است و شما میتوانید به راحتی از آن استفاده کنید.
شاید از خودتان بپرسید که چرا از همان اول به شما پکیجهای کاربردی را معرفی نکردیم؟ خیلی خوب است که شما درک مناسبی داشته باشید که این پکیجها چگونه کار میکنند تا بتوانید به راحتی از آنها استفاده کنید و سوالاتی که ممکن است در ذهن تان پیش بیاید را جواب داده باشید.
پکیچ user-ip
برای نصب این پکیج حتما باید composer را داشته باشید. برای نصب این پکیج از طریق composer دستور زیر را وارد کنید.
composer require yogeshkoli/user-ip
بعد از نصب شدن این پکیج با include کردن autoload کامپوزر (compsoer) به پکیج دسترسی خواهید داشت.
<?php
require __DIR__ . '/../vendor/autoload.php';
use YogeshKoli\UserIP\UserIP;
var_dump(UserIP::get());
با کد بالا شما میتوانید آی پی کاربر را دریافت کنید.
اگر میخواهید آی پی دریافتی را اعتبار سنجی کنید میتوانید از کد زیر استفاده کنید:
در این مقاله ابتدا خودمان کدهای دریافت آی پی کاربر را به صورت PHP Pure یا PHP خام نوشته ایم و بعد از آن که درک مناسبی از آن پیدا کردیم، به سراغ یک پکیج مناسب برای به دست آوردن IP کاربر رفتیم و آن را نصب و سپس در برنامه خود استفاده کردیم. سعی کنید زمانی که از یک پکیج استفاده میکنید، حتما از کدهای نوشته شده درون آن پکیج درک مناسبی داشته باشید تا صرفا یک مصرف کننده محض نباشید. خوشحال میشویم که نظرات، پیشنهادها و تجربههای خود را با ما در میان بگذارید.
اگر به یادگیری بیشتر در زمینه ی PHP علاقه داری، با شرکت در دوره ی آموزش PHP در کمتر از یک سال به یک متخصص PHP تبدیل میشوی که آماده ی استخدام، دریافت پروژه، کسب درآمد و یادگیری مباحثی مثل لاراول هستی.
سلام وقت بخیر
میخواستم بدونم در قسمت اعتبارسنجی ویپیان باید چی بنویسم؟
۲۱ تیر ۱۴۰۲، ۱۰:۳۲
سلام
یه سوال داشتم
ما IP رو با REMOTE_ADDR میگیریم
می تونم توی هدر این رو به صورت دستی بدیم و IP رو تغییر بدیم!؟
اسفندیار ارسباران۱۹ شهریور ۱۴۰۲، ۱۰:۰۲
درود
خیر شما نمیتونید IP یک دستگاه که بهتون متصل شده رو تغییر بدید.
۲۰ اسفند ۱۴۰۱، ۱۴:۲۲
سلام وقت بخیر ببخشید من یکسوال برام مطرح شد اونم اینکه میتونیم در php لوکیشن دقیق کاربر رو بگیریم و مثلا اگر ما یک رستوران داشته باشیم و یک محدودیتی پیک داشته باشه مه مثلا اگر کاربر از یک محدوده مکانی اونورتر بود پیک رایگان نباشه براش و پول پیک رو پرداخت کنه
سلام وقت بخیر:
من یک سایت وردپرسی دارم و سایت ادورز میکنم و متاسفانه چند وقت همین که سایت میارم بالا پشت سر هم کلیک فیک میخوره
قبلا طرف با 1 ای پی میامد 100 بار کلیک میکرد من ای پی بلاک میکردم الان هر کلیک با 1 ای پی مجزا و تکراری نیست توی هفته گذشته نزدیک 900 کلیک خورده هر کلیک با 1 ای پی .... فکر میکنم با نرم افزار خاصی اینکار میکنن ... با سیستم آمار گیر وردپرس ای پی هاشون میبینم ولی میدونم ای پی اصلی نیست میخوام بدونم راهی هست که من بفهمم این کسی که اینکار میکنه پیدا کرد یا ای پی اصلی طرف پیدا کرد ... ممنون میشم جواب بدین
۲۷ بهمن ۱۴۰۰، ۰۸:۱۲
سلام من میخوام یکاری انجام بدم که کاربر نتونه با فیلترشکن وارد سایتم بشه اگه فیلتر شکنش روشن بود خطا بده باید چیکار کنم
اسفندیار ارسباران۲۷ بهمن ۱۴۰۰، ۱۴:۱۹
سلام
از لحاظ کامپیوتری فردی که vpn آلمان میزنه با فردی که آلمان زندگی میکنه یکسانه، بنابراین شما نهایتا میتونید دسترسی رو برای یه کشور چک کنید.
برای این کار از <a href="https://www.codexworld.com/get-geolocation-country-latitude-longitude-from-ip-address-using-php/#:~:text=%5B'REMOTE_ADDR'%5D%3B-,Get%20Location%20from%20IP%20Address%20using%20PHP,IP%20data%20from%20API%20response." target="_blank" rel="noopener nofollow ugc">این آموزش</a> استفاده کنید.
بهرام عاشوری۰۶ اردیبهشت ۱۴۰۰، ۱۲:۰۱
سلام علیکم
چجوری میشه سیستمی طراحی کرد که مثلا وقتی کاربر یک بار وارد میشود لازم نباشد بعد از بستن سایت مجددا وارد شود ؟
(مثلا یک پیام رسان)
با این روش میشه ؟
اسفندیار ارسباران۰۶ اردیبهشت ۱۴۰۰، ۲۳:۱۴
سلام.
معمولا برای این کار شما باید یک توکن برای هر کاربر بسازید و در دیتابیس ذخیره کنید تا هردفعه نیاز نباشه لاگین کنه، برای همین با این روشها نمیشه.
پیشنهاد میکنم آموزشهای ساخت فرم لاگین رو از منوی جستجوی سایت ببینید و مطالعه کنید.
۲۴ آذر ۱۴۰۰، ۰۴:۵۵
با استفاده از سیشن میتونی کاری کنی که اطلاعات تا وقتی که مرورگر بسته نشده بموند که تو اینترنت پره اموزش
۲۸ دی ۱۴۰۰، ۰۸:۴۷
سلام دوست عزیز بحث سشنها هست و کوکیها که شما میتونی بگی وقتی کاربر لاگین کرد و این اطلاعات در دیتابیس وجود داشت بیا سشن رو ست کن. و بعد اعتبار سنجی کنی توی پنل و ... که سشن وجود داره یا نه. برای اینکه اگر سیستمش رو هم ریبوت کرد دوباره اومد توی سایت لاگین باشه با استفاده از کوکیها میشه
وشتا شجاعی۱۳ بهمن ۱۳۹۹، ۰۸:۰۸
میگ من میخوام ای پی کسانی که میان پی وی از اینستا واتساپ و... بدست بیارم تو تو متالقب نگفتی این کدا رو کجا باید بزاریم
۲۴ آذر ۱۴۰۰، ۰۵:۱۶
این کد برای php هست و ربطی به تلگرامو واتسپ نداره
۰۸ تیر ۱۴۰۱، ۰۴:۳۴
سلام داداش باید یک ربات طراحی کنی در تلگرام و بعد داخل کدهای کاربر همین کدهایی که در بالا آموزش داده شده بزنی بعد کاری کنی که ربات آیپیهای دریافتی رو برات ارسال کنه یا یک صفحه وب بزاری که آیپی هارو ذخیره کنی بعد براش بفرستی تا بزنه و آیپیشو دریافت کنی!.
میلاد گنجی۲۵ دی ۱۳۹۹، ۰۶:۵۱
سلام من از تابع شما استفاده کردم ولی با استفاده کردن از فیلتر شکن ip تغییر میکنه و نمیتونه ip واقعی رو نشون بده برای سیستم امتیاز دهی میخوام لطفا راهنمایی کنید
اسفندیار ارسباران۲۷ دی ۱۳۹۹، ۱۰:۳۶
درود. بله متاسفانه این روش برای فیلترشکن جواب نمیده.
مقاله ای برای حل این مشکل در تقویم کاری مون هست که به زودی منتشر میکنیم.
وشتا شجاعی۲۴ دی ۱۳۹۹، ۱۳:۲۴
سلام ببخشید بعزی از سایتها هستند که مثلا کاربرا باید روی یه لینک کلیک بکنند و هر کلیک آنها یه پولی برای صاحب سایت داشته باشد خب بعزیها تقلب میکنند و دو یا چند بار روی لینک میزنند آیا با استفاده از ثبت ip و تشخیص تکراری نبودن آنها میشه جلوی تقلب رو گرفت ؟؟یعنی برای تکراری نبودن ip روش خوبی است؟؟
آقای سهند تبریزی۲۷ دی ۱۳۹۹، ۱۲:۱۰
سلام
خیر، روش کاملی نیست چون اولا برای کاربران متعلق به یه شبکه، آدرسهای ip مشابه هست و ثانیا کاربر زمانی که از vpn استفاده کنه، آدرس ip تغییر میکنه.
دانش روزبه۱۴ دی ۱۳۹۹، ۰۹:۳۸
سلام
دستور REMOTE_ADDR آی پی کاربر در شبکه محلی رو میده و این ممکنه برای کاربران مختلف مشابه باشه
چطوری باید آی پی شبکه اینترنتی کاربر رو دریافت کنیم؟
اسفندیار ارسباران۱۶ دی ۱۳۹۹، ۰۷:۳۲
درود خداوند بر شما، سوال خوبی پرسیدید که نیاز داره یا مقاله آپدیت بشه یا در مقاله جدیدی پوشش بدیم.
در صورت انتشار لینکشو براتون در جواب همین کامنت قرار میدم.
هشام بزرگیان۲۹ شهریور ۱۳۹۹، ۲۰:۴۱
با سلام
خیلی ممنون از اینکه این زمینه را ایجاد میکنید که کاربران واقعا یک استفاده کننده محض نباشند
یک سوال
زمانی که در سرور $ip = $_SERVER['REMOTE_ADDR']; را اجرا میکنم آدرس خود سرور را میدهد و فکر کنم این به این معنی است که درخواست برای سایت من از روی خود سرور ارسال میشود
چطور این امر مممکن است؟
دلاور آهنگری۳۰ شهریور ۱۳۹۹، ۱۱:۵۹
سلام و احترام
خوشحالیم که برای شما مفید بوده.
این کد رو روی localhost اجرا میکنید؟؟
جهانسوز خرمآبادی۲۷ اردیبهشت ۱۳۹۴، ۱۱:۴۵
ممنون ميشم لينك دانلود كه پيشنمايششو گذاشتينو قرار بدين....ممكنه تو نوشتن كد اشتباه كنيم ....ممنون.......
کام میرزاده۲۷ اردیبهشت ۱۳۹۴، ۱۱:۲۵
دوست عزيز ممنون ميشم لينك دانلودشو بزارين چون ممكنه ما نتونيم درست كدو بنويسيم.....
همون پيش نمايشي كه گذاشتينو لينك دانلودشم بزارين عالي ميشه...ممنون ميشم.....
يكي هم چطور ميشه كسايي كه از پرو=سي يا ... استفاده ميكنند رو ورودشونو به سايت با كد محدود كنيم يا اگه كسي استفاده ميكنه به يه صفحه ديگه بره.....ممنون ميشم كمك كنيد....
ندا باطنی۱۹ اردیبهشت ۱۳۹۴، ۱۰:۲۴
من 2 تا سایت ورد پرس دارم که یکی رو فارسی و یکی رو انگلیسی پیاده سازی کردم .میخوام هر کاربری اولین بار وارد یکی از سایتها شد تشخیص دهد که اگر از ایران بود ، وارد سایت فارسی شود در غیر این صورت وارد انگلیسی شود.در ضمن دامین هر دو سایت با هم متفاوت است.
کسی میتونه کمک کنه؟
گلگون ترکان۳۱ فروردین ۱۳۹۴، ۱۹:۱۴
تابع realip درست کار نمیکنه ...تست کردم با ف* شکن و بدون اون... 2 تا نتیجه جداگانه داد.
شمسا هراتی۳۱ فروردین ۱۳۹۴، ۱۹:۵۶
خوب درسته دیگه .
با ف*شکن درخواست شما از سرور دیگه ای به سایت ارسال میشه که آیپی اونجا رو میده .
برخیا فرهنگ۲۵ دی ۱۳۹۳، ۰۷:۱۰
نمی شه شما در هیمن جا ،نمونه و مثال بیاورید
شمسا هراتی۲۵ دی ۱۳۹۳، ۰۸:۵۵
این کدها رو بزار تو یه فایل به نام myFuncs.php بعد با دستور زیر تو فایل دیگه اونو اینکلود کن :
[cc] include 'myFuncs.php';[/cc]
بعد اینطوری هم صداش بزن :
[cc] echo(GetIpHost("www.7learn.com"));[/cc]
طبیعتا برای کارای دیگه باید کمی با php آشنا باشید ...
دکتر ابریشم رهنما۲۲ دی ۱۳۹۳، ۰۵:۴۵
سلام. ببخشید یه سوال
وقتی از این تابع استفاده میکنم ، فقط قسمت اول ای پی رو ذخیره میکنه ؟ میدونید علتش چیه ؟
مثلا : 192.168.10.10 رو فقط این ذخیره میکنه : 192168
مهندس ارشام رهنما۰۴ تیر ۱۳۹۳، ۱۶:۴۱
با سلام این یک تابع است و باید در جای خودش قرار بدی. لطفا دقیق بگید که که کجا باید قرار بدیم.
اموزشی که میزارید باید شما مبتدیها رو در نظر بگیری.
لطفا از طریق میل منو از جوابتون باخبر کنید.
بدرود
رهام موسوی۰۴ تیر ۱۳۹۳، ۱۹:۲۹
میتونید توی یک فایل جدا این تابع رو قرار بدین، بعد فایل رو include کنید و تابع رو صدا بزنید.
برخیا فرهنگ۲۳ آذر ۱۳۹۳، ۲۰:۵۵
چطوری include کنیم و چطوری صدا بزنیم ،(با تلفن و یا موبایل)-صرف خنده
رهام موسوی۰۵ دی ۱۳۹۳، ۱۱:۵۲
خب پس بهتره که مقدمات php رو یه مروری بکنید :)
گلرو رفیعی۰۲ اردیبهشت ۱۳۹۳، ۱۸:۳۸
عالی بود خدا قوت
مهرا پویان۲۰ بهمن ۱۳۹۲، ۰۸:۰۱
سلام ممنون . منم میخواستم بدونم تابع رو باید کجا بذاریم . و برای دیدن ای پی کاربرها و یا سایتی چی کاری انجام بدیم
ماهان مستوفی۲۴ بهمن ۱۳۹۲، ۰۷:۱۴
هر جای قالب که تمایل دارید نشون داده بشه دیگه...
مرجان واعظی۱۹ دی ۱۳۹۲، ۱۲:۰۲
سلام،ممنون از مطالب خوبتون لطفا اگه میشه توضیح بدید که این کد رو تو کدوم قسمت قالب سایت قرار بدیم.تا ما تازه کارها هم کمی دستمون راه بیفته. :?:
فرهاد پایا۲۰ دی ۱۳۹۲، ۰۴:۳۹
گرفتن آی پی کاربر استفادههای مختلفی داره مثل آمار بازدید و یا عدم دسترسی افراد با آی پی خاص به قسمتی از سایت و یا مثلا توی سیستم لایک و .. بسته به نیازتون میتونید استفاده کنید.
بهرخ پورناظری۱۸ دی ۱۳۹۲، ۱۰:۳۱
سلام
تبریک میگم نویسندگیتون رو .
امیدوارم که موفق باشید .
پری فنیزاده۱۸ دی ۱۳۹۲، ۰۹:۱۴
سلام
ممنون بابت کد.من قبلا تو لوکال این تابع هارو امتحان کردم ولی کار نکردن،بعدش تازه فهمیدم که تو لوکال کار نمیکنه :lol:
ماه آفرد عنایت۱۸ دی ۱۳۹۲، ۱۰:۲۰
خواهش میشه بله نوشتم در لوکال تابعها به درستی کار نمیکنن :?:
شروع رایگان یادگیری برنامه نویسی
کلیک کنید 👇
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: