تسجيل الدخول

مشاهدة النسخة كاملة : طريقة تحديد (( IP )) للمستخدم..][ مهم جدا][..


VIP
30-06-2005, 05:55 AM
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

الشرح هذا نقلاً عن حبيبنا الأخ الوافي

الله يحفظه ويطول بعمره::

عند تركيبك لمنتديات vbulletin واستخدامها ستجد ان الأيبي الذي يظهر في المشاركات لبعض الأعضاء غير صحيح والسبب هو أن تحديد منتديات الـ vbulletin يعتمد في الأساس على أيبي الجهه وليس الأيبي الحقيقي للعضو .

مثال على ذلك الأعضاء الموجودين بالسعوديه إذا قام بالدخول على منتدى معين سيجد المشرف بأن الأيبي للعضو الأتي من السعوديه هو أيبي بروكسي مدينة الملك عبدالعزيز وليس الأيبي الصحيح للعضو !! وعلى ذلك سيجد المشرف بأن أعضاء كثر من السعوديه دخلوا لمنتداه بنفس الأيبي وهو بروكسي مدينة الملك عبدالعزيز لأن عنوان البروكسي مشترك بين المتصفحين القادمين من السعوديه .

إذن هذه مشكله موجوده في منتديات الـ vbulletin لذلك قمت بالبحث في النسخه ووجدت طريقة تحديد الأيبي موجوده في ملف init.php وقمت بإعادة طريقة البرمجه بحيث يصبح تحديد الأيبي معتمداً على الأيبي الحقيقي وليس أيبي البروكسي .

1- إفتح ملف init.php
2- قم بالبحث عن الأسطر التاليه :
// ################################################## ###########################
// establish client IP address
define('IPADDRESS', $_SERVER['REMOTE_ADDR']);

// check several settings for the ip; good for not grabbing proxy IPs, but can still be problematic
if ($_SERVER['HTTP_CLIENT_IP'])
{
define('ALT_IP', $_SERVER['HTTP_CLIENT_IP']);
}
else if ($_SERVER['HTTP_X_FORWARDED_FOR'] AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3 }#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches))
{
// make sure we dont pick up an internal IP defined by RFC1918
foreach ($matches[0] AS $ip)
{
if (!preg_match("#^(10|172\.16|192\.168)\.#", $ip))
{
define('ALT_IP', $ip);
break;
}
}
}
else if ($_SERVER['HTTP_FROM'])
{
define('ALT_IP', $_SERVER['HTTP_FROM']);
}
else
{
define('ALT_IP', $_SERVER['REMOTE_ADDR']);
}
3- قم باستبدالها بالأسطر التاليه :
// ################################################## ###########################
// establish client IP address
// check several settings for the ip; good for not grabbing proxy IPs, but can still be problematic
if ($_SERVER['HTTP_X_FORWARDED_FOR'] AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3 }#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches))
{
// make sure we dont pick up an internal IP defined by RFC1918
foreach ($matches[0] AS $ip)
{
if (!preg_match("#^(127|10|172\.16|192\.168)\.#", $ip))
{
define('IPADDRESS', $ip);
define('ALT_IP', $_SERVER['HTTP_CLIENT_IP']);
define('ALT_IP2', $_SERVER['REMOTE_ADDR']);
break;
}
}
}
else if ($_SERVER['HTTP_CLIENT_IP'])
{
define('IPADDRESS', $_SERVER['HTTP_CLIENT_IP']);
define('ALT_IP', $_SERVER['REMOTE_ADDR']);
define('ALT_IP2', 'N/A');

}
else if($_SERVER['REMOTE_ADDR'])
{
define('IPADDRESS', $_SERVER['REMOTE_ADDR']);
define('ALT_IP', 'N/A');
define('ALT_IP2', 'N/A');
}
else if($_SERVER['HTTP_FROM'])
{
define('ALT_IP', $_SERVER['REMOTE_ADDR']);
define('ALT_IP2', 'N/A');
define('IPADDRESS', $_SERVER['HTTP_FROM']);
}else{
define('IPADDRESS', 'Anonymous');
define('ALT_IP2', 'Anonymous');
define('ALT_IP', 'Anonymous');
}

if(!defined('IPADDRESS') || !defined('ALT_IP')){
define('IPADDRESS', 'Anonymous');
define('ALT_IP', 'Anonymous');
define('ALT_IP2', 'Anonymous');
}


4- قم بالبحث عن الأسطر التاليه
define('SESSION_IDHASH', md5($_SERVER['HTTP_USER_AGENT'] . ALT_IP )); // this should *never* change during a session
define('SESSION_HOST', substr(IPADDRESS, 0, 15));
define('USER_AGENT', $_SERVER['HTTP_USER_AGENT']);
define('REFERRER', $_SERVER['HTTP_REFERER']);


5- استبدلها بالأسطر التاليه :
define('SESSION_IDHASH', md5($_SERVER['HTTP_USER_AGENT'] . substr(IPADDRESS, 0, 15) )); // this should *never* change during a session
define('SESSION_HOST', substr(IPADDRESS, 0, 15));
define('USER_AGENT', $_SERVER['HTTP_USER_AGENT']);
define('REFERRER', $_SERVER['HTTP_REFERER']);


6- إحفظ الملف وقم برفعه .

الان قم بالدخول على المتواجدون الان لو كنت مشرفاً عاماً على منتداك وراقب الأيبي الخاصه بالأعضاء وبالزوار كذلك وستجد أن الأيبي الحقيقي أصبح يظهر بدلاً من أيبي البروكسي .

~*~عاطفية~*~
04-07-2005, 01:38 PM
الله يعطيك الف عافيه على الشرح