همانطور که قبلا نیز گفته شده، در زبان PHP توابع بسیاری وجود دارد که می توانیم از آنها برای گسترش و توسعه سایت هایمان از آنها استفاده کنیم. یکی دیگر از توابعی که ممکن است اکثر سایت ها به آن نیاز پیدا کنند، کدهای شناسایی و ثبت IP - آی پی کاربران سایت است. درحال حاضر کتابخانه PHP این اجازه را به ما می دهند که هم آی پی فعلی کاربر را دریافت کنیم و هم آی پی واقعی کاربر را! یعنی شاید اکثر کاربران بر این عقیده باشند که استفاده از وی پی ان ها و پروکسی ها باعث ایمن شدن اتصال آنها به سایت ها می شود یا آی پی آنها قابل شناسایی نیست، اما متاسفانه باید بگوییم که کتابخانه های PHP در حدی پیشرفته هستند که می توانند آی پی واقعی شما را خارج از بحث پروکسی ها پیدا و ثبت کنند. اگر به این تابع علاقه دارید با بی تاک همراه باشید.

دریافت آی پی فعلی کاربر
منظور از آی پی فعلی کاربر یا Current Client’s IP همان آی پی نهایی است که کاربر بر روی آن درحال گشت و گذار در اینترنت است. ممکن است کاربر از پروکسی استفاده کرده باشد که تفاوتی ندارد از چه ابزاری استفاده کند، مهم همان آی پی است که درحال حاضر کاربر با آن به اینترنت دسترسی دارد. برای دریافت آی پی فعلی کاربر از این کد می توان استفاده کرد:
function getRemoteIPAddress() {
$ip = $_SERVER['REMOTE_ADDR'];
return $ip;
}
تکه کد $_SERVER['REMOTE_ADDR'];
به راحتی می تواند آی پی فعلی کاربر را با احتمال خطای کمتر از یک درصد شناسایی و ثبت کند.
اکثر سایت ها از این کد برای شناسایی آی پی کاربران در فرم های عضویت و ورود و ارسال نظر استفاده می کنند چون احتمال خطای کمتری دارد.
دریافت آی پی واقعی کاربر
گاهی اوقات که کاربر از پروکسی استفاده کند، اگر سیستم رمزگذاری آی پی توسط سرور پروکسی بسیار قدرتمند باشد، امکان شناسایی آی پی واقعی خیلی کم است اما اکثر پروکسی ها این ضعف را دارد و توابع PHP به راحتی می توانند رمزگذاری پروکسی را دور بزنند و آی پی واقعی کاربر را پیدا کنند! کد زیر یک نمونه تابع کاربردی برای شناسایی آی پی واقعی کاربر استفاده می شود:
function getRealIPAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) // شناسایی آی پی واقعی کاربر
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) // اگر آی پی اصلی در دسترس نبود، این تابع آی پی که پروکسی از آن عبور کرده را شناسایی می کند
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR']; // اگر دو آی پی قبلی شناسایی نشدند آی پی فعلی کاربر نمایش داده می شود
}
return $ip;
}
در کد بالا سه دستور شرطی وجود دارد، تکه کد $_SERVER['HTTP_CLIENT_IP']
آی پی اصلی و اولیه کاربر را شناسایی می کند. اگر سیستم رمزگذاری پروکسی ضعیف باشد این کد می تواند آی پی اولیه و اصلی کاربر را پیدا کند.
در دستور شرط بعدی آی پی که روی آن پروکسی اعمال شده شناسایی می شود. $_SERVER['HTTP_X_FORWARDED_FOR']
می تواند آخرین آی پی کاربر قبل از عبور از پروکسی را شناسایی کند. اگر کاربر دارای چند آی پی باشد، آخرین آی پی را می توان با این کد شناسایی کرد و در دستور شرطی آخر تعریف شده که اگر هیچکدام از آی پی های واقعی کاربر در دسترس نبودند، آی پی فعلی کاربر دریافت شود.