تذكرني !
تابعنا على
Bleach منتديات العاشق
قسم الأرشيف والمواضيع المحذوفة قسم خاص بجميع المواضيع المحذوفة و المُكررة والتي لاتنطبق على الشروط والقوانين والتي لا شأن لها في أي قسم من أقسام المُنتدى

  #1  
قديم 12-10-2008, 07:31 PM
الصورة الرمزية العاشق 2005  
رقـم العضويــة: 365
تاريخ التسجيل: Sep 2008
المشـــاركـات: 94,808
نقـــاط الخبـرة: 85
افتراضي [Product] : تحديد الآيبي الحقيقي فعلاً - طريقة خاصة بي ومضمونة بإذن الله

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

الكلام أدناه فقط للمطورين : ) وللمبتدئين عليكم بآخر الموضوع

جميعنا يعلم في نسخة 3.7 ولا أعلم عن 3.6 .. أن طريقة تحديد الآيبي تعتمد على تعريف IPADDRESS عن طريق ملف class_core.php

لو نبحث جيداً داخل هذا الملف وبحثنا عن:
رمز PHP:
function fetch_ip()
{
return
$_SERVER['REMOTE_ADDR'];
}


لوجدنا أنه يعيد قيمة بروتوكول الإنترنت البعيد REMOTE_ADDR فقط

أما لو بحثنا في نفس الملف عن:
رمز PHP:
function fetch_alt_ip()
{
$alt_ip = $_SERVER['REMOTE_ADDR'];

if (isset(
$_SERVER['HTTP_CLIENT_IP']))
{
$alt_ip = $_SERVER['HTTP_CLIENT_IP'];
}
else if (isset(
$_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))
{
$alt_ip = $ip;
break;
}
}
}
else if (isset(
$_SERVER['HTTP_FROM']))
{
$alt_ip = $_SERVER['HTTP_FROM'];
}

return
$alt_ip;
}


لوجدنا أنه يعطي قيمة بروتوكول الإنترنت البعيد REMOTE_ADDR في البداية ثم بعدها يتحقق من متغيرات لإيجاد الآيبي الحقيقي الخاص بالزائر .. فإن كانت لها قيمة فسوف تسند إلى متغير $alt_ip
وهو أدق من fetch_ip وحدها

أي أنه بكل الأحوال .. لو لم يكن هناك قيم للـ:
رمز PHP:
$_SERVER['HTTP_CLIENT_IP']
$_SERVER['HTTP_X_FORWARDED_FOR']
$_SERVER['HTTP_FROM']


لأعاد قيمة REMOTE_ADDR .. أي أنه أصبح نفس عمل fetch_ip السابق
ولو أن هناك قيم أخرى المذكورة أعلاه لأصبح الآيبي الحقيقي غير عن REMOTE_ADDR فيسند قيمة الآيبي الحقيقي إلى $alt_ip

دعونا نعود للبحث عما بداخل الملف مرة أخرى عن:
رمز PHP:
// fetch client IP address
$registry->ipaddress = $this->fetch_ip();
define('IPADDRESS', $registry->ipaddress);

// attempt to fetch IP address from behind proxies - useful, but don't rely on it...
$registry->alt_ip = $this->fetch_alt_ip();
define('ALT_IP', $registry->alt_ip);


إذاً ALT_IP هو من يحمل قيمة الآيبي الحقيقي
لكن مشكلة أن أغلب ملفات vbulletin تستخدم IPADDRESS وليس ALT_IP

الحل الوحيد لهذا المشكلة بدل التعديل على الملفات واستبدال IPADDRESS إلى ALT_IP
هو إسناد قيمة IPADDRESS إلى ALT_IP

ويكمن ذلك في الـ plug-in الخاص بـ init_startup حيث نقوم بإنشاءه مرتين وتحديد قيمة 1 عند خانة ترتيب التنفيذ Execution Order في أول إنشاء وقيمة 999 في ثاني إنشاء ومن ثم وضع الكود التالي في كلا الإنشائين:
رمز PHP:
define('IPADDRESS', ALT_IP);


والسر في وضع رقم 1 ورقم 999 مع أن كلاهما يحمل نفس الكود
هو للإحتياط فقط

حيث ربما يوجد منتجات products تستخدم plugin init_startup يحوي على الـ IPADDRESS الغير الحقيقي في وسطها .. لهذا وضعت رقم 1
أما رقم 999 فهو للحماية من التعديل على قيمة IPADDRESS من قبل أية منتج آخر لا أكثر ولا أقل

قد يسأل سائل،
لماذا لم تقم شركة vBulletin بالقيام بهذا الطريقة ونرتاح ؟
الجواب لأن قيمة REMOTE_ADDR يحتوي على الآيبي الحقيقي لديهم وفي الدول الغربية كذلك لذا هم ليسوا بحاجة إلى تعيين بدائل Alternative للـ REMOTE_ADDR


لمن لديه إعتراض على طريقتي أعلاه في تحديد الآيبي الحقيقي فليتفضل مشكوراً

---------------------------------------

زبدة الهرج هذا كله
ارفع الملف التالي الموجود بالمرفق على هذا الرابط:
www.yourwebsite.com/vb/admincp/plugin.php?do=files

وقم باستعراضه بعد فك الضغط عنه وتمتع بالآيبيات الحقيقية :icon30:

وشكراً لكم

الملفات المرفقة product-realip.zip (524 بايت)
 


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه للموضوع [Product] : تحديد الآيبي الحقيقي فعلاً - طريقة خاصة بي ومضمونة بإذن الله:
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
إجعل غذاءك دواءك ... بإذن الله Hitman قسم الأرشيف والمواضيع المحذوفة 2 01-18-2010 05:18 PM
الله أكبر ..لن تفوتك صلاة بإذن الله..برنامج إلا صلاتي في أبهى الحلل.. رابط مباشر العاشق 2005 أرشيف قسم البرامج 0 08-28-2009 02:10 AM
الله أكبر ..لن تفوتك صلاة بإذن الله..برنامج إلا صلاتي في أبهى الحلل.. رابط مباشر العاشق 2005 أرشيف قسم البرامج 0 07-19-2009 01:10 PM
[Product] : تحديد الآيبي الحقيقي فعلاً - طريقة خاصة بي ومضمونة بإذن الله -مدمن نت العاشق 2005 قسم الأرشيف والمواضيع المحذوفة 0 12-17-2008 03:30 PM
أخيراً : كل مشاكل الكمبيوتر لها حل هنا بإذن الله العاشق 2005 أرشيف قسم البرامج 0 10-08-2008 06:50 PM

الساعة الآن 01:46 PM.


Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.

كُل ما يُكتب أو يُنشر في منتديات العاشق يُمثل وجهة نظر الكاتب والناشر فحسب، ولا يمثل وجهه نظر الإدارة

rel="nofollow" maxseven simplicity and clarity